MySQL——創(chuàng)建高級聯(lián)結(十)

MySQL是一個關系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā)祟辟,目前屬于 Oracle 旗下產(chǎn)品医瘫。MySQL 最流行的關系型數(shù)據(jù)庫管理系統(tǒng),在 WEB 應用方面MySQL是最好的 RDBMS (Relational Database Management System旧困,關系數(shù)據(jù)庫管理系統(tǒng)) 應用軟件之一醇份。

MySQL是一種關聯(lián)數(shù)據(jù)庫管理系統(tǒng)稼锅,關聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi)僚纷,這樣就增加了速度并提高了靈活性矩距。

MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標準化語言。MySQL 軟件采用了雙授權政策怖竭,它分為社區(qū)版和商業(yè)版锥债,由于其體積小、速度快痊臭、總體擁有成本低赞弥,尤其是開放源碼這一特點,一般中小型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫趣兄。由于其社區(qū)版的性能卓越绽左,搭配 PHP 和 Apache 可組成良好的開發(fā)環(huán)境。

一艇潭、使用不同類型的聯(lián)結

1.自聯(lián)結

自聯(lián)結通常作為外部語句來替代從相同表中檢索數(shù)據(jù)時使用的子查詢語句拼窥。雖然最終的結果是相同的,但有時候處理聯(lián)結比處理子查詢快得多蹋凝。
例如:假如發(fā)現(xiàn)某物品(其ID為DTNTR)存在問題鲁纠,因此想知道生產(chǎn)該物品的供應商生產(chǎn)的其他物品是否也存在這些問題。此查詢要求首先找到生產(chǎn)ID為DTNTR的物品的供應商鳍寂,然后找出這個供應商生產(chǎn)的其他物品改含。
方法一:

SELECT prod_id, prod_name FROM products WHERE vend_id = (SELECT vend_id FROM products WHERE prod_id = 'DTNTR');

此語句的輸出如下圖所示:



方法二(使用聯(lián)結):

SELECT p1.prod_id, p1.prod_name FROM products AS p1,products AS p2 WHERE p1.vend_id = p2.vend_id AND P2.prod_id = 'DTNTR';

此語句的輸出如下圖所示:


2.自然聯(lián)結

無論何時對表進行聯(lián)結,應該至少有一個列出現(xiàn)在不止一個表中(被聯(lián)結的列)迄汛。標準的聯(lián)結返回所有數(shù)據(jù)捍壤,甚至相同的列多次出現(xiàn)。自然連接排除多次出現(xiàn)鞍爱,使每個列只返回一次鹃觉。

自然聯(lián)結是這樣一種聯(lián)結,其中你只能選擇那些唯一的列睹逃。這一般是通過對表使用通配符(SELECT *)盗扇,對所有其他表的列使用明確的子集來完成的。示例如下:

SELECT c.*, o.order_num,o.order_date,oi.prod_id,oi.quantity,oi.item_price FROM customers AS c,orders AS o,orderitems AS oi WHERE c.cust_id=o.cust_id AND oi.order_num=o.order_num AND prod_id='FB';

3.外部聯(lián)結

許多聯(lián)結將一個表中的行與另一個表中的行相關聯(lián)沉填。但有時候會需要包含沒有關聯(lián)行的那些行疗隶。
內(nèi)部聯(lián)結如下:

SELECT customers.cust_id,orders.order_num FROM customers INNER JOIN orders ON customers.cust_id=orders.cust_id;

此語句的輸出如下圖所示:



外部聯(lián)結如下:

SELECT customers.cust_id,orders.order_num FROM customers LEFT OUTER JOIN orders ON customers.cust_id=orders.cust_id;

此語句的輸出如下圖所示:


二、使用帶聚集函數(shù)的聯(lián)結

例如:檢索所有客戶以及每個客戶所下的訂單數(shù)翼闹。

SELECT customers.cust_name,customers.cust_id, COUNT(orders.order_num) AS num_ord  FROM customers INNER JOIN orders ON customers.cust_id=orders.cust_id GROUP BY customers.cust_id;

此語句的輸出如下圖所示:

三斑鼻、使用聯(lián)結和聯(lián)結條件

(1)注意所使用的聯(lián)結類型。一般我們使用內(nèi)部聯(lián)結橄碾,但使用外部聯(lián)結也是有效的卵沉。
(2)保證使用正確的聯(lián)結條件颠锉,否則將返回不正確的數(shù)據(jù)。
(3)應該總是提供聯(lián)結條件史汗,否則會得出笛卡爾積琼掠。
(4)在一個聯(lián)結中可以包含多個表,甚至對于每個聯(lián)結可以采用不同的聯(lián)結類型停撞。雖然這樣做是合法的瓷蛙,一般也很有用,但應該在一起測試他們前戈毒,分別測試每個聯(lián)結艰猬。這將使故障排除更為簡單。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末埋市,一起剝皮案震驚了整個濱河市冠桃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌道宅,老刑警劉巖食听,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異污茵,居然都是意外死亡樱报,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門泞当,熙熙樓的掌柜王于貴愁眉苦臉地迎上來迹蛤,“玉大人,你說我怎么就攤上這事襟士〉领” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵敌蜂,是天一觀的道長箩兽。 經(jīng)常有香客問我,道長章喉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任身坐,我火速辦了婚禮秸脱,結果婚禮上,老公的妹妹穿的比我還像新娘部蛇。我一直安慰自己摊唇,他們只是感情好,可當我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布涯鲁。 她就那樣靜靜地躺著巷查,像睡著了一般有序。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上岛请,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天旭寿,我揣著相機與錄音,去河邊找鬼崇败。 笑死盅称,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的后室。 我是一名探鬼主播缩膝,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼岸霹!你這毒婦竟也來了疾层?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤贡避,失蹤者是張志新(化名)和其女友劉穎痛黎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贸桶,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡舅逸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了皇筛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琉历。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖水醋,靈堂內(nèi)的尸體忽然破棺而出旗笔,到底是詐尸還是另有隱情,我是刑警寧澤拄踪,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布蝇恶,位于F島的核電站,受9級特大地震影響惶桐,放射性物質(zhì)發(fā)生泄漏撮弧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一姚糊、第九天 我趴在偏房一處隱蔽的房頂上張望贿衍。 院中可真熱鬧,春花似錦救恨、人聲如沸贸辈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽擎淤。三九已至奢啥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嘴拢,已是汗流浹背桩盲。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留炊汤,地道東北人正驻。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像抢腐,于是被迫代替她去往敵國和親姑曙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內(nèi)容