欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

最新MySQL高級SQL語句大全

 更新時間:2022年06月27日 16:11:55   作者:風(fēng)雪一更ing  
這篇文章主要介紹了MySQL高級SQL語句,主要包括常用查詢知識order by按關(guān)鍵字排序的sql語句,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

引言

對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)行分組處理。

  1. 對group by 后面的字段的查詢結(jié)果進(jìn)行匯總分組,通常是結(jié)合聚合函數(shù)一起使用的
  2. 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起到的作用:

  1. 創(chuàng)建了一個新表, 并定義表結(jié)構(gòu),插入表數(shù)據(jù)(與school表相同)
  2. 但是”約束“沒有被完全”復(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)文章

最新評論