mysql必知必会-复杂查询-联结表join

联结表

创建联结

select 字段1,字段2,字段3,……
from 表1,表2 从两个表中选取的所需指标名
where 表1中的字段1=表2中的字段1 通过两表的主键/外键联结(字段名前要加表名进行完全限定,否则会分不清是哪个表中的字段)
order by 字段1,字段2,…… 排序规则

selcet vend_name,prod_name,prod_price 
from vendors,products
where vendors.vend_id=products.vend_id
order by vend_name,prod_name;

where子句的重要性

使用where子句类似于excel的vlookup函数,只匹配两个列表中都存在的字段1的值,如果不使用where子句,将会出现笛卡尔积

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

内部联结

前面的联结称为等值联结,它基于两个表之间的相等测试,这种联结也称为内部联结
对于这种联结可以使用稍微不同的语法来明确的指定联结的类型。

select vend_name,prod_name,prod_price
from vendors inner join products
on vendors.vend_id=products.vend_id;

此语句中的select与前面的select语句相同,但是from子句不同。这里,两个表之间的关系是from子句的组成部分,以inner join指定。

联结多个表

SQL对一条select语句中可以联结的表的数目没有限制
创建联结的基本规则也相同。首先列出所有表,然后定义表之间的关系

select prod_name,vend_name,prod_price,quantity
from orderitems,products,vendors
where products.vend_id=vendors.vend_id
and orderitmes.prod_id=products.prod_id
and order_num =20005
select cust_name,cust_contact
from customers
where cust_id in (select cust_id from orders where order_num in (select order_num from orderitems where prod_id ='TNT2'))

创建高级联结

使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值