12 联结表

12.1 使用联结

联结是一种机制,用来在一条SELECT语句中关联表,因此称之为联结。使用特殊的语法,可以联结多个表返回一组输出,联结在运行时关联表中正确的行。

12.2 创建联结

创建联结的方法是:指定要联结的所有表以及关联它们的方式。

看这样一个例子:

SELECT vend_name, prod_name, prod_price
FROM vendors, products
WHERE vendors.vend_id = products.vend_id
ORDER BY vend_name, prod_name;

输出的结果是:

SELECT语句所指定的两个列(prod_name和prod_price)在一个表中,而另一个列(vend_name)在另一个表中。 FROM子句列出了两个表,分别是vendors和products。它们就是这条SELECT 语句联结的两个表的名字。这两个表用WHERE子句正确联结, WHERE子句指示MySQL匹配vendors表中的vend_id和products表中的vend_id。

可 以 看 到 要 匹 配 的 两 个 列 以 vendors.vend_id 和 products.vend_id指定。这里需要这种完全限定列名,因为如果只给出vend_id, 则MySQL不知道指的是哪一个(它们有两个,每个表中一个)。

12.2.1 使用WHERE的重要性

这里引入笛卡尔积的概念:

由没有联结条件的表关系返回的结果为笛卡儿积。检索出的行的数目将是第一个表中的行数乘以第二个表中的行数。
上面的例子中,如果没有WHERE子句,得到的结果就是笛卡尔积结果。

12.2.2 内部联结

前面所描述的联结都是等值联结,也叫内部联结。
下面的SELECT语句返回与前面例子完全相同的数据:

SELECT vend_name, prod_name, prod_price
FROM vendors INNER JOIN products
ON vendors.vend_id = products.vend_id;

这里,两个表之间的关系是FROM子句的组成部分,以INNERJOIN指定。在使用这种语法时,联结条件用特定的ON子句而不是WHERE子句给出。传递给ON的实际条件与传递给WHERE的相同。

12.2.3 联结多个表

在上一章子查询我们举了一个例子

SELECT cust_name, cust_contact
FROM customers
WHERE cust_id IN ( SELECT cust_id
            FROM orders
            WHERE order_num IN ( SELECT order_num
                                        FROM orderitems
                                        WHERE prod_id = ‘TNT2‘; ) );

如果改成多表联结,可以这样改:

SELECT cust_name, cust_contact
FROM customers, orders,  orderitems
WHERE customers. cust_id = orders. cust_id
AND orders.order_num =  orderitems. order_num
AND prod_id = ‘TNT2‘;           
            

原文地址:https://www.cnblogs.com/xlzfdddd/p/10159225.html

时间: 2024-11-02 07:02:40

12 联结表的相关文章

数据库9:联结表 高级联结 组合查询 全文本搜索

第十五章联结表 Sql最强大的功能之一就是能在数据检索查询的执行中联结(join)表.联结是利用sql的select能执行的最重要的操作,能很好的理解联结及其语法是学习sql的一个极为重要的组成部分.   外键:外键为某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系. 好处:供应商信息不重复,不浪费空间和时间,方便日后修改,一个表信息改动不影响另一个表的信息 联结是一种机制,使用特殊的语法,可以联结多个表返回一组输出,联结在运行时关联表中正确的行.   创建联结          

SQL学习之联结表的使用

1.简介:"联结(join)表"是SQL最强大的功能之一.联结是利用SQL的SELECT能执行的最重要的操作,很好地理解联结及其语法是学习SQL的极为重要的部分! 在能够有效的使用联结前,必须了解关系表以及关系型数据库设计的一些基础知识. 2.关系表 下面通过一个列子来理解关系表. 有一个包含产品目录的数据库表,其中每类物品占一行.对于每一种物品,要存储的信息包括产品描述.价格以及生产该产品的供应商.关于供应商,现在一个供应商生产多个产品,那么在何处存储供应商名.地址.联系方式等供应商

MySQL联结表

联结 SQL最强大的功能之一就是能在数据检索查询的执行中联结表.而联结表是基于关系表.理解关系表如下,假如由同一供应商生产的多种物品,在数据库中需要存储产品信息,而在产品信息的这一行不存储供应商信息,因为这些产品的供应商是同一个,所以在产品信息这一行里记录一个唯一的供应商id就可以,供应商信息单独的存储一个表,并且也用为一个的id记录.这样,产品表与供应商表就通过 共同的供应商id连接起来了.如下表所示: 在vendors表中,vend_id称为主键,products表中的vend_id为外键.

2017年12月17日 ASP.NET 12个表单元素&&简单控件/复合控件

12个表单元素可以分为三大类 第一类:文本类 <input type = "text" /> //普通文本框 <input type = "password" /> //密码文本框 <input type = "hidden" /> //隐藏域 <textrea></textrea> //可变动文本框 第二类:按钮类 <input type = "button"

SQL必知必会 笔记 第十二章 联结表

12.1联结 SQL最强大的功能之一即是在数据查询的执行中联结(join)表. 12.1.1关系表 相同数据出现多次绝不是一件好事,此因素是关系数据库设计的基础.关系表的设计就是要保证把信息分解成多个表,一类数据一个表.各表通过某些常用的值(即关系设计中的关系(relational))互相关联. 可伸缩性(scale):能够适应不断增加的工作量而不失败.设计良好的数据库或应用程序称之为可伸缩性好(scale well). 12.1.2为什么要使用联结 如果数据存储在多个表中,怎样用单条SELEC

第十五章联结表

1.相同数据出现多次不是一件好事,此因素是关系型数据库设计的基础.关系表的设计就是要保证把信息分解成多个表,一类数据一个表.各表通过某些常用的值互相关联. 2.外键:外键为某个表的一列,它包含另一个表的主键值,定义了两个表之间的关系. 3.联结是一种机制,用来在一条select语句中关联表. 4.基于两个表之间的相等测试,这种联结也称为内部联结 5.sql对一条select语句可以联结的表的数目没有限制 注意点:不要联结不必要的表,联结的表越多,性能下降的越厉害 6.笛卡尔积: 由没有联结条件的

11.联结表---SQL

说明:使用交互式DBMS工具重要的是,要理解联结不是物理实体.换句话说,它在实际的数据库表中并不存在.DBMS会根据需要建立联结,它在查询执行期间一直存在. 一.等值语法:SELECT 字段 FROM 表1,表2 WHERE 表1.字段=表2.字段 SELECT vend_name, prod_name, prod_price FROM Vendors, Products WHERE Vendors.vend_id = Products.vend_id; 分析▼我们来看这段代码.SELECT语句

联结表

1.无联结 没有联结条件的表关系返回的结果为笛卡尔积 2.内部联结 /等值联结 INNER JOIN 3.自联结 使用表别名 e.g. select p1.prod_name,p1.prod_id from products as p1,products as p2 where p1.vend_id=p2.vend_id and p2.prod_id='DTNTR' 4.自然联结 每个列只能出现一次 5.外部联结 包含了没有关联行的那些行 左外部联结:LEFT OUTER JOIN 右外部联结:

MYSQL必知必会读书笔记 第十五和十六章 联结表

为什么要使用联结? 如果数据存储在多个表中,怎样使用单条SELECT语句检索出数据?答案就是使用联结.简单地说,可以联结多个表返回一组输出,联结在运行时关联表中正确的行. 1.创建联结 SELECT vend_name,prod_name,prod_price from vendors,products WHERE vendors.vend_id=products.vend_id ORDER BY vend_name,prod_name; 注意:在引用列可能出现二义性时,必须使用完全限定列名.