Mysql学习_第十二章_联结表

联结表

联结

SQL最强大的功能之一就是能在数据查询的执行中联结(join)表。联结是利用 SQL的 SELECT 能执行的最重要的操作。

关系表
关系表的设计就是要把信息分解成多个表,一类数据一个表。各表通过某些共同的值互相关联(所以才叫关系数据库)。

为什么使用联结
可以联结多个表返回一组输出,联结在运行时关联表中正确的行。

创建联结

创建联结非常简单,指定要联结的所有表以及关联它们的方式即可。

SELECT vend_name, prod_name, prod_price
FROM Vendors, Products
WHERE Vendors.vend_id = Products.vend_id;

与以前的 SELECT 语句不一样,这条语句的 FROM子句列出了两个表: Vendors 和 Products 。它们就是这条 SELECT 语句联结的两个表的名字。这两个表用 WHERE 子句正确地联结, WHERE 子句指示 DBMS将 Vendors 表中的 vend_id 与 Products 表中的 vend_id 匹配起来。

WHERE 子句的重要性
由没有联结条件的表关系返回的结果为笛卡儿积。检索出的行的数目将是第一个表中的行数乘以第二个表中的行数。
备注:返回笛卡儿积的联结,也称叉联结(cross join)。

内联结
目前为止使用的联结称为等值联结(equijoin),它基于两个表之间的相等测试。这种联结也称为内联结(inner join)。
可以对这种联结使用稍微不同的语法,明确指定联结的类型。下面的 SELECT 语句返回与前面例子完全相同的数据:

SELECT vend_name, prod_name, prod_price
FROM Vendors INNER JOIN Products
ON Vendors.vend_id = Products.vend_id;

联结多个表
SQL 不限制一条 SELECT 语句中可以联结的表的数目。

SELECT prod_name, vend_name, prod_price, quantity
FROM OrderItems, Products, Vendors
WHERE Products.vend_id = Vendors.vend_id
AND OrderItems.prod_id = Products.prod_id
AND order_num = 20007;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值