SQL之join

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 表名称;
原文地址:https://www.cnblogs.com/brokencolor/p/9858678.html