【MySQL必知必会(十二)】【联结表】

上一篇:【MySQL必知必会(十一)】【使用子查询】

+++++++++++++开始线++++++++++++++++

一、 联结

在数据检索查询的执行中联结,是利用SQL的SELECT能执行的重要的操作

1.1 关系表

关系:各表通过某些常用的值互相关联
外键:外键为某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系
可伸缩性:能够适应不断增加的工作量而不失败

二、 创建联结

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

在这里插入图片描述

完全限定列名

在引用的列可能出现二义性时,必须使用完全限定列名(用一个点分隔的表名和列名)

2.1 WHERE子句的重要性

在联结两个表时,将第一个表中的每一行与第二个表中的每一行配对。WHERE子句作为过滤条件,它只包含那些匹配给定条件的行。

笛卡尔积

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

mysql> SELECT vend_name, prod_name, prod_price
    -> FROM vendors, products
    -> ORDER BY vend_name, prod_name;

在这里插入图片描述

不要忘了WHERE子句

保证所有联结都有WHERE子句,否则MySQL将返回比想要的数据多得多的数据

2.2 内部联结

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

在这里插入图片描述

2.3 联结多个表

SQL对一条SELECT语句中可以联结的表的数目没有限制

mysql> 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;

在这里插入图片描述

+++++++++++++结束线++++++++++++++++

下一篇:【MySQL必知必会(十三)】【创建高级联结

猜你喜欢

转载自blog.csdn.net/qq_42893334/article/details/108814831