文章目錄
DQL數(shù)據(jù)查詢語言
一、數(shù)據(jù)集準備
二、select查詢
三、簡單查詢
四、條件查詢
1、比較查詢
2、范圍查詢
3、邏輯查詢
4、模糊查詢
5、非空查詢
五、排序查詢
六、聚合查詢
七、分組查詢與having子句
1、分組查詢介紹
2、group by的使用
3、group by + 聚合函數(shù)的使用
4、group by + having的使用
八、limit分頁查詢
九、總結(jié)
DQL數(shù)據(jù)查詢語言
一、數(shù)據(jù)集準備
CREATE TABLE product
(
pid INT PRIMARY KEY,
pname VARCHAR(20),
price DOUBLE,
category_id VARCHAR(32)
);
插入數(shù)據(jù):
INSERT INTO product VALUES (1,'聯(lián)想',5000,'c001');
INSERT INTO product VALUES (2,'海爾',3000,'c001');
INSERT INTO product VALUES (3,'雷神',5000,'c001');
INSERT INTO product VALUES (4,'杰克瓊斯',800,'c002');
INSERT INTO product VALUES (5,'真維斯',200,'c002');
INSERT INTO product VALUES (6,'花花公子',440,'c002');
INSERT INTO product VALUES (7,'勁霸',2000,'c002');
INSERT INTO product VALUES (8,'香奈兒',800,'c003');
INSERT INTO product VALUES (9,'相宜本草',200,'c003');
INSERT INTO product VALUES (10,'面霸',5,'c003');
INSERT INTO product VALUES (11,'好想你棗',56,'c004');
INSERT INTO product VALUES (12,'香飄飄奶茶',1,'c005');
INSERT INTO product VALUES (13,'海瀾之家',1,'c002');
二、select查詢
# 根據(jù)某些條件從某個表中查詢指定字段的內(nèi)容
格式:select [distinct]*| 列名,列名 from 表where 條件
三、簡單查詢
# 1.查詢所有的商品.
select * from product;
# 2.查詢商品名和商品價格.
select pname,price from product;
# 3.查詢結(jié)果是表達式(運算查詢):將所有商品的價格+10元進行顯示.
select pname,price+10 from product;
四、條件查詢
1、比較查詢
# 查詢商品名稱為“花花公子”的商品所有信息:
SELECT * FROM product WHERE pname = '花花公子';
# 查詢價格為800商品
SELECT * FROM product WHERE price = 800;
# 查詢價格不是800的所有商品
SELECT * FROM product WHERE price != 800;
SELECT * FROM product WHERE price <> 800;
# 查詢商品價格大于60元的所有商品信息
SELECT * FROM product WHERE price > 60;
# 查詢商品價格小于等于800元的所有商品信息
SELECT * FROM product WHERE price <= 800;
2、范圍查詢
# 查詢商品價格在200到1000之間所有商品
SELECT * FROM product WHERE price BETWEEN 200 AND 1000;
# 查詢商品價格是200或800的所有商品
SELECT * FROM product WHERE price IN (200,800);
3、邏輯查詢
# 查詢商品價格在200到1000之間所有商品
SELECT * FROM product WHERE price >= 200 AND price <=1000;
# 查詢商品價格是200或800的所有商品
SELECT * FROM product WHERE price = 200 OR price = 800;
# 查詢價格不是800的所有商品
SELECT * FROM product WHERE NOT(price = 800);
4、模糊查詢
# 查詢以'香'開頭的所有商品
SELECT * FROM product WHERE pname LIKE '香%';
# 查詢第二個字為'想'的所有商品
SELECT * FROM product WHERE pname LIKE '_想%';
5、非空查詢
# 查詢沒有分類的商品
SELECT * FROM product WHERE category_id IS NULL;
# 查詢有分類的商品
SELECT * FROM product WHERE category_id IS NOT NULL;
五、排序查詢
# 通過order by語句,可以將查詢出的結(jié)果進行排序。暫時放置在select語句的最后。
格式:SELECT * FROM 表名 ORDER BY 排序字段 ASC|DESC;
ASC 升序 (默認)
DESC 降序
# 1.使用價格排序(降序)
SELECT * FROM product ORDER BY price DESC;
# 2.在價格排序(降序)的基礎(chǔ)上,以分類排序(降序)
SELECT * FROM product ORDER BY price DESC,category_id DESC;
六、聚合查詢
之前我們做的查詢都是橫向查詢,它們都是根據(jù)條件一行一行的進行判斷,而使用聚合函數(shù)查詢是縱向查詢,它是對一列的值進行計算,然后返回一個單一的值;另外聚合函數(shù)會忽略空值。
學(xué)習(xí)如下五個聚合函數(shù):
聚合函數(shù) | 作用 |
---|---|
count() | 統(tǒng)計指定列不為NULL的記錄行數(shù); |
sum() | 計算指定列的數(shù)值和,如果指定列類型不是數(shù)值類型,則計算結(jié)果為0 |
max() | 計算指定列的最大值,如果指定列是字符串類型,使用字符串排序運算; |
min() | 計算指定列的最小值,如果指定列是字符串類型,使用字符串排序運算; |
avg() | 計算指定列的平均值,如果指定列類型不是數(shù)值類型,則計算結(jié)果為0 |
案例演示:
# 1、查詢商品的總條數(shù)
SELECT COUNT(*) FROM product;
# 2、查詢價格大于200商品的總條數(shù)
SELECT COUNT(*) FROM product WHERE price > 200;
# 3、查詢分類為'c001'的所有商品的總和
SELECT SUM(price) FROM product WHERE category_id = 'c001';
# 4、查詢分類為'c002'所有商品的平均價格
SELECT AVG(price) FROM product WHERE categ ory_id = 'c002';
# 5、查詢商品的最大價格和最小價格
SELECT MAX(price),MIN(price) FROM product;
七、分組查詢與having子句
1、分組查詢介紹
分組查詢就是將查詢結(jié)果按照指定字段進行分組,字段中數(shù)據(jù)相等的分為一組。
分組查詢基本的語法格式如下:
GROUP BY 列名 [HAVING 條件表達式] [WITH ROLLUP]
說明:
-
列名: 是指按照指定字段的值進行分組。
-
HAVING 條件表達式: 用來過濾分組后的數(shù)據(jù)。
-
WITH ROLLUP:在所有記錄的最后加上一條記錄,顯示select查詢時聚合函數(shù)的統(tǒng)計和計算結(jié)果
2、group by的使用
group by可用于單個字段分組,也可用于多個字段分組
-- 根據(jù)gender字段來分組
select gender from students group by gender;
-- 根據(jù)name和gender字段進行分組
select name, gender from students group by name, gender;
① group by可以實現(xiàn)去重操作
② group by的作用是為了實現(xiàn)分組統(tǒng)計(group by + 聚合函數(shù))
3、group by + 聚合函數(shù)的使用
-- 統(tǒng)計不同性別的人的平均年齡
select gender,avg(age) from students group by gender;
-- 統(tǒng)計不同性別的人的個數(shù)
select gender,count(*) from students group by gender;
4、group by + having的使用
having作用和where類似都是過濾數(shù)據(jù)的,但having是過濾分組數(shù)據(jù)的,只能用于group by
-- 根據(jù)gender字段進行分組,統(tǒng)計分組條數(shù)大于2的
select gender,count(*) from students group by gender having count(*)>2;
?案例演示:
#1 統(tǒng)計各個分類商品的個數(shù)
SELECT category_id ,COUNT(*) FROM product GROUP BY category_id ;
#2 統(tǒng)計各個分類商品的個數(shù),且只顯示個數(shù)大于1的信息
SELECT category_id ,COUNT(*) FROM product GROUP BY category_id HAVING COUNT(*) > 1;
八、limit分頁查詢
分頁查詢在項目開發(fā)中常見,由于數(shù)據(jù)量很大,顯示屏長度有限,因此對數(shù)據(jù)需要采取分頁顯示方式。例如數(shù)據(jù)共有30條,每頁顯示5條,第一頁顯示1-5條,第二頁顯示6-10條。
格式:
SELECT 字段1,字段2... FROM 表名 LIMIT M,N
M: 整數(shù),表示從第幾條索引開始,計算方式 (當前頁-1)*每頁顯示條數(shù)
N: 整數(shù),表示查詢多少條數(shù)據(jù)
SELECT 字段1,字段2... FROM 表明 LIMIT 0,5
SELECT 字段1,字段2... FROM 表明 LIMIT 5,5
九、總結(jié)
條件查詢:select *|字段名 form 表名 where 條件;
排序查詢:SELECT * FROM 表名 ORDER BY 排序字段 ASC|DESC;
聚合查詢函數(shù):count(),sum(),max(),min(),avg()。
分組查詢:SELECT 字段1,字段2… FROM 表名 GROUP BY 分組字段 HAVING 分組條件;
分頁查詢:
SELECT 字段1,字段2... FROM 表名 LIMIT M,N
M: 整數(shù),表示從第幾條索引開始,計算方式 (當前頁-1)*每頁顯示條數(shù)
N: 整數(shù),表示查詢多少條數(shù)據(jù)
-
??博客主頁:https://lansonli.blog.csdn.net
-
??歡迎點贊 ?? 收藏 ?留言 ?? 如有錯誤敬請指正!
-
??本文由 Lansonli 原創(chuàng),首發(fā)于 CSDN博客??文章來源:http://www.zghlxwxcb.cn/news/detail-832415.html
-
??停下休息的時候不要忘了別人還在奔跑,希望大家抓緊時間學(xué)習(xí),全力奔赴更美好的生活?文章來源地址http://www.zghlxwxcb.cn/news/detail-832415.html
到了這里,關(guān)于MySQL數(shù)據(jù)庫基礎(chǔ)(十):DQL數(shù)據(jù)查詢語言的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!