DQL 简单查询
查询一个字段
SELECT 字段名 FROM 表名;
select 和 from 都是关键字,字段名和表名是标识符
查询两个或多个字段
使用逗号 "," 隔开
SELECT deptno,dname FROM dept;
查询所有字段
- 写上所有字段,用逗号隔开
- 写上 * ,表示全部
SELECT * FROM dept;
- 效率低、可读性差,在实际开发中不推荐使用
给查询的列起别名
SELECT deptno, dname AS depname FROM dept;
SELECT deptno, dname depname FROM dept; //AS 可省略
SELECT deptno, dname 'dep name' FROM dept; //别名有空格,需要用单引号或双引号括起来
- 只是将显示的查询结果的列显示为depname,原表不改变 -- SELECT语句不进行修改操作
查询结果使用数学表达式 然后再起别名
SELECT ename,sal*12 AS salary FROM emp;
DQL 条件查询
- 查询符合条件的记录
SELECT 字段1,字段2 FROM 表面 WHERE 条件;
- 条件类型
- = < > != <= >=
- between ... and ... 左小右大两值之间,等同于 >=... and <= ...
- is null / is not null 判断是否为空 在数据库当中null不能用 = 衡量,不是一个值
- and or not 与或非 优先级 and>or,优先级加小括号即可
- in / not in + 具体的值 ,返回数据中字段的值与 in 给的值匹配的数据
- like + % + _ 模糊查询
- % 表示任意多个字符
- _ 每个下划线表示一个字符
查询名字中有 o 的记录:SELECT ename FROM emp WHERE ename like '%o%';
查询名字以 t 结尾的记录:SELECT ename FROM emp WHERE ename like '%t';
查询名字中第三个字母是 r 的记录:SELECT ename FROM emp WHERE ename like '__r%';
查询名字中有 _ 的记录:SELECT ename FROM emp WHERE ename like '%\_%'; // '\'表示转义
- 排序
- 根据字段x的值进行排序,默认为升序
SELECT
字段1,字段2
FROM
表名
ORDER BY
字段x;
- 指定**降序 **: descending => DESC 指定升序:ascending => ASC
SELECT
字段1,字段2
FROM
表名
ORDER BY
字段x DESC;
- 按两个字段或多个字段排序:查询员工名字和薪资,按薪资升序排,薪资相同时按名字升序排
SELECT
ename,sal
FROM
emp
ORDER BY
sal ASC, ename ASC;
- 根据字段的位置排序:按第 x 列排序,不推荐使用,因为不健壮,列的顺序会发生改变时失效
SELECT
ename,sal
FROM
emp
ORDER BY
2;
- 综合案例
- 要求查询工资在1250到3000之间的员工信息,按薪资降序排序,薪资相同的按名字升序排
SELECT
ename,sal
FROM
emp
WHERE
sal BETWEEN 1250 AND 3000
ORDER BY
sal DESC, ename;
- 关键字顺序不能改变:SELECT -> FROM -> WHERE -> ORDER BY
- 执行顺序:FROM 确定表 -> WHRER 确定约束 -> SELECT 选出记录 -> ORDER BY 最后排序(排序总是在最后)