SELECT (DISTINCT) */column 1, column 2 FROM table_name (, table 2...) WHERE condition 1 AND/OR condition 2
/distinct: 可選參數,表示在輸出結果中去除重複值
一、 上述基本語言有如下可拓展語言:
- ORDER BY:讓輸出結果以某種方式進行排序(一般以某列爲基準)
SELECT ... FROM... WHERE... ORDER BY column_name ASC/DESC
/ASC 升序 可以不寫,是默認項
/DESC 降序
-
- 簡化寫法:
SELECT
column 1, column 2...
FROM... WHERE... ORDER BY 1 ASC/DESC
/1表示select中制定的第一個字段,2、3、4以此類推
-
- 多列排序:
SELECT ... FROM... WHERE... ORDER BY column1 ASC/DESC,
column2 ASC/DESC
/同樣可以簡寫爲1、2、3
- COUNT: 統計表裏的記錄數量
SELECT COUNT((DISTINCT) */column_name) FROM... WHERE...
/count的參數是列名或者*
/distinct參數可以計數非重複項
- 訪問其他用戶的表
-
- 前提:獲得權限——GRANT
SELECT ... FROM user.table WHERE...
/user: 可以代指其他用戶、其他數據庫或者其他規劃
- 用字段別名來在查詢結果中代替原有的字段名,提高查詢結果的可讀性
SELECT column_name new_name FROM ... WHERE...
/new_name是新起的別名,用空格分隔
/這種改變只在select的結果裏反映,並沒有改變原有的表
二、WHERE條件詳述:
- 比較操作符:大於、小於、等於、不等於、大於等於、小於等於
- 邏輯操作符:用於對SQL關鍵字進行比較
-
- IS NULL
- BETWEEN...AND... (注意不是is between)
- IN(list): in的參數是一個list,用圓括號括起來(它比用or連接好幾個要快)
- LIKE: 利用通配符查找近似值,主要有以下兩種通配符
-
- %:用於替代0個、1個或多個字符
- _:用於替代一個字符or數字
- EXIST: 是否存在,它的參數是一個SQL查詢語句
SELECT ... FROM ... WHERE EXIST (
SELECT ... FROM... WHERE... )
/當exist語句爲true時再返回總的select結果,否則不返回
/要注意,並不是返回符合exist的參數語句的值,而是隻有它爲真時才返回值,具體返回什麼取決於select的字段和where的其他條件
-
- ALL:將一個值與一個集合內的所有值進行比較(要與比較操作符組合使用)
-
- 只有當對於集合內每一個值,給定字段和它進行比較的結果都爲true時返回該行(相當於好多個AND)
- ALL的參數一般是一個SQL查詢語句
SELECT ... FROM ... WHERE column_name >/< ALL(
SELECT ... FROM ... WHERE...)
-
- ANY: 將一個值與一個集合內的所有值進行比較
-
- 只要這個集合內有一個值比較結果爲true就返回該行(相當於好多個OR)
- 參數是 一個SQL查詢語句
- SOME: 和ANY一樣,是any的別名
- 連接操作符:AND、OR
- 求反操作符:NOT
- 算術操作符:加減乘除
三、查詢結果變形——彙總函數
用途:從各種角度對查詢結果進行簡單的統計分析
- COUNT函數:統計非空字段的數量
-
- 與DISTINCT連用可以去重
- 最後返回一個統計數字
SELECT COUNT() FROM ... WHERE...
- SUM函數:對指定字段的指定行的值進行求和,返回求和結果
SELECT SUM(column_name) FROM ... WHERE...
-
- 所處理的字段必須是數值型的
- 如果對象是字符型,有一些可以默認轉化爲數值型加總,不能的返回0
- AVG函數:求平均值
SELECT AVG(column_name) FROM ... WHERE...
- MAX函數:返回選定記錄中指定字段的最大值
SELECT MAX(column_name) FROM ... WHERE...
- MIN函數:返回選定記錄中指定字段的最小值,語法同上
以上函數都可以加上AS,來定義一個新的字段名稱存儲返回結果
SELECT MAX/SUM/MIN/AVG/COUNT(column_name) AS new_name FROM ... WHERE...