SELECT
last_name
FROM
employees
WHERE
salary > ( SELECT salary FROM employees WHERE last_name = 'Abel' );
复制代码
返回job_id和141号员工相同,salary比143号员工多的员工姓名、job_id和工资。
SELECT
last_name,
job_id,
salary
FROM
employees
WHERE
job_id = ( SELECT job_id FROM employees WHERE employee_id = 141 )
AND salary > ( SELECT salary FROM employees WHERE employee_id = 143 );
复制代码
返回公司工资最少的员工的last_name、job_id和salary。
SELECT
last_name,
job_id,
salary
FROM
employees
WHERE
salary = ( SELECTmin( salary ) FROM employees );
复制代码
查询最低工资大于50号部门最低工资的部门id和其最低工资。
SELECT
department_id,
MIN( salary )
FROM
employees
GROUPBY
department_id
HAVINGmin( salary ) > ( SELECTmin( salary ) FROM employees WHERE department_id = 50 );
复制代码
列子查询:
返回location_id是1400或1700的部门中的全部员工姓名。
SELECT
last_name
FROM
employees
WHERE
department_id IN ( SELECTDISTINCT department_id FROM departments WHERE location_id IN ( 1400, 1700 ) );
复制代码
SELECT
employee_id,
last_name,
job_id,
salary
FROM
employees
WHERE
salary < ANY ( SELECT DISTINCT salary FROM employees WHERE job_id = 'IT_PROG' ) and job_id != 'IT_PROG';
复制代码
SELECT
employee_id,
last_name,
job_id,
salary
FROM
employees
WHERE
salary < ALL ( SELECTDISTINCT salary FROM employees WHERE job_id = 'IT_PROG' ) and job_id != 'IT_PROG';
复制代码
行子查询(用的较少):
查询员工编号最小而且工资最高的员工信息。
SELECT * FROM employees
WHERE ( salary, employee_id ) = (( SELECTmax( salary ) FROM employees ),( SELECTmin( employee_id ) FROM employees )
);
复制代码
select后面:
查询每一个部门的员工个数。
SELECT d.*,( SELECTcount(*) FROM employees e WHERE e.department_id = d.department_id ) as'员工个数'FROM
departments d;
复制代码
from后面:
查询每一个部门的平均工资的工资等级。
SELECT
temp.department_id,
jg.grade_level
FROM
( SELECT department_id AS department_id, avg( salary ) AS`avg`FROM employees GROUPBY department_id ) temp
INNERJOIN ( SELECT grade_level, highest_sal, lowest_sal FROM job_grades ) jg ON temp.avg BETWEEN jg.lowest_sal
AND jg.highest_sal;
复制代码
exists后面:
语法:
exists(完成的查询语句)
结果:0或1
复制代码
查询有员工的部门名。
SELECT
department_name
FROM
departments d
WHEREEXISTS ( SELECT * FROM employees e WHERE d.department_id = e.department_id );
复制代码
分页查询
语法:
SELECT 查询列表
FROM 表 [jointype] JOIN 表2ON 链接条件
WHERE 筛选条件
GROUPBY 分组字段
HAVING 分组筛选条件
ORDERBY 排序字段
LIMIT 起始索引(从0开始),每页显示条数。
复制代码
示例:查询前5条员工信息。
SELECT
*
FROM
employees
LIMIT0,5;
复制代码
union联合查询
概念:
将多条查询语句的结果合并成一个结果。
语法:
查询语句1
UNION
查询语句2
……;
复制代码
应用示例:
查询部门编号>90或邮箱包含a的员工信息。
SELECT * FROM employees WHERE last_name LIKE'%a%'UNIONSELECT * FROM employees WHERE department_id > 90 ;
复制代码