四、mysql—DQL数据查询

本文详细介绍了SQL的基础查询、条件查询、排序、聚合函数、分组查询以及分页查询的语法和示例,涵盖了查询多个字段、去除重复记录、使用条件筛选数据、排序结果、使用聚合函数和分组统计等关键知识点。
摘要由CSDN通过智能技术生成

查询语法:
在这里插入图片描述

一、基础查询

  • 查询多个字段
SELECT 字段列表 FROM 表名;
SELECT * FROM 表名;
  • 去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
  • 起别名:
    AS:AS也可以省略

eg:在这里插入图片描述

-- 基础查询=============
-- 查询name age 两列
select name,age from stu;

-- 查询所有列的数据,列名的列表可以使用*代替,(一般不使用)
select * from stu;

-- 查询地址信息
select address from stu;

-- 去除重复记录
select DISTINCT address from stu;

-- 查询姓名,数学成绩,英语成绩
select name,math 数学成绩,english as 英语成绩 from stu;

二、条件查询

  • 条件查询语法
SELECT 字段列表 FROM 表名 WHERE 条件列表;

条件:
在这里插入图片描述

eg:
在这里插入图片描述

-- 条件查询========
-- 1、查询年龄大于20岁的成员信息
select * from stu where age > 20;

-- 2、查询年龄大于等于20岁 并且 年龄小于等于30岁的成员信息
select * from stu where age >= 20 and age <= 30;
select * from stu where age BETWEEN 20 and 30;

-- 3、查询入学日期在'1998-09-01'到'1999-09-01'之间的成员信息
select * from stu where hire_date BETWEEN '1998-09-01' and '1999-09-01';

-- 4、查询年龄等于18岁的成员信息
SELECT * from stu where age = 18;

-- 5、查询年龄不等于等于18岁的成员信息
SELECT * from stu where age != 18;
SELECT * from stu where age <> 18;

-- 6、查询年龄等于18 或者 年龄等于20岁 或者 年龄等于22岁的成员信息
SELECT * from stu where age = 18 or age = 20 or age = 22;
SELECT * from stu where age in (18,20,22);

-- 7、查询英语成绩为null的成员信息
-- 注意:null值的比较不能用=、!=  ,需要使用is、is not
select * from stu where english is null;
select * from stu where english is not null;
  • 模糊查询like
    通配符:
    (1) _ :代表单个任意字符
    (2) % :代表任意个数字符

eg:

-- 1、查询姓'马'的成员信息
SELECT * from stu where name like '马%';

-- 2、查询第二个字是'花'的成员信息
SELECT * from stu where name like '_花%';

-- 3、查询名字中包含'德'的成员信息 (常用)
SELECT * from stu where name like '%德%';

三、排序查询

  • 排序查询语法
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2]...;

排序方式:

  1. ASC:升序排列(默认值)
  2. DESC:降序排列

注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序

 -- 1、查询学生信息,按照年龄升序排列
SELECT * from stu ORDER BY age asc; 

-- 2、查询学生信息,按照数学成绩降序排列
SELECT * from stu ORDER BY math DESC; 
-- 3、查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列
SELECT * from stu ORDER BY math DESC,english ASC;

四、聚合函数

  1. 概念:将一列数据作为一个整体,进行纵向计算
  2. 分类:
    在这里插入图片描述
  3. 语法:
SELECT 聚合函数名(列名) FROM 表;

注意:null值不参与所有聚合函数运算
eg:

 -- 1、统计班级一共有多少个学生
select count(id) from stu; -- count统计的列名不能为空

-- 2、查询数学成绩的最高分
select max(math) from stu;

-- 3、查询数学成绩的最低分
select min(math) from stu;

-- 4、查询数学成绩的总分
select sum(math) from stu;

-- 5、查询数学成绩的平均分
select avg(math) from stu;

五、分组查询

  • 分组查询语法
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];

注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
where 和 having的区别:

  • 执行时机不一样:where是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。
  • 可判断的条件不一样:where不能对聚合函数进行判断,而having可以。
    执行顺序:where > 聚合函数 >having

eg:

-- 1、查询男同学和女同学各自的数学平均分
select sex,avg(math) from stu group by sex;

-- 2、查询男同学和女同学各自的数学平均分,以及各自人数
select sex,avg(math),count(*) from stu group by sex;

-- 3、查询男同学和女同学各自的数学平均分,以及各自的人数,要求:分数低于70分的不参与分组
select sex,avg(math),count(*) from stu where math > 70 group by sex;

-- 4、查询男同学和女同学各自的数学平均分,以及各自的人数,要求:分数低于70分的不参与分组,分组后人数大于2个的。
select sex,avg(math),count(*) from stu where math > 70 group by sex having count(*) > 2;

六、分页查询

  • 分页查询语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目数;

起始索引:从0开始
计算公式:起始索引 = (当前页码 - 1) * 每页显示的条数
eg:

-- 1、从0开始查询,查询3条数据
select * from stu limit 0,3;

-- 2、每页显示3条数据,查询第1页数据
select * from stu limit 0,3;

-- 3、每页显示3条数据,查询第2页数据
select * from stu limit 3,3;

-- 4、每页显示3条数据,查询第3页数据
select * from stu limit 6,3;

#计算公式:起始索引=(当前页码 - 1)*每页显示的条数

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值