- 表别名
与列别名不同,表别名只在查询执行中使用,不返回到客户机
select cust_name, cust_contact
from customers as c, orders as o, orderitems as oi
where c.cust_id = o.cust_id
and oi.order_num = o.order_num
and prod_id = 'TNT2';
- 使用不同类型的联结
使用表别名的一个理由是,能在单条select语句中不止一次使用相同的表。
2.1 自联结
自联结的一个例子:
select p1.prod_id, p1.prod_name from products as p1, products as p2
where p1.vend_id = p2.vend_id
and p2.prod_id = 'DTNTR';
2.2 自然联结
没有重复列
2.3 外部联结
有时候,某个表的行在另一个表中没有对应行,如果是内部联结,则该行不会在结果中出现。但是我们希望该表的每一行都在结果中出现,此时,应当使用外部联结。
select customers.cust_id, order.num
from customers left out join orders
on customers.cust_id = orders.cust_id;
其中left的含义是指左边表的每一行都要出现在结果集中。
2.4 使用带聚集函数的联结
联结是可以和聚集函数一同使用的:
select customers.cust_name , customers.cust_id, count(orders.order_num) as num_ord
from customers inner join orders
on customers.cust_id = orders.cust_id
group by customers.cust_id;