Mysql连接查询
1. 交叉连接(cross join)
进行笛卡尔积操作,返回两个表中所有行的组合。如果左表有m行数据,右表有n行数据,则返回m*n行数据。一般用于实际应用中,生成大量测试数据。
eg: SELECT *FROM table1 [cross] join table2;
2. 内连接(inner join)
对交叉连接产生的结果根据条件筛选出符合条件的数据。
(1)等值连接
根据‘=’,筛选出两表列值相等的数据。
eg: SELECT* FROM table1 [inner] join table2 on table1.colunm1 = table2.colunm2;
(2)非等值连接
根据‘>’或‘<’等条件,筛选出符合条件的数据。
eg: SELECT* FROM table1 [inner] join table2 on table1.colunm1 > table2.colunm2;
3. 外连接(outer join)
内连接产生的结果+外部行
(1)左外连接(left join)
内连接产生的结果+左表不符合条件的记录,并在右表相应列中填NULL。
eg: SELECT *FROM table1 left join table2 on table1.colunm1 = table2.colunm2;
(2)右外连接(right join)
内连接产生的结果+右表不符合条件的记录,并在左表相应列中填NULL。
eg: SELECT *FROM table1 left join table2 on table1.colunm1 = table2.colunm2;
(3)全外连接(full join) Mysql不支持!!!
内连接产生的结果+左表与右表不符合条件的记录,并在左表与右表相应列中填NULL。
4. 自然连接(natural join)
自动将两个表中字段名相同的列进行匹配。
eg: SELECT *FROM table1 natural join table2;
5. 自连接
利用表的别名实现单个表的自身连接。
eg: SELECT A.*FROM table1 A table1 B WHERE A.column1 =B.column1 AND A.column1 ……;