当sql表中没有外键,而我们需要连接多张表进行查询时,可以使用以下 :
自然连接
自然连接是基于两个表中具有相同名称的列进行连接。当两个表中具有相同的列时,自然连接会自动连接具有相同值的记录。
SELECT *
FROM table1
NATURAL JOIN table2;
内部连接
内部连接使用ON子句连接两个表中的记录,ON子句指定了连接条件,即两个表中要匹配的列。
SELECT *
FROM table1
INNER JOIN table2 ON table1.id = table2.id;
外部连接
外部连接除了匹配的记录外,还会返回不匹配的记录。有两种类型的外部连接:
* **左外部连接:**返回表1中的所有记录,以及表2中匹配的记录。不匹配的表2记录用NULL填充。
SELECT *
FROM table1
LEFT JOIN table2 ON table1.id = table2.id;
* **右外部连接:**返回表2中的所有记录,以及表1中匹配的记录。不匹配的表1记录用NULL填充。
SELECT *
FROM table1
RIGHT JOIN table2 ON table1.id = table2.id;
交叉连接
交叉连接返回两个表中所有记录的笛卡儿积,即每个表中的每个记录都与另一表中的每个记录相连接。
SELECT *
FROM table1
CROSS JOIN table2;
选择合适的连接类型取决于表结构和查询要求。通过使用这些连接 ,即使在sql没有外键的情况下,也可以实现多个表格之间的有效连接。