檢索兩要點:
- 檢索什麼
- 從哪裏檢索
語法就是
SELECT 列名 #檢索哪一列
FROM 表 #從哪張表檢索
現在有一個表,名爲products。我們看一下這張表裏有哪些列(字段)
DESCRIBE products;
看到有vend_id列(供應商id),好,現在來看看這一列是什麼樣的
SELECT vend_id
FROM products;
可以看到vend_id列中的數據,你會發現裏面有很多重複的供應商id,現在我想看看總共有幾個供應商,用DISTINCT關鍵字來過濾掉重複的數據
SELECT DISTINCT vend_id
FROM products;
發現供應商一共就4家。
注意:DISTINCT不能部分運用,如果是置於多個列名前
SELECT DISTINCT vend_id, prod_name
FROM products;
DISTINCT將會過濾的是兩列都相同的數據,一個列數據相同,另一個不同,則當做不同。把這兩列當成一個元組來看(vend_id, prod_name)。
以上都是檢索單個列的,那麼能不能檢索多個列呢??
很簡單,列名之間加逗號就行,不過最後一個列名不要加,否則報錯
SELECT prod_id, vend_id, prod_name
FROM products
當然,如果你想看下整張表的內容,可以使用通配符*
SELECT *
FROM products;
Tips:
- SQL不區分大小寫,但是習慣上,關鍵字要大寫,列名和表名小寫
- SQL語句會省略空行,因此爲了閱讀體驗,建議像上面那樣多行書寫
- SQL語句結尾用分號;
- 由於上面都沒有按照某種順序檢索,因此得出的數據的順序是沒有意義的
上面我們檢索列的時候都是把該列所有行都檢索出來,但其實我們可以選擇其中的一部分行來檢索。使用LIMIT關鍵字就能實現部分檢索
SELECT vend_id
FROM products
LIMIT 5
顯示一共輸出了5行,但是這是從行0(即第一行)開始的。我們是可以選擇開始行的。LIMIT 5 == LIMIT 0,5 意爲從行0開始的5行
格式: LIMIT 開始行, 行數
如果我們檢索超過最大行數會怎樣?不怎麼樣,超過部分直接忽略,最大多少就是多少。比如一共13行,現在從行10取5行LIMIT 10, 5
但實際上得到的只能是行10,行11,行12 這三行,而不是5行