MySQL-15联结表-必知必会

  • 关系表:保证把信息分解成多个表,一类数据一个表,各表通过某些常用的值互联关联

  • 主键:该表的唯一标识。 外键:为某个表中的一列,包含了另一个表的主键值

  • 可伸缩性:能够适应不断增加的工作量而不失败,设计良好的数据库==可伸缩性好/scale well

  • 联结:是一种机制,用来在一条SELECT语句中关联表,因此称之为联结。可以联结多个表返回一组输出。

  • **如何创建联结?**规定要连接的所有表以及如何将它们关联

    SELECT vend_name,prod_name,prod_prices 
    	FROM vendors,products WHERE vendors.vend_id = products.vend _id  通过这个完全限定名进行匹配
    		ORDER BY vend_name,prod_name;
    
  • 内部联结:以上属于等值联结,基于两个表之间的相等测试,也被称为内部联结。换一个语法:

    SELECT vend_name,prod_name,prod_prices
    	FROM vendors INNER JOIN products   不同
    		ON vendors.vend_id = products.vend _id;  不同
    

    ANSI SQL规范首选INNER JOIN语法,明确的使用联结语法能确保不会忘记联结条件

  • 联结多个表:首先列出所有的表,之后定义表之间的关系

    SELECT prod_name,vend_name,prod_prices,quantity
    	FROM orderitems,products,vendors
    		WHERE products.vend_id = vendors.vend_id
    			AND orderitems.prid_id = products.prod_id
    				AND order_num = 20005;
    

    不要联结过多的表,对性能影响大。

  • 14章的子查询可以改为联结查询

    SELECT cust_name,cust_contact FROM customers WHERE
    	(SELECT cust_id FROM orders WHERE order_num IN 
    		(SELECT order_num FROM orderitems WHERE prod_id = 'TNT2'));
    
    SELECT cust_name,cust_contact FROM customers,orders,orderitems
    	WHERE costomers.cust_id = orders.cust.id
    		AND orderitems.order_num = orders.order_num
    		AND prod_id = 'TNT2';
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值