SQL——联结表

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hanxuemin12345/article/details/8842006

          在做牛腩新闻发布系统的时候,联结表用到的很频繁,其实在做机房收费系统时

 

很多查询语句就用到了在数据查询的执行中联结表(主要是因为涉及数据库时用到的三范式)

 

。觉得很是新奇,因为之前没有接触过,第一次机房的时候,数据库设计的很是啰嗦,所以也涉及不到联结表(因为

 

大多数的查询功能在一张表中就能完成了)

         

        下面以例子形式介绍一下在数据查询的执行中联结表——这也是SQL最强大的功能之一

 

如果所需数据存储在多个表中,怎么用单条Select语句检索出数据?

答:使用联结!!联结是一种机制,使用特殊语法,用一条Select语句可以联结多个表,返回一组输出。

 

Vendors表(供应商信息表)

字段名称

说明

Vend_id

供应商ID

Vend_name

供应商名称

 

 

Products表(产品信息表)

字段

说明

Vend_id

供应商ID

Prod_id

产品ID

Prod_name

产品名称

Prod_Price

产品价格

 

 

OrderItems表(订单信息表)

字段名称

说明

Prod_id

产品ID

order_num

订单编号

quantity

订购数量

 

Vendors表:存储供应商信息(供应商IDvend_id为主键)

Products表:存储产品信息——除了存储供应商ID(产品IDprod_id为主键)外不存储其他任何供应商的信息

OderItems表:存储订单信息(订单编号—order_num为主键)

 

 1,联结的创建很简单,规定要联结的表及联结条件(Where子句作为过滤条件)即可。

例子:VendorsProducts表中查询供应商名称、产品名称、产品价格:

SELECT vend_name,prod_name,prod_price,FROM Vendors,Products

WHERE Vendors.vend_id=Products.vend_id;

 

 

2,内部联结

目前为止所用的联结称为等值联结,它基于两个表之间的相等测试(也成为内部联结。)

 

同上例:从VendorsProducts表中查询供应商名称、产品名称、产品价格:

SELECT vend_name,prod_name,prod_price FROMVendors INNER JOINProducts ON Vendors.vend_id=Products.Vend_id;

 

注:Select语句与上例中的相同,但FROM子句不同。此处,两个表之间的关系是FROM

子句的组成部分,以INNER JOIN指定,并且联结条件用特定的ON子句而不是WEHER子句给出。但是:传递给ON的实际条件与传递给WHERE子句的相同。

 

3,联结多个表

1)一条SELECT语句中可以联结的表的数目没有限制;

2)创建联结的基本规则相同——先列出所有要联结的表,然后设置表之间的关系(即查询条件)

 

例子:

从订单表(OrderItems)、产品信息表(Products)、供应商信息表(Vendors)中查询订单编号为0001的产品名称、供应商名称、产品价格、订购数量

SELECT prod_name,vend_name,prod_price,quantity FROMOrderItems,Products,Vendors WHERE Products.vend_id=Vendors.vend_id AND OrderItems.prod_id=Products.prod_idAND order_num=0001

 

 

学习总结:学习是不断熟悉起来的一个过程!!

展开阅读全文

没有更多推荐了,返回首页