美文网首页
chapter15:联结表

chapter15:联结表

作者: WeirdoSu | 来源:发表于2017-12-20 17:19 被阅读0次

联结

联结(join)是SQL最强大功能之一。

关系表

看一个例子:假如有一个包含产品目录的数据库表,其中每种类别的物品占一行。对于每种物品要存储的信息包括产品描述和价格,供应商信息。
现在,假如有同一供应商生产的多种物品,将这些数据与产品信息分开存储的理由如下:

  • 供应商信息相同,对每个产品重复此信息浪费;
  • 如果供应商信息改变,只需改动一次;
  • 如果有重复数据,很难保证每次输入该数据的方式相同。
    关系表设计就是要保证把信息分解成多个表,一类数据一个表,各表通过某些常用的值互相关联。

在这个例子中,可以建立两个表,一个存储供应商信息,另一个存储产品信息。

vendors表包含所有供应商信息,每个供应商占一行,每个供应商具有唯一标识。此标识成为主键(primary key)。

products表存储产品信息,除了供应商ID(vendors的主键)外不存储其他供应商信息。

vendors表的主键又叫做products的外键,将两表关联起来,利用供应商ID能从vendors表中找出相应供应商的详细信息。

外键(foreign key):外键为某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系。

创建联结

例:

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

!:使用完全限定列名。

WHERE子句的重要性

WHERE子句作为过滤条件,它只包含那些匹配给定条件的行。

笛卡尔积(cartesian product):由没有联结条件的表返回的结果为笛卡尔积。检索出的行的数目将是第一个表中的行数乘以第二个表中的行数。
例:

SELECT vend_name, prod_name, prod_price
FROM vendors, products
ORDER BY vend_name, prod_name;

内部联结

以上均为等值联结(equijoin),它基于两个表之间的相等测试。这种联结也称为内部联结。

联结多个表

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 = 20005;

相关文章

  • chapter15:联结表

    联结 联结(join)是SQL最强大功能之一。 关系表 看一个例子:假如有一个包含产品目录的数据库表,其中每种类别...

  • 联结表

    一些定义 联结(join) 将数据分成多个表进行有效的存储,并通过外键联结彼此。 联结的好处 方便处理; 有更大的...

  • 图解SQL联结:交叉联结

    1.什么是联结? 表和表之间是通过列产生关系的,这在SQL里叫做联结。联结(join):是通过表和表之间的关系将两...

  • 数据库第二周总结

    如何进行多张表的查询?联结查询 内联结? inner join 表名 on 表名.外键=表名.主键select *...

  • 《mysql必知必会》读书实战笔记15-联结查询

    第15章 联结表 15.1联结 联结查询(join),是SQL最强大的功能之一。 15.1.1关系表 关系数据库,...

  • left/right/inner join

    表a 表b 右联结: 返回包括右表中的所有记录和左表中联结字段相等的记录 SELECT a.labelid,b.l...

  • MySQL联结表

    关系表: 把信息分解成多个表,一类数据一个表,各表通过某些常用值(即关系设计中的关系(relational))互相...

  • MySql 联结表

    创建联结 1、where联结 结果: 注意:这里如果省略where条件,会返回笛卡尔积结果 2、内部联结 inne...

  • MySQL—表联结

  • 从零学会SQL:多表查询

    一、知识点 表的加法 联结 什么是联结 联结(JOIN)就是将其他表中的列添加进来,进行’添加列‘的集合运算UNI...

网友评论

      本文标题:chapter15:联结表

      本文链接:https://www.haomeiwen.com/subject/lwtnwxtx.html