1、比较运算符
2、逻辑运算符
注意:1. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分
2. WHERE条件可以使用表达式,但不能使用别名。
如图示例:
sql语句的执行顺序:
第一步:取出一条记录(遍历表)
第二步:把记录带入条件带入条件,判断是否满足
第三步:如果条件满足,再把select指定的列取出来,并进行一些表达式运算
所以条件查询的where后面不能用别名
3、基本查询:
查询英语成绩大于70分的同学:
代码如下:
select name, english from exam_result where english > 70;
结果如下:
查询英语成绩大于语文成绩的同学:
代码如下:
select name, english, chinese from exam_result where english > chinese;
结果如下:
查询总成绩小于200的同学:
代码如下:
select name, chinese + math + english from exam_result where (chinese + math + english) < 200;
结果如下:
4、AND和OR:
查询语文成绩大于80分,且英语成绩大于80分的同学
代码如下:
select name, chinese, english from exam_result where (chinese > 80) and (english > 80);
结果如下:
查询语文成绩大于80分,或英语成绩大于80分的同学
代码如下:
select name, chinese, english from exam_result where (chinese > 80) or (english > 80);
结果如下:
注意:and优先级高于or,在使用的时候,有需要可以用括号括起来
5、范围查询
(1) BETWEEN ... AND
代码展示:
select * from exam_result where chinese between 80 and 90;
结果展示:
这里用and也可以实现
代码:
select * from exam_result where chinese >= 80 and chinese <= 90;
(2)IN
代码如下:
select name, math from exam_result where math in(58, 59, 98, 99);
结果展示:
这里也可以用or
代码:
select name, math from exam_result where math = 58 or math = 59 or math = 98 or math = 99;
6、模糊查询:LIKE
% 匹配任意多个(包括 0 个)字符
_ 匹配严格的一个任意字符
代码展示:
select name from exam_result where name like '孙%';
结果如下:
代码展示:
select name from exam_result where name like '孙_';
结果如下:
注意:%也可以这样使用:%孙,就是以“孙”结尾的字段;%孙%,只要包含“孙”的字段
_也可以这样使用:_孙,就是前面只有一个字符,结尾带“孙”的字段,下划线_也可以使用多个。
7、NULL的查询:IS [NOT] NULL
判断表里面某个列是否为NULL,或者不是NULL
代码如下:
select name from exam_result where name is not null;
结果如下:
代码如下:
select name from exam_result where name is NULL;
结果如下:
8、分页查询:LIMIT
语法:
-- 起始下标为 0
-- 从 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;
-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
从 0 开始,筛选 3 条结果
代码展示:
select * from exam_result limit 3;
结果如下:
从0开始,筛选3条记录,按 id 进行分页,顺序
代码展示:
select * from exam_result limit 3;
结果如下:
从3开始,筛选3条记录,按id进行分页,顺序
代码展示:
select * from exam_result order by id limit 3 offset 3;
结果如下:
四、修改(Update)
语法:
UPDATE table_name SET column = expr [, column = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...]
案例:
-- 将孙悟空同学的数学成绩变更为 80 分
语法:
update 表名 set 要修改的列名 = 要修改的值 where 列名 = 要指定修改的列里的值
代码如下:
mysql> update exam_result set math = 80 where name = '孙悟空';
结果如下:
-- 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分
代码如下:
update exam_result set math = 60, chinese = 70 where name = '曹孟德';
结果如下:
-- 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
代码如下:
结果如下:
-- 将所有同学的语文成绩更新为原来的 2 倍
代码如下:
update exam_result set chinese = chinese * 2;
结果如下:
五、删除(Delete)
语法:
DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]
案例:
-- 删除孙悟空同学的考试成绩
代码如下:
delete from exam_result where name = '孙悟空';
结果如下:
-- 删除整张表数据
准备一张表,如下:
代码如下:
delete from for_delete;
结果如下:
六、内容重点总结
新增
查询