MS SQL SERVER 基礎教程——操作多個表貼)

來源:互聯網
上載者:User
到現在為止,你只嘗試了用一句SQL查詢從一個表中取出資料。你也可以用一個SELECT語句同時從多個表中取出資料,只需在SELECT語句的FROM從句中列出要從中取出資料的表名稱即可:

SELECT au_lname ,title FROM authors, titles

這個SELECT語句執行時,同時從表authors和表titles中取出資料。從表authors中取出所有的作者名字,從表titles中取出所有的書名。在ISQL/w程式中執行這個查詢,看一下查詢結果。你會發現一些奇怪的出乎意料的情況:作者的名字並沒有和它們所著的書相匹配,而是出現了作者名字和書名的所有可能的組合,這也許不是你所希望見到的。

出了什麼差錯?問題在於你沒有指明這兩個表之間的關係。你沒有通過任何方式告訴SQL如何把表和表關聯在一起。由於不知道如何關聯兩個表,伺服器只能簡單地返回取自兩個表中的記錄的所有可能組合。

要從兩個表中選出有意義的記錄組合,你需要通過建立兩表中欄位的關係來關聯兩個表。要做到這一點的途徑之一是建立第三個表,專門用來描述另外兩個表的欄位之間的關係。

表authors有一個名為au_id的欄位,包含有每個作者的唯一標識。表titles有一個名為title_id的欄位,包含每個書名的唯一標識。如果你能在欄位au_id和欄位title_id 之間建立一個關係,你就可以關聯這兩個表。資料庫pubs中有一個名為titleauthor的表,正是用來完成這個工作。表中的每個記錄包括兩個欄位,用來把表titles和表authors關聯在一起。下面的SELECT語句使用了這三個表以得到正確的結果:

SELECT au_name,title FROM authors,titles,titleauthor

WHERE authors.au_id=titleauthor.au_id

AND titles.title_id=titleauthor.title_id

當這個SELECT語句執行時,每個作者都將與正確的書名相匹配。表titleauthor指明了表authors和表titles的關係,它通過包含分別來自兩個表的各一個欄位實現這一點。第三個表的唯一目的是在另外兩個表的欄位之間建立關係。它本身不包含任何附加資料。

注意在這個例子中欄位名是如何書寫的。為了區別表authors和表titles中相同的欄位名au_id,每個欄位名前面都加上了表名首碼和一個句號。名為author.au_id 的欄位屬於表authors,名為titleauthor.au_id的欄位屬於表titleauthor,兩者不會混淆。

通過使用第三個表,你可以在兩個表的欄位之間建立各種類型的關係。例如,一個作者也許寫了許多不同的書,或者一本書也許由許多不同的作者共同完成。當兩個表的欄位之間有這種“多對多”的關係時,你需要使用第三個表來指明這種關係。

但是,在許多情況下,兩個表之間的關係並不複雜。比如你需要指明表titles和表publishers之間的關係。因為一個書名不可能與多個出版商相匹配,你不需要通過第三個表來指明這兩個表之間的關係。要指明表titles和表publishers之間的關係,你只要讓這兩個表有一個公用的欄位就可以了。在資料庫pubs中,表titles和表publishers都有一個名為pub_id的欄位。如果你想得到書名及其出版商的一個列表,你可以使用如下的語句:

SELECT title,pub_name FROM titles,publishers

WHERE titles.pub_id=publishers.pub_id

當然,如果一本書是由兩個出版商聯合出版的,那麼你需要第三個表來代表這種關係。

通常,當你予Crowdsourced Security Testing道兩個表的欄位間存在“多對多”關係時,就使用第三個表來關聯這兩個表。反之,如果兩個表的欄位間只有“一對一”或“一對多”關係,你可以使用公用欄位來關聯它門。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.