插入数据
语法 : insert into (字段1,字段2…)values(值1,值2…);
单行数据 + 全列插入
如:创建一张学生表,然后进行插入数据 :
– 创建一张学生表 drop table if exists student ; create table student ( id int, sn int comment ‘学号’, name varchar(20) comment ‘姓名’, qq_mail varchar(20) comment ‘qq邮箱’ );
插入两条数据 :
多行数据 + 指定列插入
查询数据
语法: SELECT [DISTINCT] {* | {column [, column] …} [FROM table_name] [WHERE …] [ORDER BY column [ASC | DESC], …] LIMIT … 注: [] :表示可选项,可以写也可以不写; 大写表示关键词 ; SELECT :查询关键词; DISTINCT :去重关键词; FROM table_name :从那张表查询; WHERE :条件过滤; ORDER BY :根据指定的字段(可以有多个)来排序,ASC表示升序,DESC表示降序,默认为升序; LIMIT :分页;
举例:
1.创建一张考试成绩表 ;2.插入数据 ;3.进行查询操作 ;
操作时出现如下这样的错误提示,不要慌,(原因 :创建数据库时,没有指定字符编码集utf8mb4 ; 解决办法:删除数据库,重新以utf8mb4 的方式创建;
错误信息:
解决办法: 创建成功后:
全列查询
语法:select * from 表名;
注意:一般不建议使用*进行全列查询,查询列越多,传输的数据量就越大 ;
全列查询结果如下:
指定列查询
语法:select id, name, English from 表名;
指定列查询结果如下:
查询字段为表达式
- 表达式不包含字段:
select id, name, 10 from 表名;
结果如下:
- 表达式包含一个字段:
select id,name,English+10 from 表名;
结果如下:
- 表达式包含多个字段:
select id,name,English+math+Chinese from 表名;
结果如下:
别名
别名 :就是为查询结果中的列指定一个名称,表示返回的结果集中,以该别名作为该列的名称;
语法:select 字段 as 别名 from 表名;
结果如下:
去重:DISTINCT
使用DISTINCT关键字对某列数据进行去重 ;
结果如下:
(1)上面列没有重复的数据,先插入一条数据,可以看到数学列就出现重复数字98了; (2)使用 distinct 进行去重处理;
结果如下:
排序:ORDER BY
语法如下 :
select... from 表名[where ...]
order by column [asc|desc], [...];
asc :默认为升序; desc :降序排列
结果如下:
- 如果字段值为空,根据该字段排序时,升序在最前,降序在最后;
- 可以使用表达式或别名进行排序;
条件过滤查询:WHERE
运算符 | 说明 |
---|
> >= < <= | 大于,大于等于,小于,小于等于 | == | 等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL | <=> | 等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1) | !=,<> | 不等于 | between A and B | 范围匹配 [A,B],满足条件返回 TRUE(1) | in(option) | 如果是 option 中的任意一个,返回 TRUE(1) | is null | 是空 | is not null | 不是空 | like | 模糊匹配,% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符 |
运算符 | 说明 |
---|
and | 多个条件必须都为 TRUE(1),结果才是 TRUE(1) | or | 任意一个条件为 TRUE(1), 结果为 TRUE(1) | not | 条件为 TRUE(1),结果为 FALSE(0) |
注:
(1)WHERE 条件可以使用表达式,但不能使用别名。 (2)AND 的优先级高于OR ,在同时使用时,需要使用小括号()包裹优先执行的部分
如下图所示:
(1)查询英语成绩小于60分; (2)查询语文成绩大于80分且英语成绩大于80分的同学; (3)查询语文成绩大于80 或英语成绩大于80 (3)or 和 and 的优先级测试; (4)范围查询(between and): 查询语文成绩在[80-90]的同学;
(5)in(option)查询(任意一个满足,都会返回)
(6)模糊查询:like
-
匹配任意多个字符(包括0个); -
匹配严格的一个任意字符;
分页查询:LIMIT
语法: limit n; 从0(索引)开始,取n条数据 limit s,n; 从s(索引)开始,取n条数据
场景:取英语第二名的同学 取第二名和第三名的同学:
修改数据(Update)
语法 :
UPDATE 表名 SET column = expr [, column = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...]
将id=1003的同学,数学、英语成绩改为70; 结果如下: 注意:
(1)修改和删除操作一定要谨慎,可以先转换为查询语句,看是否是想要的解果,然后在操作 !!! (2)如果没有跟where条件过滤,update操作就是修改全数据!
删除数据(Delete)
语法:DELETE FROM 表名 [WHERE ...] [ORDER BY ...] [LIMIT ...]
例如:删除孙悟空同学的考试成绩;
注意:
- 和修改操作一样,可以先转换为查询语句,再做删除操作;
- 没有加
where 条件过滤,删除全表数据;
内容总结
单行插入 : insert into 表(字段1,字段2…字段n) values (值1,值2…值n) 多行插入 : insert into 表(字段1, …, 字段N) values (值1, …), (值2, …), (值 n);
--全列查询 select * from 表; --指定列查询 select 字段1,字段2… from 表; --表达式字段查询 select 字段1+100,字段2+字段3 from 表; --别名查询 select 字段1 别名1, 字段2 别名2 from 表; --去重distinct select distinct 字段 from 表; -- 排序order by select * from 表 order by 排序字段; -- 条件查询where select * from 表 where 条件;
update 表 set 字段1=value1, 字段2=value2… where 条件;
delete from 表 where 条件;
|