亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

數據庫學習筆記——12聯結表

標簽:
MySQL

1 联结

1.1 关系表

关系表的设计就是要把信息分解成多个表,一类数据一个表。各表通过某些共同的值相互关联(所以才叫关系数据库)。

1.2 为什么使用联结

联结是一种机制,用来在一条SELECT语句中关联表,因此成为联结。
使用特殊的语法,可以联结多个表返回一组输出,联结在运行时关联表中正确的行。

2 创建联结

SELECT vend_name,prod_name,prod_price FROM vendors,products WHERE vendors.vend_id=products.vend_id

webp

jone.jpg


这条语句的FROM子句列出了两个表:vendors和products。这两个表用WHERE子句正确的联结。
vendors.vend_id=products.vend_id使用的是完全限定列名


2.1 WHERE子句的重要性

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

SELECT vend_name,prod_name,prod_price FROM vendors,products

webp

cartesian.png


提示:有时,返回笛卡尔积的联结,也称叉联结(cross join)。

2.2 内联结

以上使用的联结称为等值联结(equijoin),它基于两个表之间的相等测试。这种联结也称为内联结(inner join)。
SELECT vend_name,prod_name,prod_price FROM vendors INNER JOIN products ON vendors.vend_id = products.vend_id

webp

inner_join.png


2.3 联结多个表

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 = 20007

webp

multi_join.jpg


回顾第11课中的例子,列出订购产品“RGAN01”的顾客:
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 = 'RGAN01'));


使用联结:
SELECT cust_name,cust_contact FROM customers,orders,orderitems WHERE customers.cust_id = orders.cust_id AND orders.order_num = orderitems.order_num AND prod_id = 'RGAN01'

webp

example.png



作者:Love零O
链接:https://www.jianshu.com/p/e99524aed324


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消