where 过滤查询
数值型
SELECT
*
FROM
emp
WHERE
DEPTNO = 30
字符型
SELECT
*
FROM
emp
WHERE
JOB = 'SALESMAN'
日期类型
SELECT
*
FROM
emp
WHERE
HIREDATE > '1981-03-03'
特殊比较运算符
between and
SELECT * FROM emp WHERE sal BETWEEN 1000 and 2000
in (集合)
SELECT * FROM emp WHERE JOB in ('SALESMAN', 'CLERK')
SELECT * FROM emp WHERE MGR in (7902, 7698)
like
模糊查询
查询以J开头的员工姓名
SELECT * FROM emp
WHERE ENAME LIKE 'J%'
查询员工姓名的第三个字母是A的所有信息
SELECT * FROM emp
WHERE ENAME LIKE '__A%'
员工姓名中含字母A的所有
SELECT * FROM emp
WHERE ENAME LIKE '%A%'
禁止转义
SELECT * FROM emp
WHERE ENAME LIKE 'KIN/_%' escape '/'
上面代表 / 后面的 _ 不再作为通配符使用 而就是下划线
SELECT * FROM emp
WHERE ENAME LIKE '%R@%' escape '@'
上面代表 @ 后面的 通配符 % 失效,变回原来的意思
isnull 运算符
SELECT * FROM emp where MGR is NULL
逻辑运算符
and
or
not
同时满足时and
SELECT * FROM emp WHERE sal > 1100 and job = 'CLERK'
一个符合是or
SELECT * FROM emp WHERE sal > 1100 or job = 'CLERK'
not是取反
SELECT * FROM emp WHERE JOB not in ('SALESMAN', 'MANAGER')
SELECT * FROM emp WHERE mgr is NOT NULL
运算优先级
排序
根据入职日期降序排序
SELECT * FROM emp ORDER BY hiredate DESC
根据入职日期升序排序 asc 可以省略
SELECT * FROM emp ORDER BY hiredate asc
数字升序排列小值在前,大值在后。即按照数字大小顺序由小到大排列。
日期升序排列相对较早的日期在前,较晚的日期在后。
字符升序排列按照字母由小到大的顺序排列。即由A-Z排列;中文升序按照字典顺序排列。
空值在升序排列中排在最前面,在降序排列中排在最后。
多列参与排序
多列参与排序时优先排序ORDER BY最近的那个
SELECT * FROM emp ORDER BY DEPTNO DESC , SAL DESC
限制记录行数
常用于分页查询
mysql 的方言, 只有mysql支持 oracle 数据库不支持
LIMIT 后第一个参数是开始的行数, 第二个是返回几条数据
下面含义是从第6行开始, 返回7条数据
SELECT * FROM emp LIMIT 5, 7