MySQL5-连接查询

来源:互联网 发布:中国域名后缀 编辑:程序博客网 时间:2024/06/05 07:50

连接查询可以实现多个表的查询,一次取出多个表中的数据。
连接查询可分为四种:内连接,外连接,交叉连接,自然连接。
如果连接查询的不同表有同名字段,必须加表名或表名的别名来区分。

1.内连接[INNER] JOIN

数据库的默认查询方式,INNER可以省略不写。
从左表取出记录后,去匹配右表中的记录,如果满足条件则记录保留,否则舍弃。
语法:左表 INNER JOIN 右表 ON 左表.字段=右表.字段
ON后面跟的是条件,最终只保留满足条件的记录。可以用WHERE代替ON,但是ON效率更高。

2.外连接

以某张表为主,取表内所有记录,然后将每一条记录与另一张表进行连接,如果能匹配,则保留记录,如果不能匹配,则其他表的字段置空且保留记录(不管能不能匹配,主表对应的记录都会保留)。
外连接分为左连接(LEFT JOIN)和右连接(RIGHT JOIN)。
左连接和右连接可以互转,只要将左表和右表换位置,同时LEFT JOIN和RIGHT JOIN替换即可。

1.左连接

左表是主表,最终记录数至少不少于左表的记录数(匹配到多条记录时,最终记录数大于左表记录数)。
语法:左表 LEFT JOIN 右表 ON 左表.字段=右表.字段

2.右连接

右表是主表,最终记录数至少不少于右表的记录数(匹配到多条记录时,最终记录数大于右表记录数)。
语法:左表 RIGHT JOIN 右表 ON 左表.字段=右表.字段

3.交叉连接CROSS JOIN

没啥卵用。
交叉连接即笛卡儿积。最终得到表中所有记录的所有组合。
语法:左表 CROSS JOIN 右表,等价于FROM 左表,右表
SELECT * FROM 左表 CROSS JOIN 右表;

4.自然连接NATURAL JOIN

实际项目很难保证字段名完全一致,所以一般不用。
系统用字段名作为匹配模式自动进行匹配。同名字段就是匹配条件。
自然连接分为自然内连接和自然外连接。

1.自然内连接

NATURAL INNER JOIN
默认就是自然内连接,INNER可以不写。

2.自然外连接

自然左外连接:NATURAL LEFT JOIN
自然右外连接:NATURAL RIGHT JOIN

3.用内/外连接模拟自然连接

LEFT/RIGHT/INNER JOIN USING(字段名);

0 0
原创粉丝点击