MySQL的多表查询(3):SQL92下的多表查询


SQL主要有两个标准: SQL92SQL99
一般来说,SQL92的形式更简单,但SQL语句的可读性较差;SQL99相比于SQL92,语法更加复杂,但可读性更强。

SQL92下的内连接

查询所有员工的id及其所在部门名称

SELECT last_name,department_name
FROM employees,departments
WHERE employees.department_id = departments.department_id; -- 返回106条数据,但employees中共有107条记录。

以上使用内连接的方式查询出106行记录,但employees里实际有107行记录,即总共有107位员工,其中有1名员工的department_id为null,因此没有被查询出来。

# 有一名员工的department_id为null
SELECT employee_id,department_id
FROM employees
WHERE department_id IS NULL;
/*
employee_id  department_id
178	         (Null)
*/

也就是说,使用内连接查询到的结果丢了一条数据。

SQL92下的外连接

查询所有员工的id及其所在部门名称

SELECT employee_id,department_name
FROM employees,departments
WHERE employees.department_id = departments.department_id(+);
-- 报错:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 3

SQL92下的外连接,使用+。遗憾的是,MySQL不支持SQL92外连接的这种语法,Oracle支持这种写法。

猜你喜欢

转载自blog.csdn.net/qzw752890913/article/details/126284113
今日推荐