MySQL必知必會 第4-6章

第四章 檢索數(shù)據(jù)

4.1 SELECT語句

SELECT語句的用途是從一個或多個表中檢索信息储藐。為了使用SELECT語句檢索表數(shù)據(jù)余素,至少需要給出兩條信息——想選擇什么以及從什么地方選擇。

4.2 檢索單個列

輸入:
SELECT prod_name FROM products;
輸出:略
分析:從products表中檢索一個名為prod_name的列。

注意:

  • 以上輸出的數(shù)據(jù)是沒有排序的,其當(dāng)前序列可能使添加到表中的順序,也可能不是克蚂,沒有特殊含義。
  • 多條SQL語句必須以分號分割筋讨。MySQL如同多數(shù)DBMS埃叭,不需要在單條SQL語句后加分號,但加上分號也沒有壞處悉罕。
  • SQL語句不區(qū)分大小寫赤屋,因此SELECTselect是相同的,甚至Select也是相同的壁袄。但一般約定對所有SQL關(guān)鍵字使用大寫类早,對列和表名使用小寫,以便于調(diào)試與使用嗜逻。
  • 在處理SQL中涩僻,其中所有空格都被忽略,SQL可以在一行上給出栈顷,也可以分為多行逆日。
4.3 檢索多個列

在選擇多個列時,一定要在列名之間加上逗號萄凤,但在最后一個列名上不加屏富。
輸入:
SELECT prod_name, prod_price FROM products;
輸出:略
分析:從products表中檢索名為prod_nameprod_price的列。

4.4 檢索所有列

除了指定所需要的列外(一個或多個)蛙卤,SELECT語句還可以檢索所有的列而非逐個將其列出。這可以通過在實際列名的位置使用星號*通配符實現(xiàn)噩死。
輸入:
SELECT * FROM products;
輸出:略
分析:通過通配符(*)颤难,匹配出所有的列。除非確實需要表中的每個列已维,否則最好別使用通配符(*)行嗤,檢索 不需要的列通常會降低檢索和使用程序的性能。

4.5 檢索不同的行

SELECT返回所有匹配的行垛耳,如果想讓相同的行只出現(xiàn)一次栅屏,則需要使用DISTINCT關(guān)鍵字
輸入:
SELECT DISTINCT vend_id FROM products;
輸出:略
分析:DISTINCT關(guān)鍵字必須在列名前使用飘千。

4.6 限制結(jié)果

SELECT返回所有匹配的行,如果要控制返回的行數(shù)與行號,可以使用LIMIT關(guān)鍵字栈雳。
輸入:
SELECT prod_name FROM products LIMIT 5;
輸出:略
分析:此語句使用SELECT檢索單個列护奈,LIMIT 5指示MySQL返回不多于5行(至多0-4行)。

為得出下一個5行哥纫,可指定要檢索的開始行和行數(shù):
輸入:
SELECT prod_name FROM products LIMIT 5,5;
輸出:略
分析:LIMIT 5,5指示MySQL返回從行5開始的5行霉旗,第一個數(shù)字為開始位置,第二個數(shù)為要檢索的行數(shù)蛀骇。

注意:

  • 檢索的第一行為行0厌秒。因此,LIMIT 1擅憔,1檢索出來的是第二行鸵闪。
  • 在行數(shù)不夠時,MySQL返回其能夠提供的所有行暑诸。
  • MySQL 5 支持使用 LIMIT 4 OFFSET 3等價于 LIMIT 3蚌讼,4表示從行3開始取4行。
4.7 使用完全限定的表名

輸入:
SELECT products.prod_name FROM products;

SELECT products.prod_name FROM crashcourse.products;
輸出:略
分析:第一條語句完全限制了列名屠列,第二條語句還嚴格限制了表名啦逆。有一些情形需要完全限定名,現(xiàn)在笛洛,請知曉這個語法夏志。

第五章 排序檢索數(shù)據(jù)

5.1 排序數(shù)據(jù)

如果沒有明確規(guī)定排序順序,則不應(yīng)該假定檢索出的數(shù)據(jù)的順序有意義苛让。SQL語言由子句(clause)構(gòu)成沟蔑,有些子句是必須的,而有些是可選的狱杰,為了明確排序SELECT的檢索結(jié)果瘦材,可使用ORDER BY子句。
輸入:
SELECT prod_name FROM products ORDER BY prod_name;
輸出:略
分析:ORDER BY prod_name指示MySQL對SELECT語句的檢索結(jié)果以prod_name列字母順序進行排序仿畸。

注意:使用非檢索的列排序數(shù)據(jù)是完全合法的食棕。

5.2 按多個列排序

按多個列排序時,只需要指定列名错沽,列名間用逗號分隔開即可簿晓。使用前,注意理解其含義千埃,排序結(jié)果首先按照第一列排序憔儿,如果第一列結(jié)果相同,再按照第二列進行排序放可,以此類推谒臼。
輸入:
SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price, prod_name;
輸出:略
分析:對檢索結(jié)果先按照prod_price排序朝刊,二者相等時,再按照prod_name排序蜈缤。

5.3 指定排序方向

數(shù)據(jù)排序默認為升序排序拾氓,但可以使用DESC關(guān)鍵字指示MySQL對檢索結(jié)果以降序排序。
輸入:
SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC;
輸出:略
分析:對檢索結(jié)果按照prod_price以降序排序劫樟。

DESC關(guān)鍵字只應(yīng)用于直接位于其前面的列名痪枫。如果需要對多個列調(diào)整排序方式,則需要分別指定叠艳。
SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC, prod_name;
輸出:略
分析:對檢索結(jié)果按照prod_price以降序排序奶陈,prod_price相同時,按照prod_name以升序排列附较。

使用ORBER BY和LIMIT的組合吃粒,可以找到一個列中最大或最小值。
輸入:
SELECT prod_price FROM products ORDER BY prod_price DESC LIMIT 1;
輸出:略
分析:返回prod_price最大值拒课。

注意:

  • DESC相反的關(guān)鍵詞是ASC徐勃,由于排序默認是升序的,因此ASC很少使用早像。
  • 在字典排序中僻肖,A與a視為相同,這是默認行為卢鹦,如果需要改變這種行為臀脏,ORBER BY語句無法實現(xiàn),必須請求數(shù)據(jù)庫管理員更改配置冀自。
  • ORDER BY子句必須保證位于FROM子句之后揉稚。

第六章 過濾數(shù)據(jù)

6.1 使用WHERE子句

數(shù)據(jù)庫一般包含大量的數(shù)據(jù),很少需要檢索表中所有行熬粗。通常需要通過WHERE子句給檢索指定搜索條件(過濾條件)搀玖。
輸入:
SELECT prod_name, prod_price FROM products WHERE prod_price = 2.50;
輸出:略
分析:從products中檢索兩個列,并選取其中prod_price = 2.50 的列返回驻呐。

** 注意:**在同時使用ORDER BYWHERE子句時灌诅,應(yīng)讓ORDER BY位于WHERE之后。

6.2 WHERE子句操作符

MySQL允許的搜索條件不僅僅是相等測試含末,MySQL支持的所有操作符如下延塑。


6.2.1 檢索單個值

單引號用來限定字符串。如果將值與串類型的列進行比較答渔,則需要限定引號。用來與數(shù)值列進行比較時侥涵,則不需要使用引號沼撕。
輸入:
SELECT prod_name, prod_price FROM products WHERE prod_name = 'fuses';
輸出:略
分析:MySQL在匹配時不分大小寫宋雏,fusesFuses一行相匹配。

類似的务豺,我們可以分別修改WHERE子句為WHERE prod_price < 10WHERE prod_price <= 10 來指示MySQL檢索prod_price小于10磨总,或小于等于10的行。

6.2.2 不匹配檢查

輸入:
SELECT vend_id, prod_name FROM products WHERE vend_id <> 1003:
輸出:略
分析:列出的是不由供應(yīng)商1003制造的所有產(chǎn)品

6.2.3 范圍值檢查

為了檢查某個范圍的值笼沥,可以使用BETWEEN操作符蚪燕。其語法與其他WHERE子句稍有不同,需要提供兩個參數(shù)作為范圍最低值和最高值奔浅。
輸入:
SELECT prod_name, prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;
輸出:略
分析:BETWEEN的兩個參數(shù)由AND間隔開馆纳,5和10分別是開始值和結(jié)束值。

6.2.4 空值檢查

在創(chuàng)建表時汹桦,表設(shè)計人員可以指定其中的列是否可以不包含值鲁驶,一個列不包含值時,稱其值為空值NULL(與包含0舞骆、空字符串或僅包含空格不同)钥弯。用來檢測NULL值的是IS NULL子句。
輸入:
SELECT prod_name FROM products WHERE prod_price IS NULL;
輸出:略
分析:返回沒有價格的所有產(chǎn)品督禽。

注意:在匹配過濾和不匹配過濾時脆霎,并不返回NULL值的列。這是由于未知具有特殊含義狈惫,數(shù)據(jù)庫無法進行匹配睛蛛。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市虱岂,隨后出現(xiàn)的幾起案子玖院,更是在濱河造成了極大的恐慌,老刑警劉巖第岖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件难菌,死亡現(xiàn)場離奇詭異,居然都是意外死亡蔑滓,警方通過查閱死者的電腦和手機郊酒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來键袱,“玉大人燎窘,你說我怎么就攤上這事√憧В” “怎么了褐健?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我蚜迅,道長舵匾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任谁不,我火速辦了婚禮坐梯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘刹帕。我一直安慰自己吵血,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布偷溺。 她就那樣靜靜地躺著蹋辅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪亡蓉。 梳的紋絲不亂的頭發(fā)上晕翠,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機與錄音砍濒,去河邊找鬼淋肾。 笑死,一個胖子當(dāng)著我的面吹牛爸邢,可吹牛的內(nèi)容都是我干的樊卓。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼杠河,長吁一口氣:“原來是場噩夢啊……” “哼碌尔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起券敌,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤唾戚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后待诅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叹坦,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年卑雁,在試婚紗的時候發(fā)現(xiàn)自己被綠了募书。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡测蹲,死狀恐怖莹捡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情扣甲,我是刑警寧澤篮赢,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響启泣,放射性物質(zhì)發(fā)生泄漏媒咳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一种远、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧顽耳,春花似錦坠敷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至胰耗,卻和暖如春限次,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背柴灯。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工卖漫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赠群。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓羊始,卻偏偏與公主長得像,于是被迫代替她去往敵國和親查描。 傳聞我的和親對象是個殘疾皇子突委,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

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

  • 前言 一、基礎(chǔ)知識1.了解數(shù)據(jù)庫數(shù)據(jù)庫(database):保存有組織的數(shù)據(jù)的容器表(table):某種特定類型數(shù)...
    流水混帳閱讀 506評論 0 1
  • 數(shù)據(jù)庫入門 數(shù)據(jù)庫: 保存有組織的數(shù)據(jù)的容器(通常是一個文件或一組文件).數(shù)據(jù)庫軟件應(yīng)該稱為 DBMS(DataB...
    Mjericho閱讀 501評論 0 0
  • 1.表中的任何列都可以作為主鍵冬三, 只要它滿足以下條件:任意兩行都不具有相同的主鍵值匀油;每一行都必須具有一個主鍵值( ...
    Cherryjs閱讀 659評論 0 0
  • 第七章 數(shù)據(jù)過濾 7.1 組合WHERE子句 在第六章介紹的所有WHERE子句在過濾時,使用的都是單一的條件勾笆。為了...
    saviochen閱讀 425評論 0 4
  • 于是又到了梧桐絮飄滿校園的四月敌蚜,又到了梧桐色相簿的季節(jié),我們迎來了實習(xí)生招聘匠襟。 “范老濕從不寫代碼”钝侠,“范老濕從不...
    Lance_Van閱讀 733評論 0 1