MySQL必知必會筆記(十二) 聯結表

2021-09-26 03:47:07 字數 1934 閱讀 9857

輸入

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

輸出

笛卡爾積:由沒有聯結條件的表關係返回的結果為笛卡爾積。檢索出的行的數目將是第乙個表中的行數乘以第二個表中的行數:

輸入select vend_name,prod_name,prod_price from vendors,products order by vend_name,prod_name;

輸出

從上面的輸出中可以看到,相應的笛卡爾積不是我們想要的。應該保證所有聯結都有where子句,否則mysql將返回比想要的資料多得多的資料。

叉聯結:有時我們會聽到返回成為叉聯結的笛卡爾積的聯結型別。

目前為止所用的聯結成為等值聯結,它基於兩個表之間的相等測試。這種聯結也稱為內部聯結。

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

輸出

sql對一條select語句中可以聯結的表沒有限制。首先列出所有表,然後定義表之間的關係:

輸入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 = 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'));

輸出

而子查詢並不總是執行複雜select操作的最有效的方法,下面是使用聯結的相同查詢:

輸入select cust_name,cust_contact from customers,orders,orderitems where customers.cust_id = orders.cust_id and orderitems.order_num = orders.order_num and prod_id = 'tnt2';

輸出

SQL必知必會 第十二課 筆記 聯結表

第12課 聯結表 這一課會介紹什麼是聯結,為什麼使用聯結,如何編寫使用聯結的select語句。12.1 聯結 12.1.2 為什麼使用聯結 如果資料儲存在多個表中,怎樣用一條select語句就檢索出資料呢?答案是使用聯結。簡單說,聯結是一種機制,用來在一條select語句中關聯表,因此稱為聯結。使用...

SQL必知必會 聯結表

sql必知必會 讀書筆記 1.關係表 將這些資料與產品資訊分開儲存的理由市 關鍵是,相同的資料出現多次決不是一件好事,這是關聯式資料庫設計的基礎。關係表的設計就是要把資訊分解成多個表,一類資料乙個表。各表通過共同的值互相關聯 所以才叫關係資料框 所以建立兩個表 乙個儲存 商資訊,另乙個儲存產品資訊。...

MySQL必知必會 12MySQL聯結表

建立聯結 select vend name prod name prod price from vendors products where vendors vend id products vend id order by vend name prod name 在一條select語句中聯結幾個表...