表连接:
两个表通过共有的某一列,根据其数值关系(一般是相等)进行联合,把一个表的一行所带的相应列附加到另一个表上。
业务上看,是添加了相应列的延伸内容,加的内容是一个对象在外表所对应的属性(类似点击一个key,看到其相应的属性,3d透视角度)。一对多即是一个外键附加了一堆属性
多表连接
先两个表连接,再连接其他表。即某一行所带的列不停的增加,某个属性(key)所带的值不停的附加
一对一,一对多,多对多
一对一:一个表里的key只出现一次,另一个表里对应的key也只有一行
一对多:一个表里的key只出现一次,另一个表里对应的key出现在多行。一对多的联合不会使得行数增加,因为一个表里已经有多个行了,联合和只是把key做主键那个表的内容复制到每一行
多对多:一个表里的key出现在多行,另一个表里对应的key也出现在多行。联合后是m*n
外键,主键
如果一个key在一个表里是外键,那么就是一对多
如果一个key在一个表里是主键键,那么就是一对一
内连接,外连接,左连接,右连接
内连接:两个表联合,只取key值相等的行连接
左连接:两个表联合,如果左边的key在右边的表找不到,左边的key所在的那一行保留,右边的列对应的值都是空
右连接:两个表联合,如果右边的key在左边的表找不到,右边的key所在的那一行保留,左边的列对应的值都是空
外连接:两个表联合,左右两表的key对应行都要保留,如果有key一致,联合在一起(消一行),否则保留,缺失的表的列值为空
一对几和怎么连接没有关系,虽然都是多产生几行,一个是乘法式的增加,一个是加法式的增加
来源:https://www.cnblogs.com/cascle/p/12447724.html