mysql创建表关联_MySQL创建高级联表教程
#MYSQL#這是我第七篇MySQL教程,本篇主要介紹的是如何創(chuàng)建高級聯(lián)表查詢,主要包括使用表的別名,和自連接,外連接,和使用聚合函數(shù)連接,已經如何創(chuàng)建鏈接的條件。希望對你有所幫助。
在MySQL中除了可以給計算字段起別名之外還可以給表取別名,這樣做主要目的有兩個,第一可以縮短SQL語句,第二允許在單條的SELECT語句中多次使用相同的表。就是說你想使用表里面的某一個字段是,你使用一個別名和使用數(shù)據(jù)庫表的全民來說要方便很多,也要簡潔很多??聪旅娴睦?。
可以看出來的是,customers去了別名之后在下一次使用的時候你就不需要去customers點出他的屬性了而是直接使用別名C點出數(shù)據(jù)庫表的屬性。需要注意的是表的別名和列的別名不一樣,表的別名是不會返回到客戶機的。
上一篇文章介紹了如何使用等值連接,現(xiàn)在來介紹其他幾種連接,先介紹一個應用場景,假如一個物品表,你發(fā)現(xiàn)存在一定的問題,你現(xiàn)在想知道這個供應商的其他物品是否也存在問題,這個場景你就先需要根據(jù)有問題的產品找到其供應商,然后根據(jù)供應商查詢出其他物品,這個可以根據(jù)子查詢很輕松的完成。
這只是一種解決辦法,我們還可以使用連接相同的查詢,此查詢語句實際上使用了同一張表,雖然是完全合法可行的,但是對表products進行了二次定義,使用MySQL不知道你是引用的實例是哪一個。為了解決這個問題就使用了別名p1和p2.通過WHERE連接兩個相同的表,進行過濾數(shù)據(jù),這個及時自連接的用法,即自己連接自己。
接下來就是自然連接的用法了,無論何時對表進行連接,應該至少有一個列出現(xiàn)不止在一個表中。自然連接的一個功能就是排除多次出現(xiàn)的結果,使每一個列只返回一次。自然連接就是對表使用通配符(SELECT *),對所有其他的列使用明確的子集來完成的,下面就一個例子。
在這個例子里面,通配符只對第一個表使用,所有其他列明確列出所以沒有重復的列被檢索出來。事實上,迄今為止我們建立的每個內部聯(lián)結都是自然連接,很可能 我們永遠都不會用到不是自然連接的內部聯(lián)結。
外部鏈接,在許多的連接里面,一個表中的行與另外一個表中的行是相關聯(lián)的,但是有時候會需要包含沒有關聯(lián)行的數(shù)據(jù),例如,對于一個訂單表來說,對每個客戶下單的數(shù)量進行統(tǒng)計,包括一些至今還沒有下訂單的客戶,比如列出所以產品以及訂購數(shù)量,包括至今沒有人訂購的產品。
在這些例子里面,連接就包括了那些在相關表中沒有關聯(lián)的行,這種類型就叫做外部鏈接。
類似于上一章中所看到的內部聯(lián)結,這條SELECT語句使用了關 鍵字OUTER JOIN來指定聯(lián)結的類型(而不是在WHERE子句中指 定)。但是,與內部聯(lián)結關聯(lián)兩個表中的行不同的是,外部聯(lián)結還包括沒 有關聯(lián)行的行。在使用OUTER JOIN語法時,必須使用RIGHT或LEFT關鍵字 指定包括其所有行的表(RIGHT指出的是OUTER JOIN右邊的表,而LEFT 指出的是OUTER JOIN左邊的表)。上面的例子使用LEFT OUTER JOIN從FROM 子句的左邊表(customers表)中選擇所有行。
外連接存在兩種基本的形式,左外連接和右外連接,他們之間的區(qū)別就是所連接的表的順序不一樣。具體要使用哪一種連接就是根據(jù)需求去定了。
總結
以上是生活随笔為你收集整理的mysql创建表关联_MySQL创建高级联表教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 修改mysql字符集 为utf8_修改m
- 下一篇: mysql resulttype_Mys