当我们需要的数据在不同的数据表中时,就需要使用多表查询来检索我们需要的数据。
SQL查询的基本原理:
1、单表查询:根据WHERE条件过滤表中的记录,形成中间表(这个中间表对用户是不可见的);然后根据SELECT的选择列选择相应的列进行返回最终结果。
2、两表连接查询:对两表求积(笛卡尔积)并用ON条件和连接类型进行过滤形成中间表;然后根据WHERE条件过滤中间表的记录,并根据SELECT指定的列返回查询结果。
3、多表连接查询:先对第一个和第二个表按照两表连接做查询,然后用查询结果和第三个表做连接查询,以此类推,直到所有的表都连接上为止,最终形成一个中间的结果表,然后根据WHERE条件过滤中间表的记录,并根据SELECT指定的列返回查询结果。
一、INNER JOIN
INNER JOIN子句将一个表中的行与其他表中的行进行匹配,并允许从两个表中查询包含列的行记录。在使用INNER JOIN子句之前,必须在FROM子句中指定主表,表中要连接的主表应该出现在INNER JOIN子句中,连接条件出现在INNER JOIN子句的ON关键字之后,连接条件是将主表中的行与其他表中的行进行匹配的规则。
语法:
SELECT 字段名列表
FROM 表1
INNER JOIN 表2 ON 连接条件1
INNER JOIN 表3 ON 连接条件2
WHERE 查询条件
对于表1中的每一行,INNER JOIN子句将它与表2的每一行进行比较,以检查它们是否都满足连接条件。当满足连接条件时,INNER JOIN将返回由表1和表2中的列组成的新行。
二、表限定符.
如果表1和表2都具有相同列名的列,则必须在SELECT和ON子句中使用表限定符指定引用的是哪个表中的列。
三、USING关键字
可使用USING关键字替代ON表示连接关系。
四、隐式内连接
隐式的内连接没有INNER JOIN关键字,根据WHERE条件过滤中间表的记录,并根据SELECT指定的列返回查询结果。
五、比较运算符
也可以使用=以外的比较运算符作为连接谓语。