MySQL高階SQL語句(上)
一、SQL高階語句
1、 SELECT
顯示錶格中一個或數個欄位的所有資料
語法:SELECT "欄位" FROM "表名";
2、ORDER BY
按關鍵字排序
語法:SELECT "欄位" FROM "表名" [WHERE "條件"] ORDER BY "欄位" [ASC, DESC];
#ASC 是按照升序進行排序的,是預設的排序方式。
#DESC 是按降序方式進行排序。
3、DISTINCT
不顯示重複的內容
語法:SELECT DISTINCT "欄位" FROM "表名";
4 、AND OR
代表且、或、和的意思
語法:SELECT "欄位" FROM "表名" WHERE "條件1" {[AND|OR] "條件2"};
5、IN
顯示已知的值的內容
語法:SELECT "欄位" FROM "表名" WHERE "欄位" IN ('值1', '值2', ...);
6、 萬用字元
通常萬用字元都是跟 LIKE 一起使用的
萬用字元 | 代表的意思 |
---|---|
% | 百分號表示零個、一個或多個字元(相當於linux中的“*”號) |
_ | 下劃線表示單個字元(相當於linux中的“?”號) |
‘A_Z’ | 所有以 ‘A’ 起頭,另一個任何值的字元,且以 ‘Z’ 為結尾的字串。例如,‘ABZ’ 和 ‘A2Z’ 都符合這一個模式,而 ‘AKKZ’ 並不符合 (因為在 A 和 Z 之間有兩個字元,而不是一個字元)。 |
‘ABC%’ | 所有以 ‘ABC’ 起頭的字串。例如,‘ABCD’ 和 ‘ABCABC’ 都符合這個模式 |
‘%XYZ’ | 所有以 ‘XYZ’ 結尾的字串。例如,‘WXYZ’ 和 ‘ZZXYZ’ 都符合這個模式 |
‘%AN%’ | 所有含有 'AN’這個模式的字串。例如,‘LOS ANGELES’ 和 ‘SAN FRANCISCO’ 都符合這個模式 |
‘_AN%’ | 所有第二個字母為 ‘A’ 和第三個字母為 ‘N’ 的字串。例如,‘SAN FRANCISCO’ 符合這個模式,而 ‘LOS ANGELES’ 則不符合這個模式 |
7、limit
8 、LIKE
匹配一個模式來找出我們要的資料
語法:SELECT "欄位" FROM "表名" WHERE "欄位" LIKE {模式}
二、SQL函式
1、數學函式:
數學函式 | 返回的結果 |
---|---|
abs(x) | 返回 x 的絕對值 |
rand() | 返回 0 到 1 的隨機數 |
mod(x,y) | 返回 x 除以 y 以後的餘數 |
power(x,y) | 返回 x 的 y 次方 |
round(x) | 返回離 x 最近的整數 |
round(x,y) | 保留 x 的 y 位小數四捨五入後的值 |
sqrt(x) | 返回 x 的平方根 |
truncate(x,y) | 返回數字 x 截斷為 y 位小數的值 |
ceil(x) | 返回大於或等於 x 的最小整數 |
floor(x) | 返回小於或等於 x 的最大整數 |
greatest(x1,x2…) | 返回集合中最大的值 |
least(x1,x2…) | 返回集合中最小的值 |
2 、聚合函式:
數學函式 | 返回的結果 |
---|---|
avg() | 返回指定列的平均值 |
count() | 返回指定列中非 NULL 值的個數 |
min() | 返回指定列的最小值 |
max() | 返回指定列的最大值 |
sum(x) | 返回指定列的所有值之和 |
3 、字串函式:
數學函式 | 返回的結果 |
---|---|
trim() | 返回去除指定格式的值 |
concat(x,y) | 將提供的引數 x 和 y 拼接成一個字串 |
substr(x,y) | 獲取從字串 x 中的第 y 個位置開始的字串,跟substring()函式作用相同 |
substr(x,y,z) | 獲取從字串 x 中的第 y 個位置開始長度為 z 的字串 |
length(x) | 返回字串 x 的長度 |
replace(x,y,z) | 將字串 z 替代字串 x 中的字串 y |
upper(x) | 將字串 x 的所有字母變成大寫字母 |
lower(x) | 將字串 x 的所有字母變成小寫字母 |
left(x,y) | 返回字串 x 的前 y 個字元 |
right(x,y) | 返回字串 x 的後 y 個字元 |
repeat(x,y) | 將字串 x 重複 y 次 |
space(x) | 返回 x 個空格 |
strcmp(x,y) | 比較 x 和 y,返回的值可以為-1,0,1 |
reverse(x) | 將字串 x 反轉 |
4 、GROUP BY
對GROUP BY 後面的查詢結果進行彙總分組,通常是結合聚合函式一起使用
GROUP BY有個原則,select 後面的所有列中,沒有用聚合函式的列,必須出現在GROUP BY後面
語法:SELECT "欄位1", SUM("欄位2") FROM "表名" GROUP BY "欄位1";
5、別名
欄位別名 表格別名
語法:SELECT "表格別名"."欄位1" [AS] "欄位別名" FROM "表格名" [AS] "表格別名";
6、 EXISTS
用來測試內查詢有沒有產生任何結果,類似布林值是否為真
如果有的話,系統就會執行外查詢的SQL語句,若是沒有的話,那整個SQL語句就不會產生任何結果
語法:SELECT “欄位” FROM “表格1” WHERE EXISTS (SELECT * FROM "表格2" WHERE “條件”);