chapter15:聯(lián)結(jié)表

聯(lián)結(jié)

聯(lián)結(jié)(join)是SQL最強大功能之一。

關(guān)系表

看一個例子:假如有一個包含產(chǎn)品目錄的數(shù)據(jù)庫表饲宛,其中每種類別的物品占一行皆愉。對于每種物品要存儲的信息包括產(chǎn)品描述和價格,供應(yīng)商信息。
現(xiàn)在幕庐,假如有同一供應(yīng)商生產(chǎn)的多種物品久锥,將這些數(shù)據(jù)與產(chǎn)品信息分開存儲的理由如下:

  • 供應(yīng)商信息相同,對每個產(chǎn)品重復(fù)此信息浪費异剥;
  • 如果供應(yīng)商信息改變瑟由,只需改動一次;
  • 如果有重復(fù)數(shù)據(jù)冤寿,很難保證每次輸入該數(shù)據(jù)的方式相同歹苦。
    關(guān)系表設(shè)計就是要保證把信息分解成多個表,一類數(shù)據(jù)一個表督怜,各表通過某些常用的值互相關(guān)聯(lián)殴瘦。

在這個例子中,可以建立兩個表号杠,一個存儲供應(yīng)商信息蚪腋,另一個存儲產(chǎn)品信息。

vendors表包含所有供應(yīng)商信息姨蟋,每個供應(yīng)商占一行屉凯,每個供應(yīng)商具有唯一標(biāo)識。此標(biāo)識成為主鍵(primary key)眼溶。

products表存儲產(chǎn)品信息神得,除了供應(yīng)商ID(vendors的主鍵)外不存儲其他供應(yīng)商信息。

vendors表的主鍵又叫做products的外鍵偷仿,將兩表關(guān)聯(lián)起來哩簿,利用供應(yīng)商ID能從vendors表中找出相應(yīng)供應(yīng)商的詳細(xì)信息。

外鍵(foreign key):外鍵為某個表中的一列酝静,它包含另一個表的主鍵值节榜,定義了兩個表之間的關(guān)系。

創(chuàng)建聯(lián)結(jié)

例:

SELECT vend_name, prod_name, prod_price
FROM vendors, products
WHERE vendors.vend_id = products.vend_id
ORDER BY vend_name, prod_name;

1鹬恰:使用完全限定列名宗苍。

WHERE子句的重要性

WHERE子句作為過濾條件,它只包含那些匹配給定條件的行薄榛。

笛卡爾積(cartesian product):由沒有聯(lián)結(jié)條件的表返回的結(jié)果為笛卡爾積讳窟。檢索出的行的數(shù)目將是第一個表中的行數(shù)乘以第二個表中的行數(shù)。
例:

SELECT vend_name, prod_name, prod_price
FROM vendors, products
ORDER BY vend_name, prod_name;

內(nèi)部聯(lián)結(jié)

以上均為等值聯(lián)結(jié)(equijoin)敞恋,它基于兩個表之間的相等測試丽啡。這種聯(lián)結(jié)也稱為內(nèi)部聯(lián)結(jié)。

聯(lián)結(jié)多個表

SQL對一條SELECT語句可以聯(lián)結(jié)的表數(shù)目沒有限制硬猫。規(guī)則也相同补箍,首先列出所有表改执,然后定義表之間的關(guān)系。例:

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;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坑雅,一起剝皮案震驚了整個濱河市辈挂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌裹粤,老刑警劉巖终蒂,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異遥诉,居然都是意外死亡后豫,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進(jìn)店門突那,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挫酿,“玉大人,你說我怎么就攤上這事愕难≡绻辏” “怎么了?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵猫缭,是天一觀的道長葱弟。 經(jīng)常有香客問我,道長猜丹,這世上最難降的妖魔是什么芝加? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮射窒,結(jié)果婚禮上藏杖,老公的妹妹穿的比我還像新娘。我一直安慰自己脉顿,他們只是感情好蝌麸,可當(dāng)我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著艾疟,像睡著了一般来吩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蔽莱,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天弟疆,我揣著相機與錄音,去河邊找鬼盗冷。 笑死怠苔,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的正塌。 我是一名探鬼主播嘀略,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼乓诽!你這毒婦竟也來了帜羊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鸠天,失蹤者是張志新(化名)和其女友劉穎讼育,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體稠集,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡奶段,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了剥纷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痹籍。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖晦鞋,靈堂內(nèi)的尸體忽然破棺而出蹲缠,到底是詐尸還是另有隱情,我是刑警寧澤悠垛,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布线定,位于F島的核電站,受9級特大地震影響确买,放射性物質(zhì)發(fā)生泄漏斤讥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一湾趾、第九天 我趴在偏房一處隱蔽的房頂上張望芭商。 院中可真熱鬧,春花似錦搀缠、人聲如沸蓉坎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛉艾。三九已至,卻和暖如春衷敌,著一層夾襖步出監(jiān)牢的瞬間勿侯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工缴罗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留助琐,地道東北人。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓面氓,卻偏偏與公主長得像兵钮,于是被迫代替她去往敵國和親蛆橡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,107評論 2 356

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