查: select, 检索
语法:
select 字段列表
from 表名
where 条件1
and/or 条件2
...
order by 排序字段名 asc/desc
limit 从第几条开始取结果, 取多少条
-- 1. *选择器
# 注1: 使用*检索数据时, 会多执行一次查询
# 注2: 先表结构中查询*所代表的字段列表, 然后在执行select语句
示例:
SELECT `empno`,`ename`,`sal`,`comm`, `deptno`
FROM emp;
SELECT * FROM emp; #查询emp表中的所有字段内容
-- 2. 设置别名
SELECT `ename` 姓名, `job` AS 职务,
`sal` AS 底薪, `comm` 奖金, `deptno` 部门ID
FROM emp e;
-- 3. 使用关系运算符作为条件, 使用and/or连接条件
# 注1: 有多个条件时, 每多1个条件多查询1次
# 注2: and连接条件, 会在上一次查询的结果集中查询
# 注3: or连接的条件, 会在所有数据中查询
# 注4: 使用and连接时, 尽量将筛选效果好的条放在前面
-- 查询20号部门的员工
SELECT * FROM emp
WHERE `deptno` = 20;
-- 查询底薪>=1000的员工
SELECT * FROM emp
WHERE `sal` >= 1000;
-- 查询20号部门底薪>=1000的员工
SELECT * FROM emp
WHERE `deptno` = 20
AND `sal` >= 1000;
-- 4. between语句
/*查询底薪在1000-1500之间的员工*/
-- 方法一:
SELECT * FROM emp
WHERE `sal` >= 1000
AND `sal` <= 1500;
-- 方法二:
SELECT * FROM emp
WHERE `sal` BETWEEN 1000 AND 1500;
-- 5. in语句
-- 查询在10或20号部门的员工
SELECT * FROM emp
WHERE `deptno` = 10
OR `deptno` = 20;
-- 查询10和20号部门的员工
SELECT * FROM emp
WHERE `deptno` IN (10, 20);
-- 查询10和20号部门以外其它部门的员工
SELECT * FROM emp
WHERE `deptno` NOT IN (10, 20);
-- 6. 空值条件
-- 查询没有奖金的员工
SELECT * FROM emp
WHERE `comm` IS NULL;
-- 查询有奖金的员工
SELECT * FROM emp
WHERE `comm` IS NOT NULL;
-- 7. like条件, 模糊查询
# 通配符: 2种
# 1. %: 匹配任意个数的任意字符
# 2. _: 匹配1个任意字符
-- 查询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%';
-- 查询第二个字母为A的姓名
SELECT * FROM emp
WHERE `ename` LIKE '_A%';
-- 查询第三个字母为A的姓名
SELECT * FROM emp
WHERE `ename` LIKE '__A%';
-- 8. 排序. order by
-- 8. 排序. order by
SELECT * FROM emp
ORDER BY sal; #默认为升序
SELECT * FROM emp
ORDER BY sal ASC; #升序
SELECT * FROM emp
ORDER BY sal DESC; #降序
SELECT * FROM emp
ORDER BY deptno, sal;
SELECT * FROM emp
ORDER BY deptno DESC, sal;
SELECT * FROM emp
ORDER BY deptno DESC, sal DESC;
SELECT * FROM emp
ORDER BY `hiredate`;
-- 9. 分页查询: limit
-- 取第1到第5条
SELECT * FROM emp
LIMIT 0, 5;
-- 取第6到第10条
SELECT * FROM emp
LIMIT 5, 5;
-- 例: 工资前5名
SELECT * FROM emp
ORDER BY sal DESC
LIMIT 0, 5;