可是我爱你,如跛脚的孤狼穿越过荒漠几万里,在漆黑如墨滴,无边无止境的夜里,看到远方徐徐升起,最初一抹悠远而缱绻的光景。
笛卡尔积
- 两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。
联表查询原理
- 先确定数据要用到哪些表。
- 将多个表先通过笛卡尔积变成一个表。
- 然后去除不符合逻辑的数据(根据两个表的关系去掉)。
- 最后当做是一个虚拟表一样来加上条件即可。
inner join
- INNER JOIN 关键字在表中存在至少一个匹配时返回行。
1 | SELECT * from student_info_table inner join major_info on student_info_table.major_id = major_info.major_id; |
inner join (三表连接)
1 | SELECT * from student_info_table inner join company_sql_data |
left join
- LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
1 | SELECT * from student_info_table left join company_sql_data |
right join
- RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。
1 | select * from student_info_table right join company_sql_data |
full outer join (mysql 不支持)
- FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行 。FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。
1 | select * from student_info_table FULL OUTER JOIN company_sql_data on student_info_table.internship_code = company_sql_data.company_code; |
union
- 操作合并两个或者多个 select 语句的结果
1 | SELECT _ from student_info_table left join company_sql_data |