日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL查询数据操作(DQL)

發布時間:2024/9/21 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL查询数据操作(DQL) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

查詢記錄

單表查詢SELECT語句完×××式:

SELECT select_expr [ , select_expr ... ]

[

FROM tbl_references

[WHERE 條件]

[GROUP BY {col_name | position} [ASC | DESC], ... 分組]

[HAVING 條件 對分組結果進行二次篩選]

[ORDER BY {col_name | position} [ASC | DESC], ...排序]

[LIMIT 限制顯示條數]

]


查詢表達式(select_expr)

1. 每一個表達式表示想要查詢的一列,至少有一列,多個列之間以逗號分隔

2. *表示所有列,tbl_name.*可以表示命名的所有列

3. [AS] alias_name 為其賦予別名

SELECT id, username, role FROM cms.cms_admin;

給字段起別名

例如:SELECT id AS '編號',username AS '用戶名',email AS '郵箱' FROM 表名; 查詢完后別名代替原名顯示。


WHERE條件

1. 比較 = < <= > >= != <> !

2. BETWEEN AND 、NOT BETEEN AND 指定范圍

IN、NOT IN 指定集合


3. 模糊查詢 LIKE

% :代表0個 1個 或多個任意字符

_ :代表1個任意字符

例如查詢姓王的用戶:

SELECT * FROM user WHERE username LIKE '王%';

查詢名字中含有in的用戶:

SELECT * FROM user WHERE username LIKE '%in%';

查詢名字長度為4的用戶:

SELECT * FROM user WHERE username LIKE '_ _ _ _';

查詢名字第二位是i的用戶:

SELECT* FROM user WHERE username LIKE '_i%';


當沒有使用%或_時 LIKE相當于等號,精準查詢。


4. 是否為空值IS NULL、IS NOT NULL

5. 多個查詢條件 AND ?OR

例如查詢用戶名為jack,密碼為123456的用戶:

SELECT * FROM user WHERE username='jack' AND password='123456';

查詢id大于等于3且年齡不為NULL的用戶:

SELECT * FROM user WHERE id>=3 AND age IS NOT NULL;

查詢id大于等于3,年齡不為NULL,proId等于3的用戶:

SELECT * FROM user WHERE id>=3 AND age IS NOT NULL AND proId=3;

查詢編號在5~10之間的,用戶名為4位的用戶:

SELECT * FROM user WHERE id BETWEEN 5 AND 10 AND username LIKE '____';

查詢用戶名以張開頭或者id為2或4的用戶

SELECT * FROM user WHERE username LIKE '張%' OR id IN(2, 4);


分組查詢GROUP BY

只會顯示各個組中的第一條記錄。

按照用戶所在省份分組proId:

SELECT * FROM user GROUP BY proId;

按照性別分組:

SELECT * FROM user GROUP BY sex;

按照字段位置分組:

SELECT * FROM user GROUP BY 7;(按照第7個位置的字段分組)

按照多個字段分組:

SELECT * FROM user GROUP BY sex,proId;(先按照sex分組,在sex中又以proId來分組。 )

通過WHERE條件篩選,再把結果分組

例如查詢id大于等于5的用戶按照sex分組:

SELECT * FROM user WHERE id>=5 GROUP BY sex;


GROUP_CONCAT(字段名稱) ? ? 得到某個字段詳情

GROUP BY配合GROUP_CONCAT()函數得到分組詳情

查詢id,sex,用戶詳情,按照sex分組

SELECT id,sex,GROUP_CONCAT(username) FROM user GROUP BY sex;

查詢proId、sex、regTime、username詳情,按proId分組、

SELECT proId,GROUP_CONCAT(username),GROUP_CONCAT(username),GROUP_CONCAT(sex),GROUP_CANCAT(regTime) FROM user GROUP BY proId;


聚合函數

COUNT() ? ? ?統計某個字段的總數

MAX() ? ? ? ? ?最大值

MIN() ? ? ? ? ? 最小值

AVG() ? ? ? ? ? 平均值

SUM() ? ? ? ? ?和

注意:COUNT(字段)不統計NULL值。

例如查詢id、sex、username詳情、組中總人數,并按sex分組:

SELECT id,sex,GROUP_CONCAT(username) AS users,COUNT(*) AS COUNT(*) AS totalUsers FROM user GROUP BY sex;

統計表中所有記錄總和:

SELECT COUNT(*) AS totalUsers FROM user;

查詢編號、性別、用戶名詳情,組中總人數,組中最大年齡,最小年齡,平均年齡,年齡總和,按性別分組:

SELECT id,sex,GROUP_CONCAT(username),

COUNT(*) AS total_users,

MAX(age) AS max_age,

MIN(age) AS min_age,

AVG(age) AS avg_age,

SUM(age) AS sum_age

FROM user

GROUP BY sex;


WITH ROLLUP聚合統計上面所有記錄

使用HAVING子句對分組結果進行二次篩選

WHERE是對記錄第一次篩選,HAVING子句是對分組結果的二次篩選

注意:HAVING子句只能配合分組使用才有意義,放在分組之后

例如查詢id>=2、sex、用戶名詳情、組中總人數、最大年齡、年齡總和:

SELECT id,sex,GROUP_CONCAT(username) AS users,

COUNT(*) AS totalUsers,

MAX(age) AS max_age,

SUM(age) AS sum_age

FROM user

--id大于等于2

WHERE id >=2

GROUP BY sex

-- 繼續篩選人數大于2的組并且最大年齡大于60

HAVING COUNT(*)>2 ?AND MAX(age)>60;


對查詢結果進行排序 ?ORDER BY

例如:按照id升序排序

SELECT * FROM user ORDER BY id ASC;

按照id降序排序

SELECT * FROM user ORDER BY id DESC;

按多字段排序

例如:按年齡升序,id降序排列

SELECT * FROM user ORDER BY age ASC,id DESC;

對結果隨機排序

SELECT * FROM user ORDER BY RAND();


限制查詢結果顯示條數 LIMIT

1.LIMIT 顯示條數

2.LIMIT 偏移量,顯示條數

查詢結果集 前三條記錄:

SELECT * FROM user LIMIT 3;

SELECT * FROM user ORDER BY id DESC LIMIT 3;

查詢表中前一條記錄:

SELECT * FROM user LIMIT 1;

實現分頁,偏移量+每頁顯示記錄數

SELECT * FROM user LIMIT 0,5; ?

SELECT * FROM user LIMIT 5,5; ?

SELECT * FROM user LIMIT 10,5;


總結:

SELECT id,sex,age,GROUP_CONCAT(username),

COUNT(*) AS totalUsers,

MAX(age) AS max_age,

MIN(age) AS min_age,

AVG(age) AS avg_age,

SUM(age) AS sum_age

FROM user

WHERE id>=1 ?根據條件第一次篩選

GROUP BY sex ?對篩選結果分組

HAVING COUNT(*)>=2 對查詢結果二次篩選

ORDER BY age DESC ?篩選結果按照age字段排序

LIMIT 0,2; ?限制顯示條數


轉載于:https://blog.51cto.com/zgw285763054/1879420

總結

以上是生活随笔為你收集整理的MySQL查询数据操作(DQL)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。