目录
新增数据(Create)
单行数据 + 全列插入
多行数据 + 指定列插入
查询数据(Retrieve)
全列查询
指定列查询
查询字段为表达式
别名
去重 distinct
排序 order by
条件查询 where
运算符
基本查询
AND与OR
范围查询
分页查询 LIMIT
修改(Update)
删除 Delete
内容总结
首先建立一个学生表,包含:学号、姓名、性别、出生日期、成绩
-- 建立学生表
create table student(
id int,
sname varchar(10),
sex varchar(1),
birthday datetime,
grade int comment '成绩'
);
注意:全列插入时 数量必须和定义表的列的数量及顺序一致
例如:
-- 单行数据 + 全列插入
insert into student values('20201', '张三', '男', '2002-11-17', 95);
insert into student values('20202', '李四', '女', '2002-11-05', 92);
通过下述命令窗口可以看出已成功插入,后面利用select语句可以对其进行查询
--多行数据 + 指定列插入
insert into student(id, sname, grade) values
('20203', '王五', 92),
('20204', '孟六', 85);
成功插入数据
为了使查询更加可观,再对数据表中以全列插入 + 多行数据的方式再增加一部分数据
--多行数据 + 全列插入
insert into student values
('20205', '赵七', '男', '2022-10-15', 91),
('20206', '孟八', '男', '2022-10-16', 84),
('20205', '李七', '女', '2022-10-15', 93),
('20206', '李八', '女', '2022-10-15', 89);
-- 全列查询
select * from student;
指定列的顺序查询,不需要按照定义表的顺序来,可以自定义查询的顺序
-- 指定列的顺序查询,不需要按照定义表的顺序来
select sname, id, grade from student;
①表达式不包含字段
-- 表达式不包含字段
select id,sname,10 from student;
②表达式包含一个字段
-- 表达式包含一个字段
select id, sname, grade+10 from student;
为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称.
别名的作用:更简洁、更规则、涉及多表查询时,更加清晰
-- 别名
select id, sname, grade+10 总分 from student;
使用distinct可以对指定列进行去重查询,也可以对多列进行去重查询
-- 去重
select distinct id from student;
关键字:ORDER BY
· ASC为升序(从小到大)
` DESC为降序(从大到小)
` 默认为ASC
· null数据排序,视为比所有数据都小,升序出现在最上面,降序出现在最下面.
-- 按照成绩排序查询
select id, sname, sex, grade from student order by grade;
比较运算符
>,>=,<,<=:大于,大于等于,小于,小于等于;
=:等于,NULL不安全,例如NULL = NULL的结果是NULL;
<=>:等于,NULL安全,例如
!=, <>:不等于;
BETWEEN a0 AND a1:范围匹配,[a0,a1],如果a0 <= value <= a1,返回TRUE(1);
IN(option,.....):如果是option中的一个,返回TRUE(1);
IS NULL:是NULL;
IS NOT NULL:不是NULL;
LIKE:模糊匹配.%表示任意多个(包括0个)任意字符;_表示任意一个字符;
逻辑运算符
AND:多个条件必须都为TRUE(1),结果才为TRUE(1);
OR:任意一个条件为TRUE(1),结果就为TRUE(1);
NOT:条件为TRUE(1),结果为FALSE(0).
注意:
1、where条件可以使用表达式,但不能使用别名;
2、and的优先级高于or,在同时使用时,需要使用()包裹优先执行的部分.
查询成绩大于90分的同学
-- 查询成绩大于90分的同学
select sname, grade from student where grade > 90;
查询学号大于20202且成绩大于90分的同学
-- 查询学号大于20202且成绩大于90分的同学
select id, sname, grade from student where id > '20202' and grade > 90;
查询学号大于20202或成绩大于90分的同学
-- 查询学号大于20202或成绩大于90分的同学
select id, sname, grade from student where id > '20202' or grade > 90;
1、BETWEEN ... AND ...
查询成绩在89 —— 100之间的同学及成绩
-- 查询成绩在89 —— 100之间的同学及成绩
select sname, grade from student where grade between 89 and 100;
2、IN
查询成绩是89 或92 或91 或95的学生及成绩
-- 查询成绩是89 或92 或91 或95的学生及成绩
select sname, grade from student where grade in (89, 91, 92, 95);
3、模糊查询(LIKE)
匹配任意多个字符 '%'
-- 匹配任意多个字符
select id, sname from student where id like '2%';
匹配严格的任意一个字符 '_'
-- 匹配严格的任意一个字符
select sname from student where sname like '李_';
从0开始,筛选3条记录,按照学生成绩升序排序
-- 分页查询
select id, sname, sex, grade from student order by grade limit 3 offset 0;
-- 分页查询
select id, sname, sex, grade from student order by grade limit 3 offset 3;
· 将张三的成绩变为100分
-- 将张三的成绩变为100分
update student set grade = 100 where sname = '张三';
· 将成绩为倒数三名的学生的成绩加上十分
-- 将成绩为倒数三名的学生的成绩加上十分
update student set grade = grade + 10 order by grade limit 3;
-- 将所有同学的成绩更新为原来的二倍
update student set grade = grade * 2 ;
· 删除张三的数据
-- 删除张三的数据
delete from student where sname = '张三';
· 删除整张表的数据
-- 删除整张表的数据
delete from student;
· 新增
-- 单行插入
insert into 表(字段1, ..., 字段N) values (value1, ..., valueN);
-- 多行插入
insert into 表(字段1, ..., 字段N) values
(value1, ...),
(value2, ...),
(value3, ...);
· 查询
-- 全列查询
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
-- (1)比较运算符 (2)BETWEEN ... AND ... (3)IN (4)IS NULL
-- (5)LIKE (6)AND (7)OR (8)NOT
select * from 表 where 条件;
· 修改
-- 修改
update 表 set 字段1 = value1, 字段2 = value2... where 条件;
· 删除
-- 删除
delete from 表 where 条件;
本篇博客所有代码均已上传至gitee中,点击链接获取:增删查改代码