前言
在数据库中我们想查询的数据往往是存在多个独立的表中的,所以客户在浏览器页面操作时,服务器要到数据库中查找相应的内容,这就需要我们在数据库中能查到相应是数据来证实,下面让我们一起来学习多表查询。
多表查询
多表查询分为where条件查询和join连接查询
where条件查询
用法:先做笛卡尔乘积生成一张中间表,再通过where条件过滤生成最终表
缺陷:若量表数据比较庞大的时候,生成的中间表数据量太大,会影响数据库的性能
笛卡尔乘积
使用join
1.内连接
书写方法:Join&inner join
解释:先使用on条件过滤,只显示满足条件的数据,不满足条件的跳过
内连接
2.左外连接
书写方法:Left join
解释:以left join左边的表为主表,左表数据全显示,右表的数据只显示满足条件的,不满足条件的则以null代替
左外连接
3.右外连接
书写方法:Right join
解释:以right join右边的表为主表,右表的数据全部显示,左表的数据只显示满足条件的,不满足条件的则以NULL代替
4.全连接
书写方法:Full join
解释:量表数据全显示,坐标或者右表中没有满足条件的数据,就以NULL代替
总结:
以下表为例:
下表代表全连接的结果
绿色部分代表内连接结果
绿色及以上部分,代表左连接结果
绿色及以下部分,代表右连接结果
全连接
子查询
1.性质
- 子查询或内部查询或嵌套查询在另一个SQL查询的查询和嵌入式WHERE子句中。
- 子查询用于返回将被用于在主查询作为条件的数据,以进一步限制要检索的数据。
- 子查询可以在SELECT,INSERT,UPDATE使用,而且随着运算符如DELETE语句 =, <, >, >=, <=, IN, BETWEEN 等.
2.书写格式:子查询(sql语句)+空格+别名
子查询
多表关联注意点
1.先画ER图,梳理多表之间的联系
ER图
2.根据多表之间共同的字段写sql关联语句
image.png
3.表名后+空格+别名
4.子查询(sql语句)+空格+别名;
image.png