SELECT與FROM用於基礎的檢索,基本語法爲:sql
SELECT column_name,column_name,column_name...column_name FROM table_name;
注:默認不排序;sql不區分大小寫,可是建議SQL關鍵字使用大寫,本文遵照此規則;建議每一個SQL寫完後跟上「;」,本文遵照此規則。數據庫
檢索全部列:函數
SELECT * FROM table_name;
注:*會默認返回全部列的內容,不建議使用*,由於會檢索全部內容形成沒必要要的性能浪費。性能
檢索不一樣值:spa
SELECT DISTINCT column_name,column_name...column_name FROM table_name;
注:DISTINCT關鍵字做用於全部列,既對全部檢索的列名都進行排它。code
限制結果:blog
SELECT column_name FROM table_name LIMIT x; SELECT column_name FROM table_name LIMIT x OFFSET y;
注:LIMIT表示檢索多少行,OFFSET表示從第幾行數據開始(第一行數據的下標爲0),x與y都是數字(int)排序
ORDER BY的基本用法:ci
SELECT column_name FROM table_name ORDER BY column_name;
注:數據庫自己的查詢順序是無心義的(雖然大部分會按照默認順序排列,可是隨着數據的刪除等操做,會致使順序最終無心義,因此就默認爲無心義的)字符串
子句:由SQL的關鍵字與對應的數據組成。例如SELECT子句與FROM子句。
ORDER BY子句的位置應該爲SELECT的最後(除正序、倒序關鍵字外)
ORDER BY也能夠對非選擇列(不是SELECT子句檢索的列)進行排序。
進行多個列檢索時:
SELECT column_name FROM table_name ORDER BY column1_name, column2_name;
注:僅當column1_name一致時纔會對column2_name進行排序,若是column1_name都是惟一的至關於僅對column1_name排序。
升降序檢索:
SELECT column_name FROM table_name ORDER BY column_name DESC/ASC, column2_name;
注:降序:DESC 升序:ASC 默認就是升序的。
升降序關鍵字僅影響其前面的列。
操做符:= != >= <= > < BETWEEN(AND) IS NULL
僅對單個值過濾
SELECT column_name FROM table_name WHERE column_name OPERATION condition;
注:condition什麼時候使用引號呢? 僅限限定字符串時才須要使用引號,通常使用單引號便可。
BETWEEN condition1 AND condition2 在限定範圍時,該關鍵字包含限定的兩個條件。
WHERE AND OR IN NOT
多個限定條件的過濾:
SELECT column_name FROM table_name WHERE () AND/OR ();
注:()表示限定的條件。
AND要求兩個條件都符合。
OR要求二者符合其一便可,多數DBMS在OR知足條件1時就不在計算第二個條件了。
AND與OR會有默認的求值順序,即AND操做符優於OR操做符,當過濾條件>=3個的時候就要注意操做符順序了,可使用()來強制要求順序,好習慣就是忽略默認順序,優先使用()。
IN操做符的用法:
SELECT column_name FROM table_name WHERE column_name IN (condition1, confition2, ..., conditionN);
IN操做符與OR的做用是相同的,可是具備如下優勢:
1.語法更加直觀清晰。
2.求值順序更加容易管理。
3.IN操做符比一組OR操做順序快。
4.IN能夠包含其餘SELECT語句(後面同步)。
NOT操做符的用法:
SELECT column_name FROM table_name WHERE NOT ();
NOT僅否認跟在其後的條件。NOT與IN聯合使用時會更有優點。
LIKE %
通配符:用來匹配值得一部分的特殊字符。
搜索模式:由字面值和通配符或二者組合構成的搜索條件。
注:使用通配符必須配合LIKE操做符。
百分號(%)通配符:
SELECT column_name FROM table_name WHERE column_name LIKE 'String%'
注:上面的語句將檢索column_name以String內容開頭的數據。
‘%String’: 匹配以String內容結尾的數據
'%String%': 匹配包含String內容的數據
'String%String' 匹配以String內容開始,以String結尾內容的數據
%匹配0、1和多個字符。且不能匹配到NULL。
下劃線(_)通配符:
注:下劃線與%的做用相同,可是僅匹配單個字符。
通配符使用注意事項:
1.通配符使用要適度。
2.儘可能不要在搜索的開頭使用通配符。
3.注意通配符的位置。
拼接字段與計算字段都是將多個列的數據進行組合查詢。
Concat(col, ...) AS + - * /
SELECT Concat(city_name, '(', country_name, ')') AS city_country FROM area ORDER BY city_name
注:由於拼接字段拼接後沒法被客戶端直接引用,因此使用AS關鍵字(別名,別名儘可能與列名不一樣),方便客戶端引用。
SELECT prod_id, quantity, item_price, quantity*item_price AS expanded_price FROM orderItems WHERE order_num = 100
注:計算字段有四個:+ - * /
因爲不一樣的數據庫中對函數的支持不一樣,因此具體的函數能夠再使用的時候去查詢,如下以MySQL爲準
函數:
提取字符串的組成:SUBSTRING()
類型轉換:CONVERT()
當前日期:CURDATE()
如下爲統計函數
獲取某列的平均值:AVG()
獲取某列的行數:COUNT()
獲取某列最大值:MAX()
獲取某列最小值:MIN()
獲取某列值之和:SUM()
注:COUNT(ROW)與COUNT(*) *是會計算庫中全部的數據,ROW只會計算有值的數據(會忽略爲null)
使用統計時,使用DISTINCT時,會排除不一樣的值,COUNT(DISTINCT ROW)排除ROW中有相同的值。
GROUP BY HAVING