《MySQL必知必会》15--22章 学习笔记

1、外键为某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系。通过外键查找:

SELECT vend_name, prod_name, prid_price FROM vendors, products WHERE vendors.vend_id = products.vend_id ORDER BY vend_name, prod_name;

在引用的列可能出现二义性,必须使用完全限定列名。

如果没有用WHERE子句进行条件过滤则返回的结果是笛卡尔积,即两个表行的乘积。

2、上条的语句所用的联结是等值联结,它基于两个表之间的相等测试,这种联结也成为内部联结。对于这种联结可以使用不同的语法:

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

ANSI SQL规范首先INNER JOIN语法。

3、SQL对一条SELECT语句中可以联结的表的数目没有限制,创建联结规则基本相同。

但MySQL在运行时关联指定的每个表以处理联结,这种处理可能很耗费资源,因此不要联结不必要的表,联结的表越多性能下降越厉害。

4、自联结

加入想查询ID为DTNTR的物品相同生产厂家的其他物品,可以采用子查询的方式:

SELECT prod_id, prod_name FROM products

WHERE vend_id = ( SELECT vend_id FROM products WHERE prod_id =‘DTNTR’);

也可以采用自联结的方式:

SELECT p1.prod_id, p1.prod_name FROM produc

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值