前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL数据库基础(十):DQL数据查询语言

MySQL数据库基础(十):DQL数据查询语言

作者头像
Lansonli
发布2024-03-19 10:08:11
810
发布2024-03-19 10:08:11
举报
文章被收录于专栏:Lansonli技术博客Lansonli技术博客

DQL数据查询语言

一、数据集准备

代码语言:javascript
复制
CREATE TABLE product
(
    pid         INT PRIMARY KEY,
    pname       VARCHAR(20),
    price       DOUBLE,
    category_id VARCHAR(32)
);

插入数据:

代码语言:javascript
复制
INSERT INTO product VALUES (1,'联想',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查询

代码语言:javascript
复制
# 根据某些条件从某个表中查询指定字段的内容
格式:select [distinct]*| 列名,列名 from 表where 条件

三、简单查询

代码语言:javascript
复制
# 1.查询所有的商品.  
select *  from product;
# 2.查询商品名和商品价格. 
select pname,price from product;
# 3.查询结果是表达式(运算查询):将所有商品的价格+10元进行显示.
select pname,price+10 from product;

四、条件查询

1、比较查询
代码语言:javascript
复制
# 查询商品名称为“花花公子”的商品所有信息:
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、范围查询
代码语言:javascript
复制
# 查询商品价格在200到1000之间所有商品
SELECT * FROM product WHERE price BETWEEN 200 AND 1000;
# 查询商品价格是200或800的所有商品
SELECT * FROM product WHERE price IN (200,800);
3、逻辑查询
代码语言:javascript
复制
# 查询商品价格在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、模糊查询
代码语言:javascript
复制
# 查询以'香'开头的所有商品
SELECT * FROM product WHERE pname LIKE '香%';
# 查询第二个字为'想'的所有商品
SELECT * FROM product WHERE pname LIKE '_想%';
5、非空查询
代码语言:javascript
复制
# 查询没有分类的商品
SELECT * FROM product WHERE category_id IS NULL;
# 查询有分类的商品
SELECT * FROM product WHERE category_id IS NOT NULL;

五、排序查询

代码语言:javascript
复制
# 通过order by语句,可以将查询出的结果进行排序。暂时放置在select语句的最后。
格式:SELECT * FROM 表名 ORDER BY 排序字段 ASC|DESC;
ASC 升序 (默认)
DESC 降序

# 1.使用价格排序(降序)
SELECT * FROM product ORDER BY price DESC;
# 2.在价格排序(降序)的基础上,以分类排序(降序)
SELECT * FROM product ORDER BY price DESC,category_id DESC;

六、聚合查询

之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个单一的值;另外聚合函数会忽略空值。

学习如下五个聚合函数:

聚合函数

作用

count()

统计指定列不为NULL的记录行数;

sum()

计算指定列的数值和,如果指定列类型不是数值类型,则计算结果为0

max()

计算指定列的最大值,如果指定列是字符串类型,使用字符串排序运算;

min()

计算指定列的最小值,如果指定列是字符串类型,使用字符串排序运算;

avg()

计算指定列的平均值,如果指定列类型不是数值类型,则计算结果为0

案例演示:

代码语言:javascript
复制
# 1、查询商品的总条数
SELECT COUNT(*) FROM product;
# 2、查询价格大于200商品的总条数
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、分组查询介绍

分组查询就是将查询结果按照指定字段进行分组,字段中数据相等的分为一组。

分组查询基本的语法格式如下:

GROUP BY 列名 [HAVING 条件表达式] [WITH ROLLUP]

说明:

  • 列名: 是指按照指定字段的值进行分组。
  • HAVING 条件表达式: 用来过滤分组后的数据。
  • WITH ROLLUP:在所有记录的最后加上一条记录,显示select查询时聚合函数的统计和计算结果
2、group by的使用

group by可用于单个字段分组,也可用于多个字段分组

代码语言:javascript
复制
-- 根据gender字段来分组
select gender from students group by gender;
-- 根据name和gender字段进行分组
select name, gender from students group by name, gender;

① group by可以实现去重操作

② group by的作用是为了实现分组统计(group by + 聚合函数)

3、group by + 聚合函数的使用
代码语言:javascript
复制
-- 统计不同性别的人的平均年龄
select gender,avg(age) from students group by gender;
-- 统计不同性别的人的个数
select gender,count(*) from students group by gender;
4、group by + having的使用

having作用和where类似都是过滤数据的,但having是过滤分组数据的,只能用于group by

代码语言:javascript
复制
-- 根据gender字段进行分组,统计分组条数大于2的
select gender,count(*) from students group by gender having count(*)>2;

案例演示:

代码语言:javascript
复制
#1 统计各个分类商品的个数
SELECT category_id ,COUNT(*) FROM product GROUP BY category_id ;

#2 统计各个分类商品的个数,且只显示个数大于1的信息
SELECT category_id ,COUNT(*) FROM product GROUP BY category_id HAVING COUNT(*) > 1;

八、limit分页查询

分页查询在项目开发中常见,由于数据量很大,显示屏长度有限,因此对数据需要采取分页显示方式。例如数据共有30条,每页显示5条,第一页显示1-5条,第二页显示6-10条。

格式:

代码语言:javascript
复制
SELECT 字段1,字段2... FROM 表名 LIMIT M,N
M: 整数,表示从第几条索引开始,计算方式 (当前页-1)*每页显示条数
N: 整数,表示查询多少条数据
SELECT 字段1,字段2... FROM 表明 LIMIT 0,5
SELECT 字段1,字段2... FROM 表明 LIMIT 5,5

九、总结

条件查询:select *|字段名 form 表名 where 条件; 排序查询:SELECT * FROM 表名 ORDER BY 排序字段 ASC|DESC; 聚合查询函数:count(),sum(),max(),min(),avg()。 分组查询:SELECT 字段1,字段2… FROM 表名 GROUP BY 分组字段 HAVING 分组条件; 分页查询: SELECT 字段1,字段2... FROM 表名 LIMIT M,N M: 整数,表示从第几条索引开始,计算方式 (当前页-1)*每页显示条数 N: 整数,表示查询多少条数据

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DQL数据查询语言
    • 一、数据集准备
      • 二、select查询
        • 三、简单查询
          • 四、条件查询
            • 1、比较查询
            • 2、范围查询
            • 3、逻辑查询
            • 4、模糊查询
            • 5、非空查询
          • 五、排序查询
            • 六、聚合查询
              • 七、分组查询与having子句
                • 1、分组查询介绍
                • 2、group by的使用
                • 3、group by + 聚合函数的使用
                • 4、group by + having的使用
              • 八、limit分页查询
                • 九、总结
                相关产品与服务
                云数据库 MySQL
                腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档