SQL语句(三)之DQL

本文详细介绍了SQL中的DQL(Data Query Language)用于查询数据库记录的语法和用法,包括基础查询、条件查询、排序、聚合函数、分组与分页等。通过实例展示了如何从Student表中筛选、排序和聚合数据,帮助读者掌握SQL查询的基本技巧。
摘要由CSDN通过智能技术生成

SQL语句(三)

DQL:查询表中的记录

1.语法

select 字段列表

​ from 表名列表

​ where 条件列表

​ group by 分组字段

​ having 分组之后的条件

​ order by 排序

​ limit 分页限定

现有一张Student表:

idnameagegenderaddressmathenglishinsert_time
1张三三18上海80602020-10-15 14:27:55
2李四20北京82642020-10-15 14:27:55
3王五五30深圳90752020-10-15 14:27:55
4赵六25上海65692020-10-15 14:27:55
5田七23福州84932020-10-15 14:27:55

2.基础查询

select * from student; -- 查询表中所有内容
select name,address from student; -- 查询指定列
/*使用distinct去除重复的数据*/
select distinct address from student;
/*计算不同列的和,并给结果另起名字*/
--ifnull(exp1,exp2):如果exp1参数为null,那么就用exp2数值代替
SELECT NAME,math AS 数学,english AS 英语,IFNULL(math,0)+IFNULL(english,0) as 总分 FROM student;
--可以省略as
SELECT NAME,math 数学,english 英语,IFNULL(math,0)+IFNULL(english,0) 总分 FROM student;

3.条件查询

  • 1.where子句后跟条件
  • 2.运算符
比较运算符说明
< 、>、<=、>=、=、<><>表示“不等”,也可用!=,没有==
between…and比如between 10 and 100, 表示[10,100]
in(集合)集合表示多个值,用逗号分隔
LIKE ‘张%’模糊查询
is null查询某一列为null的值,不能使用=null
SELECT name 姓名,math 数学 from student WHERE math>75; -- 查询数学大于75的学生姓名及数学分数
SELECT name 姓名,math 数学 from student WHERE math BETWEEN 65 and 82;
SELECT name 姓名,address 地址 from student WHERE address IN("上海","北京");

/*查询某一列是否为空值,不能使用= null*/
SELECT name 姓名,english 英语 from student WHERE english is null;
SELECT name 姓名,english 英语 from student WHERE english is not null;

/*模糊查询like*/
SELECT name 姓名 FROM student WHERE name LIKE "赵%"; -- %表示多个占位符
SELECT name 姓名 FROM student WHERE name LIKE "%赵%"; -- 查询姓名中有赵的人
SELECT name 姓名 FROM student WHERE name LIKE "赵_"; -- _表示一个占位符
逻辑运算符说明
and
or
not
SELECT name 姓名,address 地址 from student WHERE address="北京" or address="上海";

4.排序查询

语法: order by 子句

  • order by 排序字段1 排序方式1, 排序字段2 排序方式2,…, 排序字段n 排序方式n;
SELECT * from student ORDER BY math; -- 默认升序排列
SELECT * from student ORDER BY math DESC; -- 降序排列
SELECT * from student ORDER BY math DESC, english DESC; -- 先按math降序排列,若math相等则按english排序

5.聚合函数

聚合函数:将一列作为一个整体进行纵向的计算

  • 1.count:计算个数
  • 2.max:计算最大值
  • 3.min: 计算最小值
  • 4.sum: 求和
  • 5.avg: 计算平均值

1.count:计算 个数

注意:一般选取非空的列:主键

SELECT count(NAME) from student; -- count函数会自动排除NULL

2.max/min:计算最大/最小值

SELECT MAX(math) 数学最高分 from student;
SELECT MIN(english) from student;

3.sum:求和

select sum(math) from student;

4.avg:求平均

select avg(english) from student;

6.分组查询

语法: group by 子句

-- 根据gender进行分组,分别计算两组的平均分
SELECT gender, AVG(math) from student GROUP BY gender;
-- 分别统计男女同学的人数
SELECT gender,COUNT(id) from student GROUP BY gender;
-- 分组前先进行条件限定
SELECT gender,COUNT(id) from student WHERE math>65 GROUP BY gender;
SELECT gender,COUNT(id) 人数 from student GROUP BY gender HAVING 人数>2;

注意: 1.分组之后查询的字段:分组字段、聚合函数。

2.where和having的区别?

①where在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不 满足条件则不会被查询出来。

②where不可以跟聚合函数判断,但是having可以使用聚合函数

7.分页查询

  • 1.语法:limit 开始的索引, 每页查询的条数;
  • 2.公式:开始的索引 = (当前页码 - 1) * 每页显示的条数
  • 3.分页操作中的limit语句是MySQL数据库
-- 每页显示三条记录
SELECT * FROM student LIMIT 0,3;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值