MySQL數(shù)據(jù)庫查詢排序方式
** 引言 **
對MySQL 數(shù)據(jù)庫的查詢,除了基本的查詢外,有時候需要對查詢的結果集進行處理。
例如只取10條數(shù)據(jù)、對查詢結果進行排序或分組等等。
一、按關鍵字排序
?使用select語句可以將需要的數(shù)據(jù)從 mysql 數(shù)據(jù)庫中查詢出來,如果對查詢的結果進行排序操作,可以使用 order by 語句完成排序,并且最終將排序后的結果返回給客戶。
這個語句的排序不光可以針對某一個字段,也可以針對多個字段。
?select 字段 from 表名 order by 字段 ASC|DESC? ?ASC|DESC? ?ASC 是按照升序進行排名的,是默認的排序方式,即ASC可以省略? ?DESC 是按照降序的方式進行排序的? ?order by 也可以通過 where 子句對查詢結果進行進一步的過濾? ?可進行多字段的排序
** 創(chuàng)建一個新的表 **

1.1 單字段排序
原表內(nèi)容

1.1.1 按分數(shù)排序,默認不指定是升序排序
select * from CS order by score; (asc默認省略)

1.1.2 按分數(shù)降序排序
select * from CS order by score desc;

結合where進行條件過濾,篩選地址是nanjing的學生按分數(shù)升序排列
select * from CS where address='nanjing' order by score;

1.2 多字段排序
ORDER BY 語句也可以使用多個字段來進行排序,當排序的第一個字段相同的記錄有多條的情況下,這些多條的記錄再按照第二個字段進行排序,ORDER BY 后面跟多個字段時,字段之間使用英文逗號隔開,優(yōu)先級是按先后順序而定,但order by 之后的第一個參數(shù)只有在出現(xiàn)相同值時,第二個字段才有意義。
1.2.1 查詢學生信息先按興趣id升序排列,相同分數(shù)的,id按降序排列
select * from CS order by hobbid,id desc;

1.2.2 查詢學生信息先按興趣id升序排列,相同分數(shù)的,id按升序排列
select * from CS order by hobbid,id;

1.3 區(qū)間判斷及查詢不重復記錄
1.3.1 AND/OR ——且/或的使用
select * from CS where id>2 and id<5; select * from CS where id>2 or id<5;

1.3,2 嵌套/多條件
select * from CS where id>2 or (id>3 and id <5); select * from CS where score <70 or (score >70 and score <100);

查看分數(shù)大于70 小于等于95的數(shù)據(jù)
select * from CS where score > 70 and score <=90;?
查看分數(shù)小于70 或者大于90的數(shù)據(jù),按降序顯示
select * from CS where score < 70 or score >90 order by score desc;

1.4 distinct 查詢不重復記錄
select distinct 字段 from 表名﹔
- distinct 必須放在最開頭
- distinct 只能使用需要去重的字段進行操作
- distinct 去重多個字段時,含義是:幾個字段同時重復時才能被過濾,會默認按左邊第一個字段為依據(jù)。
1.4.1 查看hobbid有多少種
select distinct hobbid from CS;

二、對結果進行分組
通過 SQL 查詢出來的結果,還可以對其進行分組,使用 GROUP BY 語句來實現(xiàn) ,GROUP BY 通常都是結合聚合函數(shù)一起使用的,常用的聚合函數(shù)包括:計數(shù)(COUNT)、 求和(SUM)、求平均數(shù)(AVG)、最大值(MAX)、最小值(MIN),GROUP BY 分組的時候可以按一個或多個字段對結果進行分組處理。
select 字段,聚合函數(shù) from 表名 (where 字段名(匹配) 數(shù)值) group by 字段名;
2.1 對hobbid進行分組查詢
并顯示最大的id
select hobbid,max(id) from CS group by hobbid;

2.2 按hobbid相同的分組
計算相同得的個數(shù)
select count(name),hobbid from CS group by hobbid;

2.3 結合where語句
篩選分數(shù)大于等于80的分組,計算學生個數(shù)
select count(name),score from CS where score > 80 group by score;

班同學成績表 count(name):計數(shù) score 分數(shù) : score>=80 :優(yōu)秀 score >=60 and score <80 :優(yōu) 結合order by把分數(shù)按降序排列 select count(name),score from gaojie where score > 80 group by score oeder by score desc;
三、限制結果條目
limit 限制輸出的結果記錄
在使用 MySQL SELECT 語句進行查詢時,結果集返回的是所有匹配的記錄(行)。
有時候僅 需要返回第一行或者前幾行,這時候就需要用到 LIMIT 子句
select 字段 from 表名 limit [offset,] number limit 的第一個參數(shù)是位置偏移量(可選參數(shù)),是設置 mysql 從哪一行開始 如果不設定第一個參數(shù),將會從表中的第一條記錄開始顯示。 第一條偏移量是0,第二條為1 offset 為索引下標 number 為索引下標后的幾位
3.1 查詢所有信息顯示前4行記錄
select * from CS limit 4;

3.2 從第4行開始
往后顯示3行內(nèi)容
select * from CS limit 3,3;

3.3 結合order by語句
按id的大小升序排列顯示前四行
select * from CS order by id limit 4;

四 、設置別名(alias ——》as)
在 mysql 查詢時,當表的名字比較長或者表內(nèi)某些字段比較長時,為了方便書寫或者多次使用相同的表,可以給字段列或表設置別名, 方便操作,增強可讀性。
列的別名 select 字段 as 字段別名 表名 表的別名 select 別名.字段 from 表名 as 別名 as 可以省略
使用場景:
1、對復雜的表進行查詢的時候,別名可以縮短查詢語句的長度
2、多表相連查詢的時候(通俗易懂、減短sql語句)
4.1 查詢gaojie表的記錄數(shù)量
以number顯示
select count(*) as number from CS;

4.2 AS 還可以作為連接語句的操作符
創(chuàng)建tab1表,將info表的查詢記錄全部插入t1表
create table CS1 as select * from CS;

此處AS起到的作用:
1、創(chuàng)建了一個新表t1 并定義表結構,插入表數(shù)據(jù)(與info表相同)
2、但是”約束“沒有被完全”復制“過來 #但是如果原表設置了主鍵,那么附表的:default字段會默認設置一個0
相似:
克隆、復制表結構
create table t1 (select * from info); #也可以加入where 語句判斷 create table test1 as select * from info where score >=60;
在為表設置別名時,要保證別名不能與數(shù)據(jù)庫中的其他表的名稱沖突。
列的別名是在結果中有顯示的,而表的別名在結果中沒有顯示,只在執(zhí)行查詢時使用。

總結
介紹了一些高階語句在數(shù)據(jù)表或者數(shù)據(jù)庫里面的用法,查東西更方便。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
MySQL Slave 觸發(fā) oom-killer解決方法
這篇文章主要介紹了MySQL Slave 觸發(fā) oom-killer解決方法,需要的朋友可以參考下2016-07-07
詳解數(shù)據(jù)庫_MySQL: mysql函數(shù)
這篇文章主要介紹了數(shù)據(jù)庫_MySQL: mysql函數(shù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-03-03

