本文所用示例:https://download.csdn.net/download/weixin_43956958/19037585
文章目录
一、数据库操作语言:普通查询
记录查询:
SELECT * FROM t_emp;
SELECT empno,ename,sal FROM t_emp;
SELECT语句屏蔽了物理层的操作,用户不用关心数据的真实存储,交由数据库查询的查找数据。
使用列别名
SELECT子句中使用了表达式,那么这列的名字就默认为表达式,因此需要一种对列名重命名的机制。
SELECT
empno,
sal*12 AS "income"
FROM t_emp;
查询语句的子句执行顺序
1.词法分析与优化,读取SQL语句
2.FROM 选择数据来源
3.SELECT 选择输出内容
二、数据库操作语言:数据分页
使用LIMIT关键字限定结果集数量。
SELECT ......FROM ...... LIMIT 起始位置,偏移量;
eg:SELECT empno,ename FROM t_emp LIMIT 0,20;
简写用法:SELECT empno,ename FROM t_emp LIMIT 10;
起始值默认为0.
执行顺序:FROM —> SELECT —> LIMIT
三、数据库操作语言:结果集排序
结果集按照某种顺序排列,使用ORDER BY子句。
SELECT ......FROM ...... ORDER BY 列名 [ASC|DESC];
eg:SELECT ename,sal FROM t_emp ORDER BY sal DESC;
DESC为降序排列,ASC为升序排列
若ORDER BY后不加关键字,则默认为升序排列。
排序字段内容相同的情况
默认以主键大小排列。
多个排序字段
SELECT empno,ename,sal,hiredate
FROM t_emp
ORDER BY sal DESC,hiredate ASC;
执行顺序:
FROM —> SELECT —>ORDER BY —>LIMIT
四、数据库操作语言:结果集去除重复记录
使用DISTINCT关键字
SELECT DISTINCT 字段 FROM ......;
eg:SELECT DISTINCT job FROM t_emp;
注意事项:
- 使用DISTINCT的SELECT子句只能查询一列数据,如果查询多列,去除重复记录就会失效。
- DISTINCT关键字只能在SELECT子句中使用一次
四、数据库操作语言:条件查询
使用WHERE子句。
SELECT ...... FROM ...... WHERE 条件 [AND|OR] 条件 ......;
eg:SELECT empno,ename,sal FROM t_emp WHERE deptno=10 AND sal>=2000;
WHERE语句中的条件运算会用到四种运算符:
算数运算符
计算工资:
SELECT empno,ename,sal,hiredate
FROM t_emp
WHERE deptno=10 AND (sal+IFNULL(comm,0))*12>=15000
AND DATEDIFF(NOW(),hiredate)/365>=20;
比较运算符
逻辑运算符
二进制按位运算
二进制位运算的实质是将参与运算的两个操作数,按对应的二进制数逐位进行逻辑运算。
按位运算符
WHERE子句的注意事项
- WHERE子句中,条件执行的顺序是从左到右。应该把索引条件,或者筛掉记录最多的条件写在最左侧。
执行顺序:
FROM —> WHERE —>SELECT —> ORDER BY —> LIMIT