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 最后排序(排序总是在最后)