QL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。
数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起
INNER JOIN
在表中存在至少一个匹配时,INNER JOIN 关键字返回行。
1 SELECT column_name(s) 2 FROM table_name1 3 INNER JOIN table_name2 4 ON table_name1.column_name=table_name2.column_name
LEFT JOIN
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
1 SELECT column_name(s) 2 FROM table_name1 3 LEFT JOIN table_name2 4 ON table_name1.column_name=table_name2.column_name
RIGHT JOIN
RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
1 SELECT column_name(s) 2 FROM table_name1 3 RIGHT JOIN table_name2 4 ON table_name1.column_name=table_name2.column_name
FULL JOIN
只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name
实战
1 #连表更新 2 UPDATE table_name1 3 INNER JOIN table_name2 4 ON table_name1.col=table_name2.col SET 列名称 = 新值 WHERE 列名称 = 某值 5 6 7 #删除名字重复的数据,留下id最小的 8 DELETE t1 FROM `user` t1 LEFT JOIN ( 9 SELECT * FROM `user`GROUP BY user_name 10 HAVING COUNT(user_name)>=2 11 ) t2 ON t1.user_name = t2.user_name 12 WHERE t1.user_id > t2.user_id 13 14 15 #创建表同时插入数据 16 CREATE TABLE 表名称 17 ( 18 列名称1 数据类型, 19 列名称2 数据类型, 20 列名称3 数据类型, 21 .... 22 ) 23 SELECT 列名称 FROM 表名称;