select列
全列查询
select * from exam_result;
指定列查询
select id,name from exam_result;
查询字段为表达式
select id,yingyu+yuwen from exam_result;
为查询结果指定别名
SELECT column [AS] alias_name [...] FROM table_name;
结果去重
select distinct shuxue from exam_result;
where条件
运算符
说明
>, >=, <, <= 大于,大于等于,小于,小于等于
大于,大于等于,小于,小于等于
=
等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>
等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=, <>
不等于
BETWEEN a0 AND a1
范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
IN (option, ...)
如果是 option 中的任意一个,返回 TRUE(1)
IS NULL
是 NULL
IS NOT NULL
IS NOT NULL 不是 NULL
LIKE
模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符
逻辑运算符:
说明
AND
多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR
任意一个条件为 TRUE(1), 结果为 TRUE(1)
NOT
条件为 TRUE(1),结果为 FALSE(0)
例如:
查询英语不及格的同学及英语成绩
select name,yingyu from exam_result where yingyu<60;
查询语文成绩在[80,90]之间的成绩
select name,yuwen from exam_result where yuwen between 80 and 90;
select name,yuwen from exam_result where yuwen>=80 and yuwen<=90;
查询数学成绩是58或者59或者98或者99的同学及数学成绩
select name,shuxue from exam_result where shuxue = 58 or shuxue = 59 or shuxue = 98 or shuxue = 99;
select name,shuxue from exam_result where shuxue in (58,59,98,99);
结果排序
ASC为升序
DESC为降序
默认为ASC
筛选分页结果
-- 起始下标为 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 n;
数据更新
将孙悟空的数学成绩改为80
UPDATE exam_result SET shuxue = 80 WHERE name = '孙悟空';
将总成绩倒数前三的三位同学的数学成绩加上30分
UPDATE exam_result SET shuxue = shuxue + 30 ORDER BY yuwen + shuxue + yingyu LIMIT 3;
删除数据
DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]
截断表
TRUNCATE [TABLE] table_name
1. 只能对整表操作,不能像 DELETE 一样针对部分数据操作;
2. 实际上 MySQL 不对数据操作,所以比 DELETE 更快
3. 会重置 AUTO_INCREMENT 项
聚合函数
函数 说明 count 返回查询到的数据的 数量 sum 返回查询到的数据的 总和,不是数字没有意义 avg 返回查询到的数据的 平均值,不是数字没有意义 max 返回查询到的数据的 最大值,不是数字没有意义 min 返回查询到的数据的 最小值,不是数字没有意义
group by子句的使用
select column1, column2, .. from table group by column;
SQL查询中各个关键字的执行先后顺序 from > on> join > where > group by > with > having > select > distinct > order by > limit