最新MySQL高級SQL語句大全
引言
對MySQL數(shù)據(jù)庫的查詢,除了基本的查詢外,有時候需要對查詢的結(jié)果集進(jìn)行處理。例如只取10條數(shù)據(jù)、對查詢結(jié)果進(jìn)行排序或分組等等。
一、常用查詢
1、order by按關(guān)鍵字排序
使用SELECT語句可以將需要的數(shù)據(jù)從MySQL數(shù)據(jù)庫中查詢出來,如果對查詢的結(jié)果進(jìn)行排序,可以使用order by語句來對語句實現(xiàn)排序,并最終將排序的結(jié)果返回給用戶。這個語句的排序不光可以針對某一個字段,也可以針對多個字段。
語法:
select 字段1,字段2... from 表名 order by 字段1,字段2... asc #查詢結(jié)果以升序方式顯示,asc可以省略 select 字段1,字段2... from 表名 order by 字段1,字段2,... desc #查詢結(jié)果以降序方式顯示
ASC是按照升序進(jìn)行排序,是默認(rèn)的排序方式,即ASC可以省略。SELECT語句中如果沒有指定具體的排序方式,則默認(rèn)按ASC方式進(jìn)行排序。DESC是按照降序方式進(jìn)行排列。當(dāng)然order by前面也可以使用where子句對查詢結(jié)果進(jìn)一步過濾。
1.1 升序排序
select name ,score from report order by score;
1.2 降序排序
select name ,score from report order by score desc;
1.3 結(jié)合where進(jìn)行條件過濾再排序
select name,score,address from report where address='hangzhou' order by score;
1.4 多字段排序
ORDER BY 語句也可以使用多個字段來進(jìn)行排序,當(dāng)排序的第一個字段相同的記錄有多條的情況下,這些多條的記錄再按照第二個字段進(jìn)行排序,ORDER BY 后面跟多個字段時,字段之間使用英文逗號隔開,優(yōu)先級是按先后順序而定,但order by 之后的第一個參數(shù)只有在出現(xiàn)相同值時,第二個字段才有意義。
select name,score,score2 from report order by score2,score desc;
此處做的實驗是先升序排序再降序排序,也可以都降序排序或者都升序排序,這里就不做過多的例子了。
2、and/or判斷
在大型數(shù)據(jù)庫中,有時查詢數(shù)據(jù)需要數(shù)據(jù)符合某些特點條件
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 查詢不重復(fù)記錄
select distinct 字段 from 表名﹔ distinct 必須放在最開頭 distinct 只能使用需要去重的字段進(jìn)行操作 distinct 去重多個字段時,含義是:幾個字段同時重復(fù)時才能被過濾,會默認(rèn)按左邊第一個字段為依據(jù)。
4、GROUP BY對結(jié)果進(jìn)行分組
通過 SQL 查詢出來的結(jié)果,還可以對其進(jìn)行分組,使用 GROUP BY 語句來實現(xiàn) ,GROUP BY 通常都是結(jié)合聚合函數(shù)一起使用的,常用的聚合函數(shù)包括:計數(shù)(COUNT)、 求和(SUM)、求平均數(shù)(AVG)、最大值(MAX)、最小值(MIN),GROUP BY 分組的時候可以按一個或多個字段對結(jié)果進(jìn)行分組處理。
- 對group by 后面的字段的查詢結(jié)果進(jìn)行匯總分組,通常是結(jié)合聚合函數(shù)一起使用的
- group by 有一個原則,就是select 后面的所有列中,沒有使用聚合函數(shù)的列必須出現(xiàn)在 group by 的后面。
select 字段,聚合函數(shù) from 表名 (where 字段名(匹配) 數(shù)值) group by 字段名;
5、limit限制結(jié)果條目
limit 限制輸出的結(jié)果記錄
在使用 MySQL SELECT 語句進(jìn)行查詢時,結(jié)果集返回的是所有匹配的記錄(行)。有時候僅需要返回第一行或者前幾行,這時候就需要用到 LIMIT 子句。
語法格式: select 字段 from 表名 limit [offset,] number limit 的第一個參數(shù)是位置偏移量(可選參數(shù)),是設(shè)置 mysql 從哪一行開始 如果不設(shè)定第一個參數(shù),將會從表中的第一條記錄開始顯示。 第一條偏移量是0,第二條為1 offset 為索引下標(biāo) number 為索引下標(biāo)后的幾位
6、設(shè)置別名(alias—as)
在 mysql 查詢時,當(dāng)表的名字比較長或者表內(nèi)某些字段比較長時,為了方便書寫或者多次使用相同的表,可以給字段列或表設(shè)置別名,方便操作,增強(qiáng)可讀性。
列的別名 select 字段 as 字段別名 表名 表的別名 select 別名.字段 from 表名 as 別名 as 可以省略
使用場景:
對復(fù)雜的表進(jìn)行查詢的時候,別名可以縮短查詢語句的長度多表相連查詢的時候(通俗易懂、減短sql語句)
在為表設(shè)置別名時,要保證別名不能與數(shù)據(jù)庫中的其他表的名稱沖突。
列的別名是在結(jié)果中有顯示的,而表的別名在結(jié)果中沒有顯示,只在執(zhí)行查詢時使用。
6.1 查詢表的記錄數(shù)量,以別名顯示
6.2 利用as,將查詢的數(shù)據(jù)導(dǎo)入到另外一個表內(nèi)
create table report2 as select * from report; select * from report2; select * from report;
此處as起到的作用:
- 創(chuàng)建了一個新表, 并定義表結(jié)構(gòu),插入表數(shù)據(jù)(與school表相同)
- 但是”約束“沒有被完全”復(fù)制“過來 #但是如果原表設(shè)置了主鍵,那么附表的:default字段會默認(rèn)設(shè)置一個0
7、通配符
- 通配符主要用于替換字符串中的部分字符,通過部分字符的匹配將相關(guān)結(jié)果查詢出來。
- 通常通配符都是跟LIKE一起使用的,并協(xié)同WHERE子句共同來完成查詢?nèi)蝿?wù)。
- 常用的通配符有兩個,分別是:
%:百分號表示零個、一個或多個字符 _:下劃線表示單個字符
通配符“%”和“_”不僅可以單獨使用,也可以組合使用
到此這篇關(guān)于MySQL高級SQL語句的文章就介紹到這了,更多相關(guān)mysql sql語句內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql正確安全清空在線慢查詢?nèi)罩緎low log的流程分享
這篇文章主要介紹了正確安全清空在線慢查詢?nèi)罩緎low log的流程,需要的朋友可以參考下2014-02-02MySQL提示“too?many?connections“錯誤的解決過程
當(dāng)大量的connect之后,就會出現(xiàn)Too many connections的錯誤,下面這篇文章主要給大家介紹了關(guān)于MySQL提示“too?many?connections“錯誤的解決過程,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04Mysql如何導(dǎo)出篩選數(shù)據(jù)并導(dǎo)出帶表頭的csv文件
這篇文章主要介紹了Mysql如何導(dǎo)出篩選數(shù)據(jù)并導(dǎo)出帶表頭的csv文件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07Linux下MySQL5.7.18 yum方式從卸載到安裝過程圖解
這篇文章主要介紹了Linux下MySQL5.7.18 yum方式從卸載到安裝過程圖解,需要的朋友可以參考下2017-06-06Mysql存儲引擎MyISAM的常見問題(表損壞、無法訪問、磁盤空間不足)
這篇文章主要介紹了Mysql存儲引擎MyISAM的常見問題,針對表損壞、無法訪問、磁盤空間不足等問題進(jìn)行解決,感興趣的小伙伴們可以參考一下2016-05-05Window系統(tǒng)下自動備份MySql數(shù)據(jù)庫方法
Window下可以使用Bat批處理文件來對MySql進(jìn)行備份操作,備份時一般數(shù)據(jù)量較大的情況可以使用復(fù)制文件的方式,但是這種方式要求服務(wù)器停機(jī)或者停止寫入命令,不大使用2012-11-11