🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 语法: ``` select 查询列表 from 表1 别名 【连接类型】 join 表2 别名 on 连接条件 【where 筛选条件】 【group by 分组】 【having 筛选条件】 【order by 排序列表】 【limit】 ``` # 分类: ## 1.内连接 ### inner 语法: ``` select 查询列表 from 表1 别名 inner join 表2 别名 on 连接条件; ``` ### 特点: ①添加排序、分组、筛选 ②inner可以省略 ③ 筛选条件放在where后面,连接条件放在on后面,提高分离性,便于阅读 ④inner join连接和sql92语法中的等值连接效果是一样的,都是查询多表的交集 ## 2.外连接 ### 应用场景: > 用于查询一个表中有,另一个表没有的记录 ``` 左外:left【outer】 右外:right【outer】 全外:full【outer】 ``` ### 特点: ``` 1、外连接的查询结果为 主表中的所有记录 如果从表中有和它匹配的,则显示匹配的值 如果从表中没有和它匹配的,则显示null 外连接查询结果=内连接结果+主表中有而从表没有的记录 2、左外连接,left join左边的是主表 右外连接,right join右边的是主表 3、左外和右外交换两个表的顺序,可以实现同样的效果 4、全外连接=内连接的结果+表1中有但表2没有的+表2中有但表1没有的 ``` #### 例子: #### 案例1:查询哪个部门没有员工 #### 左外 ``` SELECT d.*,e.employee_id FROM departments d LEFT OUTER JOIN employees e ON d.`department_id` = e.`department_id` WHERE e.`employee_id` IS NULL; ``` #### 右外 ``` SELECT d.*,e.employee_id FROM employees e RIGHT OUTER JOIN departments d ON d.`department_id` = e.`department_id` WHERE e.`employee_id` IS NULL; SQL92 VS SQL99pk ``` 功能:sql99支持的较多 可读性:sql99实现连接条件和筛选条件的分离,可读性较高 ## 3.交叉连接 ### cross > 交叉连接 使用99语法标准代表笛卡尔乘积。 ``` SELECT b.*,bo.* FROM beauty b CROSS JOIN boys bo; ```