(1) 外连接
- SQL1992语法(MySql不支持)
- 左外连接
- 右外连接
- 全外连接
- SQL1999语法
- 左外连接:LEFT [OUTER] JOIN ON
- 右外连接:RIGHT [OUTER] JOIN ON
- 全外连接: FULL [OUTER] JOIN ON , (MySql不支持)
(2) 自然连接(不常用)
大家也都知道,连接查询会产生无用笛卡尔积,我们通常使用主外键关系等式来去除它。而自然连接无需你去给出主外键等式,它会自动找到这一等式:
- 两张连接的表中名称和类型完成一致的列作为条件,例如emp和dept表都存在deptno列,并且类型一致,所以会被自然连接找到!如果两个表中有一对字段名称相同,字段类型不同,会报错。
- 当两个表中有多对名称和类型完全一致的字段,自然连接会自动把这多对字段都会当做等值条件。
- 自然连接的代码
SELECt * FROM emp NATURAL JOIN dept;
SELECt * FROM emp NATURAL LEFT JOIN dept;
SELECt * FROM emp NATURAL RIGHT JOIN dept;
(3) JOIN连接查询小结
案例:
| ①简单的两表连接案例:查询员工名和部门名②添加筛选条件案例1:查询部门编号20的部门信息和员工信息案例2: 查询有奖金的员工名、部门名③添加分组+筛选案例:查询部门中员工个数>4的部门名称④添加分组+筛选+排序案例:查询部门中员工个数>4的部门名,并按部门名降序⑤三表连接案例:查询员工名、部门名、工资级别⑹外连接+分组+筛选案例: 查询哪个部门没有员工 |
| ①简单的两表连接案例:查询员工名和部门名②添加筛选条件案例1:查询部门编号20的部门信息和员工信息案例2: 查询有奖金的员工名、部门名③添加分组+筛选案例:查询部门中员工个数>4的部门名称④添加分组+筛选+排序案例:查询部门中员工个数>4的部门名,并按部门名降序⑤三表连接案例:查询员工名、部门名、工资级别⑹外连接+分组+筛选案例: 查询哪个部门没有员工 |
| ①简单的两表连接案例:查询员工名和部门名②添加筛选条件案例1:查询部门编号20的部门信息和员工信息案例2: 查询有奖金的员工名、部门名③添加分组+筛选案例:查询部门中员工个数>4的部门名称④添加分组+筛选+排序案例:查询部门中员工个数>4的部门名,并按部门名降序⑤三表连接案例:查询员工名、部门名、工资级别⑹外连接+分组+筛选案例: 查询哪个部门没有员工 |
| ①简单的两表连接案例:查询员工名和部门名②添加筛选条件案例1:查询部门编号20的部门信息和员工信息案例2: 查询有奖金的员工名、部门名③添加分组+筛选案例:查询部门中员工个数>4的部门名称④添加分组+筛选+排序案例:查询部门中员工个数>4的部门名,并按部门名降序⑤三表连接案例:查询员工名、部门名、工资级别⑹外连接+分组+筛选案例: 查询哪个部门没有员工 |
| ①简单的两表连接案例:查询员工名和部门名②添加筛选条件案例1:查询部门编号20的部门信息和员工信息案例2: 查询有奖金的员工名、部门名③添加分组+筛选案例:查询部门中员工个数>4的部门名称④添加分组+筛选+排序案例:查询部门中员工个数>4的部门名,并按部门名降序⑤三表连接案例:查询员工名、部门名、工资级别⑹外连接+分组+筛选案例: 查询哪个部门没有员工 |
| ①简单的两表连接案例:查询员工名和部门名②添加筛选条件案例1:查询部门编号20的部门信息和员工信息案例2: 查询有奖金的员工名、部门名③添加分组+筛选案例:查询部门中员工个数>4的部门名称④添加分组+筛选+排序案例:查询部门中员工个数>4的部门名,并按部门名降序⑤三表连接案例:查询员工名、部门名、工资级别⑹外连接+分组+筛选案例: 查询哪个部门没有员工 |
| ①简单的两表连接案例:查询员工名和部门名②添加筛选条件案例1:查询部门编号20的部门信息和员工信息案例2: 查询有奖金的员工名、部门名③添加分组+筛选案例:查询部门中员工个数>4的部门名称④添加分组+筛选+排序案例:查询部门中员工个数>4的部门名,并按部门名降序⑤三表连接案例:查询员工名、部门名、工资级别⑹外连接+分组+筛选案例: 查询哪个部门没有员工 |
| ①简单的两表连接案例:查询员工名和部门名②添加筛选条件案例1:查询部门编号20的部门信息和员工信息案例2: 查询有奖金的员工名、部门名③添加分组+筛选案例:查询部门中员工个数>4的部门名称④添加分组+筛选+排序案例:查询部门中员工个数>4的部门名,并按部门名降序⑤三表连接案例:查询员工名、部门名、工资级别⑹外连接+分组+筛选案例: 查询哪个部门没有员工 |
| ①简单的两表连接案例:查询员工名和部门名②添加筛选条件案例1:查询部门编号20的部门信息和员工信息案例2: 查询有奖金的员工名、部门名③添加分组+筛选案例:查询部门中员工个数>4的部门名称④添加分组+筛选+排序案例:查询部门中员工个数>4的部门名,并按部门名降序⑤三表连接案例:查询员工名、部门名、工资级别⑹外连接+分组+筛选案例: 查询哪个部门没有员工 |
| ①简单的两表连接案例:查询员工名和部门名②添加筛选条件案例1:查询部门编号20的部门信息和员工信息案例2: 查询有奖金的员工名、部门名③添加分组+筛选案例:查询部门中员工个数>4的部门名称④添加分组+筛选+排序案例:查询部门中员工个数>4的部门名,并按部门名降序⑤三表连接案例:查询员工名、部门名、工资级别⑹外连接+分组+筛选案例: 查询哪个部门没有员工 |
| ①简单的两表连接案例:查询员工名和部门名②添加筛选条件案例1:查询部门编号20的部门信息和员工信息案例2: 查询有奖金的员工名、部门名③添加分组+筛选案例:查询部门中员工个数>4的部门名称④添加分组+筛选+排序案例:查询部门中员工个数>4的部门名,并按部门名降序⑤三表连接案例:查询员工名、部门名、工资级别⑹外连接+分组+筛选案例: 查询哪个部门没有员工 |
| ①简单的两表连接案例:查询员工名和部门名②添加筛选条件案例1:查询部门编号20的部门信息和员工信息案例2: 查询有奖金的员工名、部门名③添加分组+筛选案例:查询部门中员工个数>4的部门名称④添加分组+筛选+排序案例:查询部门中员工个数>4的部门名,并按部门名降序⑤三表连接案例:查询员工名、部门名、工资级别⑹外连接+分组+筛选案例: 查询哪个部门没有员工 |
想要了解跟多关于Java培训课程内容欢迎关注达内java培训,达内除了这些技术文章外还有免费的高质量java培训课程视频供广大学员下载学习。
