- 使用表别名
SELECT ——,——
FROM —— AS c,—— AS o,—— AS oi
WHERE c.——=o.——
AND oi.——=o.——
AND ——=——;
此处给表别名,三个例名,c、o、oi,可随意替换其他字符。可缩短SQL语句
表别名可用于WHERE子句,SELECT列表,ORDER BY子句等
与列别名不同,表别名只存在于查询执行中 - 使用不同类型的联结
(1) 自联结
SELECT p1.——,p1——
FROM —— AS p1,—— AS p2
WHERE p1.——=p2.——
AND p2.——=——;
此查询实际上需要的两个表上是相同的表,为避免二义性,给一个表两个不同列名
在SELECT语句中也要明确给出p1前缀明确给出所需列全名
(2) 自然联结
SELECT c.*,o.——,o.——,oi.——,oi.——,oi.——
FROM —— AS c,—— AS o,—— AS oi
WHERE c.——=o.——
AND oi.——=o.——
AND ——=——;
通配符对第一个表使用,所用其他列手动明确列出,将不会检索出重复列
(3) 外部联结
既检索有关联行的行,也包含没有关联行的行
SELECT ——.——,——.——
FROM —— LEFT OUTER JOIN ——
ON ——.——=——.——;
此SELECT语句使用OUTER JOIN指定联结类型
LEFT指出FROM子句的第一个空代表的表。RIGHT指第二个空代表的表
外部联结将包括指出的表中的所有行 - 使用带聚集函数的联结
SELECT ——.——
——,——
COUNT(——.——) AS ——
FROM —— INNER JOIN ——
ON ——.——=——.——
GROUP BY ——.——;
只显示有关联行的相关计数
若使用左外部联结LEFT OUTET JOIN,将包含左表中所有行,甚至计数为0的行