前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【mysql】SQL99语法实现多表查询

【mysql】SQL99语法实现多表查询

原创
作者头像
兮动人
发布2022-03-05 15:15:46
5820
发布2022-03-05 15:15:46
举报
文章被收录于专栏:兮动人的博客兮动人的博客

1. SQL92:使用(+)创建连接

  • 在 SQL92 中采用(+)代表从表所在的位置。即左或右外连接中,(+) 表示哪个是从表。
  • Oracle 对 SQL92 支持较好,而 MySQL 则不支持 SQL92 的外连接。
  • Oracle实现
代码语言:javascript
复制
#左外连接
SELECT last_name,department_name
FROM employees,departments
WHERE employees.department_id = departments.department_id(+);

#右外连接
SELECT last_name,department_name
FROM employees ,departments
WHERE employees.department_id(+) = departments.department_id;
  • SQL92语法实现内连接:如下 练习:查询所有的员工的last_name,department_name信息
代码语言:sql
复制
SELECT employee_id,department_name
FROM employees e,departments d
WHERE e.`department_id` = d.department_id;   
  • 而且在 SQL92 中,只有左外连接和右外连接,没有满(或全)外连接。

2. SQL99语法实现多表查询

  • 使用JOIN...ON子句创建连接的语法结构:
  • SQL99语法中使用 JOIN ...ON 的方式实现多表的查询。这种方式也能解决外连接的问题。MySQL是支持此种方式的。
代码语言:sql
复制
  SELECT table1.column, table2.column,table3.column
  FROM table1
      JOIN table2 ON table1 和 table2 的连接条件
          JOIN table3 ON table2 和 table3 的连接条件
  • SQL99语法实现内连接:
代码语言:sql
复制
SELECT last_name,department_name
FROM employees e INNER JOIN departments d
ON e.`department_id` = d.`department_id`;
代码语言:sql
复制
SELECT last_name,department_name,city
FROM employees e JOIN departments d
ON e.`department_id` = d.`department_id`
JOIN locations l
ON d.`location_id` = l.`location_id`;
  • SQL99语法实现外连接:

练习:查询所有的员工的last_name,department_name信息

  • 左外连接:
代码语言:sql
复制
SELECT last_name,department_name
FROM employees e LEFT JOIN departments d
ON e.`department_id` = d.`department_id`;
  • 右外连接:SELECT last_name,department_name FROM employees e RIGHT OUTER JOIN departments d ON e.`department_id` = d.`department_id`;SELECT last_name,department_name FROM employees e FULL OUTER JOIN departments d ON e.`department_id` = d.`department_id`;
  • 满外连接:mysql不支持FULL OUTER JOIN
  • SQL99 采用的这种嵌套结构非常清爽、层次性更强、可读性更强,即使再多的表进行连接也都清晰可见。如果你采用 SQL92,可读性就会大打折扣。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. SQL92:使用(+)创建连接
  • 2. SQL99语法实现多表查询
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com