文档章节

MySQL必知必会-12MySQL联结表

z
 zhiliubai
发布于 2017/03/18 12:34
字数 574
阅读 1
收藏 0
创建联结
   
   
  1. SELECT
  2. vend_name,
  3. prod_name,
  4. prod_price
  5. FROM
  6. vendors,
  7. products
  8. WHERE
  9. vendors.vend_id = products.vend_id
  10. ORDER BY
  11. vend_name,
  12. prod_name;
在一条SELECT语句中联结几个表时,相应的关系是在运行中构造的。
在联结两个表时,实际上做的是将第一个表中的每一行与第二个表中的每一行配对。
WHERE子句作为过滤条件,它只包含那些匹配给定条件(联结条件)的行。没有WHERE子句,第一个表中的每个行将与第二个表中的每个行配对,而不管它们逻辑上是否可以配在一起。

笛卡儿积
由没有联结条件的表关系返回的结果为笛卡儿积。检索出来的数目将是第一个表中的行数乘以第二个表中的行数。
    
    
  1. SELECT
  2. vend_name,
  3. prod_name,
  4. prod_price
  5. FROM
  6. vendors,
  7. products;

内部联结
创建联结的第一个例子,所使用的联结称为等值联结,它基于两个表之间的相等测试。这种联结也称为内部联结。
对于这种联结可以使用稍微不同的语法来明确指定联结的类型。例如:
    
    
  1. SELECT
  2. vend_name,
  3. prod_name,
  4. prod_price
  5. FROM
  6. vendors
  7. INNER JOIN products ON vendors.vend_id = products.vend_id;
两个表之间的关系用INNER JOIN指定,联结条件用特定的ON子句而不是WHERE子句给出。
传递给ON的实际条件与传递给WHERE的相同。

ANSI SQL规范首选INNER JOIN语法,尽管使用WHERE子句定义联结的确比较简单,但是使用明确的联结语法能够确保不会忘记联结条件,有时候这样做也能影响性能。

联结多个表

SQL对一条SELECT语句中可以联结的表的数目没有限制。创建联结的基本规则也相同。
例子一:
    
    
  1. SELECT
  2. prod_name,
  3. vend_name,
  4. prod_price,
  5. quantity
  6. FROM
  7. orderitems,
  8. products,
  9. vendors
  10. WHERE
  11. products.vend_id = vendors.vend_id
  12. AND orderitems.prod_id = products.prod_id;
第二种写法
    
    
  1. SELECT
  2. prod_name,
  3. vend_name,
  4. prod_price,
  5. quantity
  6. FROM
  7. products
  8. INNER JOIN vendors ON products.vend_id = vendors.vend_id
  9. INNER JOIN orderitems ON orderitems.prod_id = products.prod_id;

例子二:
    
    
  1. SELECT
  2. prod_name,
  3. vend_name,
  4. prod_price,
  5. quantity
  6. FROM
  7. orderitems,
  8. products,
  9. vendors
  10. WHERE
  11. products.vend_id = vendors.vend_id
  12. AND orderitems.prod_id = products.prod_id
  13. AND order_num = 20005;
第二种写法
    
    
  1. SELECT
  2. prod_name,
  3. vend_name,
  4. prod_price,
  5. quantity
  6. FROM
  7. products
  8. INNER JOIN vendors ON products.vend_id = vendors.vend_id
  9. INNER JOIN orderitems ON orderitems.prod_id = products.prod_id
  10. WHERE
  11. orderitems.order_num = 20005;
第三种写法
    
    
  1. SELECT
  2. prod_name,
  3. vend_name,
  4. prod_price,
  5. quantity
  6. FROM
  7. products
  8. INNER JOIN vendors ON products.vend_id = vendors.vend_id
  9. INNER JOIN orderitems ON orderitems.prod_id = products.prod_id
  10. AND orderitems.order_num = 20005;

本文转载自:http://blog.csdn.net/zoroday/article/details/56666072

z
粉丝 0
博文 26
码字总数 0
作品 0
广州
私信 提问
《MySQL必知必会》笔记1

2016/2/21 数据库:保存有组织的数据的容器(通常是一个文件或一组文件) 数据库管理系统(DBMS):用于访问数据库。 表:某种特定类型数据的结构化清单。相同的数据库中表的名字是唯一的 模...

fxdhdu
2016/03/01
19
0
MySQL快速入门

继恶补了C++基础之后,又来恶补MySQL了,花了将近一天的时间啃完了<MySQL必知必会>这本书,整理了有点糙的读书笔记。 1.SHOW语句的使用: 2.SELECT查询语句: 3.LIMIT子句限定显示结果行数:...

waffle930
2016/10/04
94
0
mysql 联结,级联查询总结区分

其实我对 数据库的级联或者联结查询一直都是会用,项目能查询出来自己想要的结果即可。 毕竟SQL使用复杂的查询毕竟比较少,而且不难使用。 至于区分他们,我还真的有点模糊。 在看 《SQL必知...

之渊
2018/10/17
64
0
自学书籍.MySQL必知必会 - 联结表

关系表: 1.关系表的设计就是要保证把信息分解成多个表,一类数据一个表,各表通过某些常用的值(即关系设计中的关系)互相关联 2.外键为某个表中的一列,它包含另一个表中的主键值,定义了两个表之...

满满李
2016/04/18
36
0
《MySQL必知必会》读书笔记(三) 15~21章

1、外键为某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系。通过外键查找: SELECT vendname, prodname, pridprice FROM vendors, products WHERE vendors.vendid = produ...

一万
2016/02/07
103
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud Sleuth 整合 feign 源码分析之修改span名称

org.springframework.cloud.sleuth.instrument.web.client.feign.TraceFeignClient 包括创建span一些参数 需求场景: 由于项目中有restful 风格的http请求,sleuth feign 的span名称默认是u...

xiaomin0322
27分钟前
4
0
Less 延伸

extend 是一个 Less 伪类,它通过使用 :extend 选择器在一个选择器中扩展其他选择器样式。 扩展语法 扩展可以是附加到选择器,也可以是集中放置在规则,看上去像是带有选择器参数的可选伪类,...

凌兮洛
27分钟前
4
0
RedHat 7.0系统中安装mysql 5.7.22

在安装之前,首先要查看的是,你的系统中有没有已经安装过的情况。键入rpm -qa|grep mysql,如果无任何显示,则表示没有安装过相关组件,如果有,则根据显示出来的名字,键入rpm -e --nodeps...

最菜最菜之小菜鸟
33分钟前
4
0
RPA:企业信息孤岛的“克星”

为了降本增效,近来世界范围内掀起一股流程优化的热潮,转型升级成为众多企业时刻挂在嘴边的热词。不过在企业数字化转型的过程中,信息孤岛的出现,往往成为了企业升级的绊脚石。 信息孤岛:...

UiBot
33分钟前
4
0
我的测试

我的测试

daiison
33分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部