数据库的基本查询
普通查询
记录查询
SELECT * FROM t_emp;
SELECT empno,ename,sal FROM t_emp;
使用列别名
SELECT
ename,
sal * 12 as "annual_salary"
FROM
t_emp;
查询语句的执行顺序
数据分页
#如果结果集的记录很多,则可以使用LIMIT关键字限定结果集数量。
#SELECT ......FROM....... LIMIT 起始位置,偏移量;
SELECT empno,ename FROM t_emp LIMIT 0,20;
#数据分页的简写用法
#如果LIMIT子句只有一个参数,它表示的是偏移量,起始值默认为0
SELECT empno , ename FROM t_emp LIMIT 10;
SELECT empno , ename FROM t_emp LIMIT 0,10;
#语句执行顺序 FROM ->SELECT ->LIMIT
结果集排序
#如果排序字段内容相同,MySQL会按照主键大小来排序两条数据
SELECT ename,sal FROM t_emp ORDER BY sal;#ASC升序,不写默认是升序
SELECT ename,sal,hiredate FROM t_emp ORDER BY hiredate DESC;#DESC降序
#多个排序字段 我们可以使用ORDER BY规定首要排序条件和次要排序条件。
#数据库会先按照首要排序条件排序,如果遇到首要排序内容相同的记录,那么就会启用次要排序条件接着排序
#排序+分页
SELECT empno , ename , sal , hiredate
FROM t_emp
ORDER BY sal DESC, hiredate ASC LIMIT 5;
去除重复记录
#例如查询员工表有多少种职业
SELECT job FROM t_emp; #没有用DISTINCT关键字会出现多个重复记录
SELECT DISTINCT job FROM t_emp;#用DISTINCT关键字去除重复记录
#注意:
#使用DISTINCT的SELECT子句中只能查询一列数据,如果查询多列,SELECT DISTINCT job , ename FROM t_emp;去除重复记录就会失效。
#DISTINCT关键字只能在SELECT子句中使用一次 例如SELECT DISTINCT job, DISTINCT ename FROM t_emp;SELECT ename , DISTINCT job FROM t_emp;都会语法错误
条件查询
## 条件查询
SELECT empno,ename,sal FROM t_emp WHERE deptno=10 AND sal>=2000;
#查询10部门里面年收入超过15000美金而且工龄超过20年的员工信息
SELECT empno, ename, sal, hiredate
FROM t_emp
WHERE deptno=10 AND (sal+IFNULL(comm,0))*12>=15000
AND DATEDIFF(NOW(),hiredate)/365>=20;
#查询10,20,30部门里面在1985年以前入职的员工而且不能是salesman职位的员工的信息;
SELECT empno,ename, sal,deptno,hiredate
FROM t_emp
WHERE deptno IN(10,20,30) AND job !="SALESMAN" AND hiredate<"1985-01-01";
#其他的例子
SELECT ename,comm,sal
FROM t_emp
WHERE comm IS NULL AND sal BETWEEN 2000 AND 3000 AND ename LIKE "%A%";
SELECT ename,comm,sal
FROM t_emp
WHERE comm IS NULL AND sal BETWEEN 2000 AND 3000 AND ename LIKE "_LAKE";
SELECT ename,comm,sal
FROM t_emp
WHERE comm IS NOT NULL AND sal BETWEEN 1000 AND 3000
AND ename REGEXP "^[\\u4e00-\\u9fa5]{2,4}$";#正则表达式匹配出中文
SELECT ename,deptno
FROM t_emp
WHERE NOT deptno IN(10,20) XOR sal>=2000;
#WHERE子句的注意事项
#WHERE子句中,条件执行的顺序是从左到右的。所以我们应该把索引条件,或者筛选掉记录最多的条件写在最左侧
#各种子句的执行顺序 FROM -> WHERE ->SELECT ->ORDER BY ->LIMIT