Oracle之多表查询(select之依旧苦难的工作)
文章目录
SQL92(语法简单,可读性差)
SQL 92和SQL 99是SQL语句的编写标准
笛卡尔积
直观的感受一下
笛卡尔积里包含了两张表所有字段匹配的情况,即将两张表合成为一张表
内连接
等值连接
不等值连接
自连接
字面意思,自己与自己进行内连接
内连接特点
- 左右两张表,只有满足条件匹配才会被查出,没有匹配则不会被查出来
外连接
左外连接
以左表为基准,坐标的全部信息都会显示,右表不管是否匹配到左表的信息都会进行显示
格式,在where后面=右边加上(+)
右外连接
以右表为基准,坐标的全部信息都会显示,左表不管是否匹配到右表的信息都会进行显示
格式,在where后面=左边加上(+)
SQL99(92基础上增加了关键字,可读性增强)
笛卡尔乘积(cross join 代替 “,”)
内连接([inner] join 代替 “,” on 代替 where)
自然连接(92中没有)
自动选择将两个表中相同名称的字段做等值匹配
使用using()做等值匹配也可以达到一样的效果
等值连接
不等值连接
外连接(outer join 代替"," 不需要(+),on 代替 where)
左外连接(left outer join)
右外连接(right outer join)
满外连接(full outer join)
三表连接查询
92写法
99写法
虽然两者结果相同,但性能是有差异的,主要在于两者所生成中间表的行数差异,92写法会生成许多冗余数据