广义笛卡尔积
select * from 表1,表2… where
上面语句的查询结果,是将多张表的数据进行联合,联合规则,列是多张表的列拼接在一起,行是以乘积的形式排列组合,例如表1,3行数据,表2 4行数据,则显示3x4=12行数据
多张表之间可以无关系,也可以有关系,一般我们会联合查询的都是彼此有关联的表,比如学生表跟班级表,都有共同的列,班级号,where条件筛选让两张表,显示的顺序就是写的顺序
通过班级号相等排除掉无关的行
select * from 表1,表2 where 表1.classid=表2.classid;//等值连接
缺点:需要先把所有表行数据按照乘积排列组合显示出来,然后在where条件进行筛选,性能差
一般用内连接,查询结果一样,但性能更好。
2.内连接,也叫自连接----就是为了替换笛卡尔积
select * from a inner join b on
类比select * from a,b where
区别是,inner join on 是一个组合,必须一起用,而where则可以不要,前者是在排列组合的同时进行筛选,where条件则是先排序,再筛选。前者性能更好。
3.外连接
select * from A left/right [outer] join B on 条件
1.两张表格A和B 取决于谁的数据在左边显示
A表格先出现 A左边显示
B表格后出现 B右边显示
2.left和right来控制以哪一个表格的数据作为基准
作为基准的表格数据必须全部显示出来
非基准的表格按照on条件与之拼接
若找到条件拼接 则正常显示 若找不到满足条件的则 null