今日学习笔记
模糊查询
sql中用于模糊查询的关键字有:
LIKE 模糊匹配 %任意0个或多个字符; _任意1个字符;无法匹配null
BETWEEN a AND b 匹配a-b范围内的内容 包括a和b临界
IN(list) 匹配list中的内容
IS NULL / IS NOT NULL 判断是否为null 建议使用这个而非<=>
#查询last_name第二个字符是a的员工
SELECT FROM employees WHERE last_name LIKE ‘_a%’;
#查询工资在10000到20000的员工信息,包括10000和20000
SELECT FROM employees WHERE salary BETWEEN 10000 AND 20000;
#查询职位为D_VP和FI_MGR的员工信息
SELECT FROM employees WHERE job_id IN (‘D_VP’,’FI_MGR’);
#查询没有奖金的员工信息
SELECT FROM employees WHERE commission_pct IS NULL;
分组查询(GROUP BY)
SELECT 查询内容 FROM 表名 [WHERE 条件] GROUP BY 分组列表 [HAVING 条件]
查询内容中的字段,必须要出现在分组列表中
WHERE是在分组前对原始表筛选,HAVING是在分组后对结果表筛选
分组查询中,若用分组函数做筛选的条件,一定是在HAVING子句中
按单字段分组
#查询每个部门的员工数量
SELECT department_id,COUNT(1)
FROM employees
GROUP BY department_id ;
按多字段分组
#查询每个部门,每个职务的平均工资
SELECT AVG(salary),department_id,job_id
FROM employees
GROUP BY department_id,job_id;
按函数分组
#按名字长度分组,并筛选出数量大于5的名字长度
SELECT COUNT(1) c,LENGTH(last_name) len_name
FROM employees
GROUP BY len_name
HAVING c>5;