SQL join 用于根据两个或者多个表之间的联系,从这些表汇总查询数据
Join 和 Key
有时我们为得到完整的结果,我们需要从两个或者更多的表中获取结果,我们需要执行join,,
数据库中的表都是可以通过键将彼此联系起来,主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的,在表中,每个主键都是唯一的,这样做的目的是为了不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起,,
下面有czhenya001,czhenya002 两表
查询语句:
通过引用两个表的方式,获取表中数据
SELECT *
FROM czhenya001,czhenya002
WHERE czhenya001.Id = czhenya002.id_ex
我们也可以使用 Join来从两个表中获取数据(结果是一样的)
SELECT *
FROM czhenya001
JOIN czhenya002
WHERE czhenya001.Id = czhenya002.id_ex
不同的 SQL JOIN
除了我们在上面的例子中使用的 INNER JOIN(内连接),我们还可以使用其他几种连接。
下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。
- JOIN: 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
SQL INNER JOIN
在表中存在至少一个匹配时,INNER JOIN 关键字返回行。
INNER JOIN 语法(INNER JOIN 与 JOIN 是相同的)
SELECT *(列名)
FROM 表名1
INNER JOIN 表名2
ON 表名1.列名1=表名2.列名2
SQL LEFT JOIN
表1 那里返回所有的行,即使在右表2中没有匹配的行。
LEFT JOIN 语法
SELECT 列名
FROM 表1
LEFT JOIN 表2
ON 表名1.列名1=表名2.列名2
注:在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。
SQL FULL JOIN
只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
FULL JOIN 语法
SELECT 列名
FROM 表1
FULL JOIN 表2
ON 表名1.列名1=表名2.列名2
我们还可以就对查询出来的记录进行排序,,只要在每句查询语句的后面加上
ORDER BY 列名 //正序
ORDER BY 列名 DESC //逆序
这里的列名需要是上面要显示列名中的一个