第十五章 連接表

來源:互聯網
上載者:User

標籤:建立   ems   應用   良好的   and   sel   條件   設計   維護   

學習目標:瞭解什麼是連接,為什麼要使用連接,如何編寫使用連接的SELECT語句。 連接:SQL最強大的功能之一就是能在資料檢索查詢的執行中連接(join)表。 關係表:關係表的設計就是要保證把資訊分解成多個表,一類資料 一個表。各表通過某些常用的值(即關係設計中的關係(relational))互相關聯。 外鍵(foreign key)外鍵為某個表中的一列,它包含零一個表的主索引值,定義了兩個表之間的關係。 延展性(scale)能夠適應不不斷增加的工作量而不失敗。設計良好的資料庫或應用程式稱之為延展性好(scale well)。 為什麼要使用連接:為瞭解決用單條SELECT語句檢索出儲存在多個表中的資料。 維護參考完整性:連接不是物理實體,它在實際的資料庫表中不存在。連接是由MySQL根據需要建立, 它存在於查詢的執行當中。 在使用關係表時,僅在關係列中插入合法的資料非常重要。如果products表中插入擁有非法供應商ID(即沒有在venders表中出現)的供應商生產的產品,則這些產品是不可以訪問的,因為它們沒有關聯到某個供應商。 為了防止這種情況的發生,可指示MySQL只允許在products表的供應商ID列出現合法值(及出現在venders表中的供應商)。這就是維護參考完整性,它是通過表的定義中指定主鍵和外鍵來實現的。 建立連接:連接的建立非常簡單,規定要連接的所有表及它們如何關聯即可。 SELECT vend_name, prod_name,prod_priceFROM vendors, productsWHERE vendors.vend_id = products.vend_id (完全限定列名)ORDER BY vend_name, prod_name; WHERE子句的重要性:WHERE子句作為過濾條件指示MySQL如何對錶進行連接。 笛卡爾積(cartesian product):由沒有連接條件的表關係返回的結果為笛卡爾積。檢索出的行的數目將是第一個表中的行數乘以第二個表中的行數。 SELECT vend_name, prod_name,prod_priceFROM vendors, productsORDER BY vend_name, prod_name; 不要忘了WNERE子句,應該保證所有連接都有WHERE子句,否則MySQL將返回比想要的資料多得多的資料。同理,應該保證WHERE子句的正確性。不正確的過濾條件將導致MySQL返回不正確的資料。 叉連接(cross join) 內部連接(equijoin):目前為止所用的連接稱為等值連接(equijoin),它基於兩個表之間的 相等測試。這種連接也稱為內部連接。 SELECT vend_name, prod_name,prod_priceFROM vendors INNER JOIN productsON vendors.vend_id = products.vend_id; ANSI SQL規範首選INNER JOIN文法。 連接多個表:SQL對一條SELECT語句中可以連接的表的數目沒有限制。建立連接的基本規則也相同。 Q:顯示編號為20005的訂單中的物品。SELECT `prod_name`, vend_name, prod_price, quantityFROM orderitems, products, vendorsWHERE products.vend_id = vendors.vend_idAND orderitems.`prod_id` = products.`prod_id`AND order_num = 20005; 效能考慮:MySQL在運行時關聯指定的每個表以處理連接。這種處理可能是非常耗費資源的,因此應該仔細,不要連接不必要表。連接的表越多,效能下降的越厲害。  ##Q返回訂購產品TNT2的客戶列表;語句的書寫層次,從外到裡。SELECT cust_name, cust_contactFROM customers, orders, orderitemsWHERE  customers.cust_id = orders.cust_idAND orderitems.order_num = orders. order_numAND prod_id = ‘TNT2‘;

第十五章 連接表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.