學習《MySQL必知必會》筆記三(14章-18章)

(敲黑板重點來了官帘,前面的內(nèi)容學過的可以不用溫習了盼铁,但接下來的內(nèi)容就非學不可啦
一醋粟、使用子查詢
1.利用子查詢進行過濾
例如與IN操作符結(jié)合使用,列出訂購物品TNT2的所有客戶


輸出:

2.作為計算字段使用子查詢
例如需要顯示customers表中每個客戶的訂單總數(shù)昌讲,訂單與相互的客戶ID存儲在orders表中国夜。
輸入:

輸出:

相關(guān)子查詢(涉及外部查詢的子查詢)
WHERE orders.cust_id=customers.cust_id,(完全限定列名)告訴SQL比較orders表中的cust_id與當前正從customers表中檢索的cust_id短绸。

二车吹、聯(lián)結(jié)表
SQL最強大的功能之一就是能在數(shù)據(jù)檢索查詢的執(zhí)行中聯(lián)結(jié)表。聯(lián)結(jié)是利用SQL的SELECT能執(zhí)行的最重要的操作醋闭。
聯(lián)結(jié)(join)
聯(lián)結(jié)是一種機制窄驹,用來在一條select語句中關(guān)聯(lián)表,因此稱之為聯(lián)結(jié)证逻。使用特殊的語法乐埠,可以聯(lián)結(jié)多個表返回一組輸出,聯(lián)結(jié)在運行時關(guān)聯(lián)表中正確的行囚企。
1.關(guān)系表里的概念
關(guān)系表的設(shè)計是要保證把信息分解成多個表丈咐,一類數(shù)據(jù)一個表,各表通過一定的關(guān)系互相關(guān)聯(lián)龙宏。
外鍵:外鍵為某個表中的一列棵逊,它包含另一個表的主鍵值,定義了兩個表之間的關(guān)系烦衣。
可伸縮性:能夠適應(yīng)不斷增加的工作量而不失敗歹河。
2.創(chuàng)建聯(lián)結(jié)(必須使用WHERE創(chuàng)建等值聯(lián)結(jié)不然會出現(xiàn)笛卡爾積)


與前面select語句不同的是vend_name在一個表掩浙,而prod_name和prod_price在另一個表花吟。
3.內(nèi)部聯(lián)結(jié)
基于兩個表之間相等測試的聯(lián)結(jié)稱為等值聯(lián)結(jié),也叫內(nèi)部聯(lián)結(jié)厨姚。
使用INNER JOIN創(chuàng)建等值聯(lián)結(jié)

4.連接多個表

三衅澈、創(chuàng)建高級聯(lián)結(jié)
1.使用表別名


2.使用不同類型的聯(lián)結(jié)
自聯(lián)結(jié),自然聯(lián)結(jié)和外部聯(lián)結(jié)
2.1自聯(lián)結(jié)
自聯(lián)結(jié)通常作為外部語句用來替代從相同表中檢索數(shù)據(jù)時使用的子查詢語句谬墙。雖然最終的結(jié)果是相同的今布,但有時候處理聯(lián)結(jié)遠比處理子查詢快得多。

2.2自然聯(lián)結(jié)
標準的聯(lián)結(jié)返回所有數(shù)據(jù)拭抬,甚至相同的列多次出現(xiàn)部默。自然聯(lián)結(jié)排除多次出現(xiàn),使每個列值返回一次造虎。

2.3外部聯(lián)結(jié)
與內(nèi)部聯(lián)結(jié)關(guān)聯(lián)兩個表中的行不同的是外部聯(lián)結(jié)還包括沒有關(guān)聯(lián)的行傅蹂。在使用OUTER JOIN時,必須使用RIGHT或LEFT關(guān)鍵字指定包括其所有行的表(RIGHT指出OUTER JOIN右邊的表,LEFT指出OUTER JOIN左邊的表)份蝴。

3.使用帶聚集函數(shù)的聯(lián)結(jié)
為說明這一點犁功,請看下面的例子,如果要檢索所有客戶及每個客戶所下的訂單數(shù)婚夫。
3.1INNER JOIN 內(nèi)部聯(lián)結(jié)

輸出結(jié)果:

3.2LEFT OUTER JOIN 外部聯(lián)結(jié)

輸出結(jié)果:

對比發(fā)現(xiàn):左外部聯(lián)結(jié)的結(jié)果顯示也包含了客戶Mouse House浸卦,它有0個訂單。
4.使用聯(lián)結(jié)和聯(lián)結(jié)條件

四案糙、組合查詢
1.組合查詢也通常稱為并(union)或復合查詢限嫌。
有兩種基本情況,其中需要使用組合查詢:
1)在單個查詢中從不同的表返回類似結(jié)構(gòu)的數(shù)據(jù)
2)對單個表執(zhí)行多個查詢侍筛,按單個查詢返回數(shù)據(jù)
2.創(chuàng)建組合查詢


將UNION換成UNION ALL可以包含不同SELECT子句選中的重復的列
UNION規(guī)則
1)UNION必須由兩條或兩條以上的SELECT語句組成萤皂,語句之間用關(guān)鍵字UNION分隔。
2)UNION中的 每個查詢必須包含相同的列匣椰、表達式或聚集函數(shù)
3)列數(shù)據(jù)類型可以不完全相同裆熙,但必須兼容
3.對組合查詢結(jié)果排序
ORDER BY必須出現(xiàn)在最后一條SELECT語句之后

五、全文本搜索


1.為了進行全文本搜索禽笑,必須索引被搜索的列入录,而且要隨著數(shù)據(jù)的改變不斷地重新索引; 1.1啟用全文本搜索支持:一般在創(chuàng)建表時啟用全文本搜索佳镜;create table 語句接收fulltext 子句僚稿,它給出被索引列的一個逗號分隔的列表;

1.2MySQL根據(jù)子句fulltext(note_text)的指示對它進行索引蟀伸。這里的fulltext索引單個列蚀同,如果需要也可以索引多個列;在定義之后啊掏,MySQL自動維護該索引蠢络。在增加、更新或刪除行時迟蜜,索引隨之自動更新刹孔;
2.進行全文本搜索:使用match()函數(shù)和against()函數(shù)執(zhí)行全文本搜索,其中Match()指定被搜索的列娜睛,Against()指定要使用的搜索表達式髓霞。

3.使用查詢擴展
查詢擴展(with query expansion)不止返回包含搜索詞的行,還返回與該行相關(guān)的行畦戒。
select note_text from productnotes where match(note_text) against('anvils' with query expansion) 方库;
4.布爾文本搜索
布爾搜索可以指定以下搜索條件:
1 要匹配的詞 2 要排斥的詞(包含該詞的行不返回,即使包含指定的詞)3 排列提示(詞的重要等級)4表達式分組
文本布爾操作符:

如匹配包含heavy但不包含任意以rope開始的詞的行:

全文本搜索的使用說明
1)在索引全文本數(shù)據(jù)時障斋,短詞被忽略且從索引中排除纵潦。短詞定義為具有3個或3個以下字符的詞(可以更改)
2)mysql帶有一個內(nèi)建的非用詞表,這些詞在全文本搜索中被忽略,
3)mysql規(guī)定了一條50%規(guī)則酪穿,如果一個詞出現(xiàn)在50%以上的行中凳干,則將它忽略,不使用與in boolean mode
4)如果表中的行少于3行被济,全文本搜索不返回結(jié)果(因為每次詞或者不出現(xiàn)箫柳,或者至少50%出現(xiàn))
5)忽略詞中的個單引號

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末帚呼,一起剝皮案震驚了整個濱河市允瞧,隨后出現(xiàn)的幾起案子名惩,更是在濱河造成了極大的恐慌,老刑警劉巖钮追,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件预厌,死亡現(xiàn)場離奇詭異,居然都是意外死亡元媚,警方通過查閱死者的電腦和手機轧叽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刊棕,“玉大人炭晒,你說我怎么就攤上這事∩牵” “怎么了网严?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長嗤无。 經(jīng)常有香客問我震束,道長,這世上最難降的妖魔是什么当犯? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任垢村,我火速辦了婚禮,結(jié)果婚禮上灶壶,老公的妹妹穿的比我還像新娘肝断。我一直安慰自己杈曲,他們只是感情好驰凛,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著担扑,像睡著了一般恰响。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涌献,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天胚宦,我揣著相機與錄音,去河邊找鬼。 笑死枢劝,一個胖子當著我的面吹牛井联,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播您旁,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼烙常,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鹤盒?” 一聲冷哼從身側(cè)響起蚕脏,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侦锯,沒想到半個月后驼鞭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡尺碰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年挣棕,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亲桥。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡穴张,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出两曼,到底是詐尸還是另有隱情皂甘,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布悼凑,位于F島的核電站偿枕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏户辫。R本人自食惡果不足惜渐夸,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望渔欢。 院中可真熱鬧墓塌,春花似錦、人聲如沸奥额。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽垫挨。三九已至韩肝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間九榔,已是汗流浹背哀峻。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工涡相, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人剩蟀。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓催蝗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親育特。 傳聞我的和親對象是個殘疾皇子生逸,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

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