《mysql必知必會》讀書實戰筆記15-聯結查詢

第15章 聯結表

15.1聯結

聯結查詢(join),是SQL最強大的功能之一。

15.1.1關系表

關系數據庫,主鍵、外鍵。

15.2創建聯結

例:列出每個供應商的產品和價格:select vend_name,prod_name,prod_price from vendors,products where vendors.vend_id=products.vend_id order by vend_name,prod_name;

15.2.1笛卡爾積(叉聯結)

上面例子中,where子句作為聯結條件,如果不設聯結條件,將會出現笛卡爾積。

所有,注意:不要忘了使用,或不正確的使用where聯結條件。

笛卡爾積:不設聯結條件,查詢兩個表時,行數為兩個表行數相乘,列數為兩個表列數相加(如果顯示所有列時)。

例:select vend_name,prod_name,prod_price from vendors,products order by vend_name,prod_name;

15.2.2內部聯結(inner join)

上面第一個例子中,from 表A,表B where聯結條件,也可改為另一種格式,
內聯結:表A inner join 表B on 聯結條件

例:列出每個供應商的產品和價格:select vend_name,prod_name,prod_price from vendors inner join products on vendors.vend_id=products.vend_id order by vend_name,prod_name;

15.2.3聯結多個表

一條select語句中,可以聯結的表數目沒有限制,但是聯結表越多,查詢耗費資源越多,性能越下降厲害。

創建聯結的規則也相同:列出所有的表,然后定義表間關系。

例:顯示訂單20005中的所有貨品:select prod_name,vend_name,prod_price,quantity from products,orderitems,vendors where products.prod_id=orderitems.prod_id and products.vend_id=vendors.vend_id and order_num=20005;

再看第14章中的例子,可以改寫如下:
例:列出訂購TNT2貨品的所有客戶信息:select cust_name,cust_contact from customers,orderitems,orders where customers.cust_id=orders.cust_id and orders.order_num=orderitems.order_num and prod_id='TNT2';


《mysql必知必會》是一本好書,是一本sql語言入門書,豆瓣評分很高。

作者是英國的Ben Forta,世界知名的技術作家,由人民郵電出版社發行,我覺得原作名: MySQL Crash Course,直譯為:《MYSQL速成》更具暢銷書潛質,只是比較俗吧,呵呵。

書中從介紹簡單的數據檢索開始,逐步深入一些復雜的內容,包括聯結的使用、子查詢、正則表達式和基于全文本的搜索、存儲過程、游標、觸發器、表約束,等等。

前三章是基礎概念,講了SQL和數據庫的基本概念,Mysql數據庫的概念和使用方法,第四章開始SQL實操練習,這里是本書的一些實操練習筆記,有興趣的話可以按這個練習幾遍,相信對新手會很有幫助,讓你不經意間功力大增。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容