DQL语句 DQL数据查询语言:主要包含数据库中表数据的查询。(重头戏!);
普通条件查询 =, >, <, !=, <>, >=, <=
-- 查询编号为7844的员工
SELECT * FROM emp WHERE empno = 7844;
-- 查询工资大于1000元的员工
SELECT * FROM emp WHERE sal > 1000;
-- 查询工资小于1000元的员工
SELECT * FROM emp WHERE sal < 1000;
-- 查询工资等于1000元的员工
SELECT * FROM emp WHERE sal = 1000;
-- 查询职位为SALESMAN(销售人员)的员工
SELECT * FROM emp WHERE job = 'SALESMAN';
-- 查询职位不是销售人员(SALESMAN)的员工
SELECT * FROM emp WHERE job != 'SALESMAN';
SELECT * FROM emp WHERE job <> 'SALESMAN';
-- 查询薪资大于等于3000的员工
SELECT * FROM emp WHERE sal >= 3000;
in 在某个范围内查找
-- 查询员工编号为 7369 7788 7881 的员工信息
SELECT * FROM emp WHERE empno IN(7369,7788,7881);
-- 查询员工编号除了 7369 7788 7881 之外的所有员工信息
SELECT * FROM emp WHERE empno NOT IN(7369,7788,7881);
-- 查询除了10,20部门之外的所有员工
SELECT * FROM emp WHERE deptno NOT IN (10, 20);
null值查询
-- 查询不发放津贴的员工信息
SELECT * FROM emp WHERE comm IS NULL;
-- 查询发放津贴的员工信息
SELECT * FROM emp WHERE comm IS NOT NULL;
范围比较
-- 查询薪资在1600到3000之间的员工
SELECT * FROM emp WHERE sal BETWEEN 1600 AND 3000;
模糊查询 "%", "_"
"%": 代表任意字符的任意次数
"_": 代表任意字符的一次
-- 查询名字中有S的员工
SELECT * FROM emp WHERE ename LIKE '%S%';
-- 查询名字最后一个字符是S的员工
SELECT * FROM emp WHERE ename LIKE '%S';
-- 查询名字打一个字符是S的员工
SELECT * FROM emp WHERE ename LIKE 'S%';
-- 查询名字第二字是A的员工
SELECT * FROM emp WHERE ename LIKE '_A%';
-- 查询名字中有%的员工
SELECT * FROM emp WHERE ename LIKE '%\%%';
多条件联合查询 and or
and 必须前后同时满足条件才能返回结果
or 前后有一个满足条件就能返回结果
-- 查询在20部门并且薪资大于2000的员工
SELECT * FROM emp WHERE deptno = 20 AND sal > 2000;
-- 查询在20部门或者薪资大于2000的员工
SELECT * FROM emp WHERE deptno = 20 OR sal > 2000;
-- 查询不在20部门并且薪资小于2000的员工
SELECT * FROM emp WHERE deptno != 20 AND sal < 2000;
select 结果排序 order by
使用asc是升序排列(默认的),使用desc可以降序排列
-- 单列
-- 按照薪资进行排序(默认排序)
SELECT * FROM emp ORDER BY sal;
-- 按照薪资进行排序(降序)
SELECT * FROM emp ORDER BY sal DESC;
-- 按照薪资进行排序(升序)
SELECT * FROM emp ORDER BY sal ASC;
-- 按照津贴进行排序(null排在最前面)
SELECT * FROM emp ORDER BY comm;
-- 多列
-- 多个排序的列
SELECT * FROM emp ORDER BY deptno , sal;
-- 多个排序的列(部门升序,薪资降序)
SELECT * FROM emp ORDER BY deptno , sal DESC;
-- 多个排序的列(工作,薪资)
SELECT * FROM emp ORDER BY job,sal;
limit 分页
-- 每次查询前N行
SELECT * FROM emp LIMIT 4;
-- 查询地N页,每页显示M个
-- select * from emp limit (n-1)*M,M 当前页码减1乘以显示条数,条数
SELECT * FROM emp LIMIT 0,3; -- 第1页 当前页数=(1-1) * 3
SELECT * FROM emp LIMIT 3,3; -- 第2页 当前页数=(2-1) * 3
SELECT * FROM emp LIMIT 6,3; -- 第3页 当前页数=(3-1) * 3
-- 查询薪资大于1000的降序排列,显示前5条记录
SELECT * FROM emp WHERE sal > 1000 ORDER BY sal DESC LIMIT 0 , 5 ;