最基本的查询语句是由SELECT和FROM关键字组成的
SELECT * FROM t_emp;
SELECT empno,ename FROM t_emp;
SELECT语句屏蔽了物理层的操作,用户不必关心数据的真实存储,交由数据库高效的查找数据
若SELECT子句中使用了表达式,那么这列的名字就默认为表达式,因此需要一种对列名重命名的机制
SELECT
empno,
sal*12 AS “income”
FROM t_emp;
数据分页
如果结果集的记录很多,则可以使用LIMIT关键字限定结果集数量。
SELECT... FROM... LIMIT 起始位置,偏移量;
数据分页的简写用法
如果LIMIT子句只有一个参数,它表示的是偏移量,起始值默认为0
SELECT empno,ename FROM t_emp LIMIT 10;等价于
SELECT empno,ename FROM t_emp LIMIT 0,10;
子句执行顺序:FROM SELECT LIMIT
结果集排序
如果没有设置,查询语句不会对结果集进行排序,如果想让结果集按照某种顺序排列,就必须使用ORDER BY子句。
SELECT ... FROM ... ORDER BY 列名 [ASC|DESC]; 升序/降序,默认升序
如果排序列是数字类型,数据库就按照数字大小排序,如果是日期类型就按照日期大小排序,
如果是字符串就按照字符集序号排序。
如果两条数据排序字段内容相同,排序最后可以参照主键大小,还可以规定首要和次要排序条件
ORDER BY子句书写的时候放在LIMIT子句的前面
子句执行顺序:FROM SELECT ORDER BY LIMIT
去除重复记录
SELECT DISTINCT 字段 FROM ......;
使用DISTINCT的SELECT子句中只能查询一列数据,如果查询多列,去除重复记录就会失效
DISTINCT关键字只能在SELECT子句中使用一次,且必须出现在第一个字段之前
条件查询
SELECT ... FROM ... WHERE 条件 [AND|OR] 条件 ....;
WHERE语句中的条件运算会用到数学运算符、比较运算符、逻辑运算符和按位运算符
任何数字与NULL运算,值都为NULL
函数IFNULL(字段名或NULL,想要返回的数字)
第一个日期减去第二个日期 相差天数 DATEDIFF(expr1,expr2)
获取当前的日期 SELECT NOW();
比较运算符 IN 包含 deptno IN(10,30,40)
IS NULL 为空 comm IS NULL 千万不能用= NULL
IS NOT NULL 不为空 comm IS NOT NULL
BETWEEN AND 范围 sal BETWEEN 2000 AND 3000
LIKE 模糊查询 ename LIKE “A%” %代表零到多个字符,可加前后任意位置,还可加_,代表单个字符
REGEXP 正则表达式 ename REGEXP ”[a-zA-Z]{4}“四个英文字符的名字
"^[\\u4e00-\\u9fa5]{2,4}$"2到4个汉字的名字
逻辑运算符
AND 与
OR 或
NOT 非 NOT deptno=20
XOR 异或
二进制位运算的实质是将参与运算的两个操作数,按对应的二进制数逐位进行逻辑运算
& 位与
| 位或
~ 位取反
^ 位异或
<< 左移
>> 右移
WHERE子句中,条件执行的顺序是从左到右的,应把索引条件,或者筛选掉记录最多的条件写在最左侧
子句执行顺序:FROM WHERE SELECT ORDER BY LIMIT