SQL必知必会——联结表(十二)

1、联结

1.1、关系表

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

好处:
1、供应商信息不重复,不会浪费时间和空间
2、如果供应商信息改动,可以指更新Venders表中的单个记录,相关表中的数据不会改动
3、由于数据不重复,数据显然是一致的,是的处理数据和生成报表更简单

1.2、为什么要用联结

数据存储在多个表中,怎么用一条SELECT语句就检索出数据?答案是使用联结。用在一条SELECT语句中关联表,因此称为联结。

2、创建联结

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

3、where子句的重要性

要记住,在一条SELECT语句中联结几个表时,相应的关系是在运行中构造的。在数据库表的定义中没有指示DBMS如何对表进行联结的内容。你必须自己做这件事情。在联结两个表时,实际要做的是将第一个表中的每一行与第二个表中每一行匹配对。WHERE子句作为过滤条件,只包含哪些匹配给定条件(这里是联结条件)的行。

4、内联结

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

注意:
1、SQL纯正论者是用鄙视的眼光看待简单语法的。

5、联结多个表

SELECT prod_name,vender_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;
#这里的FROM子句列出三个表,WHERE子句定义这两个联结条件,而第三个联结条件用来过滤出订单20007中的物品。

注意:
1、联结的表越多,性能下降越厉害

猜你喜欢

转载自blog.csdn.net/qq_28285403/article/details/94592046