1. 程式人生 > 其它 >MySQL高階SQL語句(上)

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 “條件”);