首頁 > 軟體

最新MySQL高階SQL語句大全

2022-06-27 22:02:54

引言

對MySQL資料庫的查詢,除了基本的查詢外,有時候需要對查詢的結果集進行處理。例如只取10條資料、對查詢結果進行排序或分組等等。

一、常用查詢

1、order by按關鍵字排序

使用SELECT語句可以將需要的資料從MySQL資料庫中查詢出來,如果對查詢的結果進行排序,可以使用order by語句來對語句實現排序,並最終將排序的結果返回給使用者。這個語句的排序不光可以針對某一個欄位,也可以針對多個欄位。

語法:

select 欄位1,欄位2... from 表名 order by 欄位1,欄位2... asc   #查詢結果以升序方式顯示,asc可以省略
select 欄位1,欄位2... from 表名 order by 欄位1,欄位2,... desc #查詢結果以降序方式顯示

ASC是按照升序進行排序,是預設的排序方式,即ASC可以省略。SELECT語句中如果沒有指定具體的排序方式,則預設按ASC方式進行排序。DESC是按照降序方式進行排列。當然order by前面也可以使用where子句對查詢結果進一步過濾。

1.1 升序排序

select name ,score from report order by score;

1.2 降序排序

select name ,score from report order by score desc;

1.3 結合where進行條件過濾再排序

select name,score,address from report where address='hangzhou' order by score;

1.4 多欄位排序

ORDER BY 語句也可以使用多個欄位來進行排序,當排序的第一個欄位相同的記錄有多條的情況下,這些多條的記錄再按照第二個欄位進行排序,ORDER BY 後面跟多個欄位時,欄位之間使用英文逗號隔開,優先順序是按先後順序而定,但order by 之後的第一個引數只有在出現相同值時,第二個欄位才有意義。

select name,score,score2 from report order by score2,score desc;

此處做的實驗是先升序排序再降序排序,也可以都降序排序或者都升序排序,這裡就不做過多的例子了。

2、and/or判斷

在大型資料庫中,有時查詢資料需要資料符合某些特點條件
AND/OR 且/或 和shell指令碼中一樣使用方法

2.1 and/or 且與或的使用

select name,score,cardid from report where score>80;

select name,score,cardid from report where score>80 and score<90;
select name,score,cardid from report where score<60 or score>90;

2.2 巢狀、多條件使用

select name,score,cardid from report where score<60 or (score>70 and score<80);
select name,score,cardid from report where score<60 or (score>70 and score<=100) order by score desc;

3、distinct 查詢不重複記錄

select distinct 欄位 from 表名﹔
 distinct 必須放在最開頭
 distinct 只能使用需要去重的欄位進行操作
 distinct 去重多個欄位時,含義是:幾個欄位同時重複時才能被過濾,會預設按左邊第一個欄位為依據。

4、GROUP BY對結果進行分組

通過 SQL 查詢出來的結果,還可以對其進行分組,使用 GROUP BY 語句來實現 ,GROUP BY 通常都是結合聚合函數一起使用的,常用的聚合函數包括:計數(COUNT)、 求和(SUM)、求平均數(AVG)、最大值(MAX)、最小值(MIN),GROUP BY 分組的時候可以按一個或多個欄位對結果進行分組處理。

  1. 對group by 後面的欄位的查詢結果進行彙總分組,通常是結合聚合函數一起使用的
  2. group by 有一個原則,就是select 後面的所有列中,沒有使用聚合函數的列必須出現在 group by 的後面。
select 欄位,聚合函數 from 表名 (where 欄位名(匹配) 數值) group by 欄位名;

5、limit限制結果條目

limit 限制輸出的結果記錄

在使用 MySQL SELECT 語句進行查詢時,結果集返回的是所有匹配的記錄(行)。有時候僅需要返回第一行或者前幾行,這時候就需要用到 LIMIT 子句。

語法格式:
select 欄位 from 表名 limit [offset,] number
 
limit 的第一個引數是位置偏移量(可選引數),是設定 mysql 從哪一行開始
 
如果不設定第一個引數,將會從表中的第一條記錄開始顯示。
 
第一條偏移量是0,第二條為1
 
offset 為索引下標
 
number 為索引下標後的幾位

6、設定別名(alias—as)

在 mysql 查詢時,當表的名字比較長或者表內某些欄位比較長時,為了方便書寫或者多次使用相同的表,可以給欄位列或表設定別名,方便操作,增強可讀性。

列的別名  select 欄位 as 欄位別名 表名
 
表的別名 select 別名.欄位 from 表名 as 別名
 
as 可以省略

使用場景:

對複雜的表進行查詢的時候,別名可以縮短查詢語句的長度多表相連查詢的時候(通俗易懂、減短sql語句)

在為表設定別名時,要保證別名不能與資料庫中的其他表的名稱衝突。

列的別名是在結果中有顯示的,而表的別名在結果中沒有顯示,只在執行查詢時使用。

6.1 查詢表的記錄數量,以別名顯示

6.2 利用as,將查詢的資料匯入到另外一個表內

create table report2 as select * from report;
select * from report2;
select * from report;

此處as起到的作用:

  1. 建立了一個新表, 並定義表結構,插入表資料(與school表相同)
  2. 但是”約束“沒有被完全”複製“過來 #但是如果原表設定了主鍵,那麼附表的:default欄位會預設設定一個0

7、萬用字元

  • 萬用字元主要用於替換字串中的部分字元,通過部分字元的匹配將相關結果查詢出來。
  • 通常萬用字元都是跟LIKE一起使用的,並協同WHERE子句共同來完成查詢任務。
  • 常用的萬用字元有兩個,分別是:
%:百分號表示零個、一個或多個字元
_:下劃線表示單個字元

萬用字元“%”和“_”不僅可以單獨使用,也可以組合使用

到此這篇關於MySQL高階SQL語句的文章就介紹到這了,更多相關mysql sql語句內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com