標籤:
聲明:本篇文章大多數內容出自《MySQL必知必會》,僅供學習參考,勿作他用!
第4章 檢索資料
4.1 SELECT語句
SELECT子句用於檢索資料庫中的表資料。它幾乎是MySQL中最常用的語句。我們一定要掌握好。為了能夠檢索表資料,必須至少給出兩條資訊 —— 想選擇什麼(表欄位,即列),以及從什麼地方選擇(哪張表)。
4.2 檢索單個列
輸入: select prod_name from products;
分析:
上述語句利用SELECT語句從products表中檢索一個名為prod_name的列。選擇什麼 —— prod_name列;從什麼地方選 —— products表。
形式: SELECT 列名 FROM 表名; (列應該是表中的列)
輸出:
注釋:
1 你可能得到不同的順序。這很正常。如果沒有排序的話,順序是隨機的。只要資料正確即可。
2 每一條SQL語句都應該以分號(英文)結尾。一 為了規範,二 如果是命令列則必須如此。
3 無論何種程式設計語言,文法中的符號都是英文下的(半形IME)。以後不再強調。
4 大小寫說明。MySQL中的SQL語句不區分大小寫。但是,為了規範,一般將關鍵字大寫,其它標識符小寫。如 SELECT prod_name FROM products;
我為了節省書寫博文的時間,便一律採用小寫了,請見諒。
4.3 檢索多個列
要想從一個表中檢索多個列,使用相同的SELECT語句。惟一的不同即SELECT關鍵字後跟多個列名,且這些列名之間要用逗號(英文的)隔開。
輸入: select prod_id, prod_name, prod_price from products;
分析: 沒啥分析的。
輸出:
4.4 檢索所有列
格式: SELECT * FROM 表名; 或者SELECT 列名1, 列名2... FROM 表名;
輸入:
select * from products;
或者
select prod_id, vend_id, prod_name, prod_price, prod_desc from products;
分析:
第一種方式採用了萬用字元*代表了所有列。第二種方式將所有列的列出了。
如果不是真的需要,不要為了方便使用*查詢。這樣會檢索到不需要的列,從而增加時間。
輸出:
方式一
方式二
4.5 檢所不同的行
正如所見,SELECT語句預設會返回所有匹配的行。而如果我們不想每個值每次都出現,怎麼辦?加入你想得出products表中的供應商的id
輸入: select vend_id from products;
輸出:
我們發現,相同的id多次出現。如果我們想解決這一問題,那麼就需要DISTINCT關鍵字。意思: 獨特的,不同的。
格式: SELECT DISTINCT 列名 FROM 表名;
輸入:
select distinct vend_id from products;
分析:
如果使用DISTINCT關鍵字,它必須直接放在列名前面。
如果DISTINCT後面接多個列名,則無效。
輸出:
4.6 限制結果
SELECT語句返回所有匹配的行,有時可能是指定表中所有的行。為了返回第一行或前幾行,可使用LIMIT關鍵字。
格式: SELECT 單列名或多個列名 FROM 表名 LIMIT 顯示的結果行數;
輸入: select prod_name from products limit 5;
分析: LIMIT 5指示MySQL返回的結果行數不得多於5條。
輸出:
如果想要顯示下一個5行,可以指定要檢索的開始行和行數。如下所示:
格式: SELECT 單列名或多個列名 FROM 表名 LIMIT 開始的索引(第一行的索引為0,第二行的索引為1...), 顯示的結果行數,
輸入: mysql> select prod_name from products limit 0,5;
分析:
limit A, B。從行5,即索引為0,結果的第1行開始擷取5行, 限制顯示條數不得多於B,
輸出:
注釋
1 行0: 如果是LIMIT A, B的格式。那麼檢索出來的第一行為行0,即索引為0,而非1. 如LIMIT 1, 1檢索出第二行而非第一行。
2 MySQL5的LIMIT文法: LIMIT A, B的格式很容易令人混淆,所以MySQL5.0支援LIMIT的另一種文法。LIMIT 結果顯示條數 OFFSET 索引(行N);
OFFSET是位移量的意思,即索引,行N。
輸入: select prod_name from products limit 5 offset 3;
分析:
limit 5 offst 3; 限制顯示結果條數為5,索引為3,從行3即第四行開始擷取。
輸出:
4.7 使用完全限定名
迄今為止使用的SQL例子只通過列名引用咧。也可能會使用完全限定名字來引用列(同時使用表名和列名)。請看下面例子:
格式: 完整列名 —— 列名.表名
輸入: select distinct products.vend_id from products;
分析: 結果與select distinct vend_id from products; 一致。
輸出:
表名也可以完全限定。
格式: 資料庫名.表名
輸入: select distinct vend_id from mysqlcrashcourse.products;
輸出:
有一些情形下需要使用完全限定名,這在之後的博文中會介紹。現在,我們需要注意這個文法,以便日後的學習與使用。
4.8 小結
本章學習了如何使用SELECT語句檢索表的單列、多列資料以及所有列。下一篇講講解如何排序檢索出來的資料。
菊子曰:專業的部落格營銷工具
MySQL資料庫學習02: SELECT語句