基本查询
- [一、SELECT 查询语句](#一、SELECT 查询语句)
一、SELECT 查询语句
- 查询所有列 ^1^
sql
SELECT *FORM emp;
- 查询指定字段
sql
SELECT empno,ename,job FROM emp;
- 给字段取别名
sql
SELECT empno 员工编号 FROM emp;
SELECT empno 员工编号,ename 姓名,job 岗位 FROM emp;
SELECT empno AS 员工编号,ename AS 姓名,job AS 岗位 FROM emp;
SELECT empno AS "员工编号",ename AS "姓名",job AS "岗位" FROM emp;
SELECT empno AS '员工编号',ename AS '姓名',job AS '岗位' FROM emp;
#当别名中有空格的时候,必须使用单引号或者双引号包裹
SELECT empno AS "员工 编号",ename AS 姓名,job AS 岗位 FROM emp;
- DISTINCT 去重
sql
SELECT DISTINCT job FROM emp;
SELECT DISTINCT job,deptno FROM emp;
- 空值参与运算
sql
SELECT sal,comm FROM emp; #员工月薪
SELECT sal,comm,(sal+comm)*12 年薪 FROM emp; #这样计算出的年薪只要奖金里是null的结果也是null
sql
-- NULL就是NULL,它不等于0,甚至不等于NULL
SELECT NULL =NULL; #结果是NULL
SELECT NULL != NULL; #结果也是NULL
SELECT NULL is NULL; #结果为1
SELECT 1 is NULL; #结果为0而不是NUll
以上结果说明NULL是一个特殊的值,没有办法和其他值比较
- 条件查询
sql
SELECT *FROM emp
WHERE ename = "Smith";#不区分大小写
SELECT *FROM emp
WHERE job='clerk' && deptno=30;
- 算术运算符
sql
SELECT 1+1,1+'1',1+"1",1+'a';
SELECT 2.5*2,2*5,5/2,5 DIV 2,5%2,MOD(5,2),5/0;
sql
--给所有员工加薪500元
SELECT empno,ename,job,mgr,hiredate,sal+500,comm,deptno FROM emp;
- 关系运算符
sql
SELECT 1>2 FROM DUAL;
-- DUAL不是一个存在的表,是一个虚表
SELECT NULL = NULL;#结果是null
SELECT null <=> NULL;#结果是1
-- 查询 奖金为null的所有员工
SELECT *FROM emp WHERE comm IS NULL;
SELECT *FROM emp WHERE comm <=> NULL;
-- 查询工作为clerk部门为20的员工
SELECT * FROM emp
WHERE job = "clerk" AND deptno =20;
- 模糊查询LIKE
sql
-- %匹配0个或多个任意字符
SELECT * FROM emp
WHERE ename LIKE "%a%";
-- 查询名字中包含i e的员工
SELECT * FROM emp
#WHERE ename LIKE '%i%' AND ename LIKE '%e%';
WHERE ename LIKE '%i%e%';
- LEAST 求序列中最小值
sql
SELECT LEAST(1,2,3,4); 结果1
- 正则
sql
SELECT *FROM emp
WHERE ename REGEXP 'a';
SELECT *FROM emp
WHERE ename REGEXP '^a'; #以a开头的
SELECT *FROM emp
WHERE ename REGEXP 't$'; #以t结尾的
SELECT *FROM emp
WHERE ename REGEXP '^.{4}$';#查询4个字符的
- 排序查询
sql
SELECT * FROM emp ORDER BY sal;#默认升序
SELECT * FROM emp ORDER BY sal DESC;#降序
SELECT * FROM emp
WHERE sal BETWEEN 1200 AND 3000
ORDER BY sal;
- 分页查询
sql
-- 进行分页查询,每页显示5条数据
SELECT * FROM emp
LIMIT 5; # 查询前5条
-- 每5条数据为1页,查看第二页的数据
SELECT * FROM emp
LIMIT 5,5;# LIMIT 偏移量,页大小
-- 偏移量写后面的方法
SELECT * FROM emp
LIMIT 10 OFFSET 0;
- 在开发环境中,最好不要用*,查询所有字段会消耗时间 ↩︎