sql必知必会12-联结表

作者: liluchang 分类: 数据库 发布时间: 2018-05-10 08:37

sql最强大的功能之一,就是在数据库查询执行中能联结表。

举个例子

select vend_name,prod_name,prod_price from vendors,products where vendors.vend_id = products.vend_id;

这条语句取出来三个字段,并且三个字段并不在一个表中。警告,联结表必须完全限定列名。不然DBMS会不知道选择哪个表中的列名。

如果我们没有去需求笛卡尔积的话,那么联结表中必须要有联结条件,不然会返回笛卡尔积(又称叉联结)。

上述列子使用的是等值联结,它基于两个表之间的相等测试,这种联结也称之为内联结。下面的select语句返回与上面例子完全相等的结果

select vend_name,prod_name,prod_price from vendors INNER JOIN products on vendors.vend_id = products.vend_id;

其中两个表之间的关系是以inner join 指定的from子句,而on的条件跟where的条件是完全一样的。具体使用哪种语法,请参考自己使用的DBMS。(join这个单词老打错!)

select语句完全可以联结多个表,但是联结的表越多,则性能下降的越厉害,虽然sql没有规定可以联结表的最多数量,但是DBMS可能有限制,具体请参考DBMS文档。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

标签云