MySQL笔记——DQL查询数据

DQL查询包括以下这些内容:
• 基础查询
• 条件查询(WHERE)
• 分组查询(GROUP BY)
• 排序查询(ORDER BY)
• 分页查询(LIMIT)

(一)、基础查询

1、查询多个字段
SELECT 字段列表 FROM 表名;
SELECT * FROM 表名;

当前表中数据如下:
在这里插入图片描述

2、去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;

直接查询表中address结果如下,可以看出有重复的地址信息出现:
在这里插入图片描述

去除重复记录
在这里插入图片描述

3、起别名
AS: AS也可以省略
在这里插入图片描述
在这里插入图片描述

(二)条件查询

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

2、条件在这里插入图片描述

查询年龄大于30的
	SELECT id,name,age,sex,address,math, english,hire_date from stu 	WHERE age>30;

在这里插入图片描述

-- 查询年龄大于等于30岁的信息
	SELECT id,name,age,sex,address,math, english,hire_date from stu WHERE age>=30;

在这里插入图片描述

-- 查询年龄大于等于30岁并且年龄小于等于50的信息
	SELECT id,name,age,sex,address,math, english,hire_date from stu WHERE age>=30 AND age<=50;

在这里插入图片描述

-- 查询年龄不等于30的
	SELECT id,name,age,sex,address,math, english,hire_date from stu WHERE age!=30;

在这里插入图片描述

-- 查询英语为null的
-- 注意:null值的比较不能使用 = !=,需要使用  is    is not
SELECT id,name,age,sex,address,math, english,hire_date from stu WHERE english is null;

在这里插入图片描述

LIKE 占位符:
	(1) _:代表单个任意字符
	(2)%:代表任意个数字符
	
-- 查询姓‘马’的
SELECT id,name,age,sex,address,math,english,hire_date FROM stu WHERE name like '马%';

在这里插入图片描述

-- 查询第二个字是‘花’的
SELECT id,name,age,sex,address,math,english,hire_date FROM stu WHERE name like '_花%';

在这里插入图片描述

-- 查询名字中有‘运’的
SELECT id,name,age,sex,address,math,english,hire_date FROM stu WHERE name like '%运%';

在这里插入图片描述

(三)排序查询

1、排序查询语法
	SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2]…;
	
	排序方式:
		ASC:升序排列(默认)
		DESC:降序排列
		
	注意: 如果有多个排序条件,当前边的条件值一样时,才会根据第二条进行排序
	
-- 查询年龄按照升序
SELECT id,name,age,sex,address,math,english,hire_date FROM stu ORDER BY age ASC;

在这里插入图片描述

-- 查询按照数学成绩降序排列
SELECT id,name,age,sex,address,math,english,hire_date FROM stu ORDER BY math DESC;

在这里插入图片描述

-- 查询,按数学成绩降序排列,如果数学成绩一样,再按照英语升序排列
SELECT id,name,age,sex,address,math,english,hire_date FROM stu ORDER BY math DESC,english ASC;

在这里插入图片描述

(四)聚合函数

1、聚合函数的概念
	将一列数据作为一个整体,进行纵向计算。
	
2、聚合函数的分类:

在这里插入图片描述

3、聚合函数的语法
	SELECT 聚合函数名(列名) FROM 表;
	注意:null值不参与所有聚合函数运算。
	
-- 统计指定列的数量
SELECT count(name) FROM stu;

在这里插入图片描述

english列中有一个数据为null,所以统计数量为9,因此,统计数据时要选用不为null的列。

推荐直接在括号内写*

在这里插入图片描述

-- 查询数学成绩最高的
SELECT max(math) FROM stu;

在这里插入图片描述

-- 查询数学成绩最低的
SELECT min(math) FEOM stu;

在这里插入图片描述

-- 求数学成绩总和
SELECT sum(math) FEOM stu;

在这里插入图片描述

-- 数学成绩平均值
SELECT avg(math) FEOM stu;

在这里插入图片描述

(五)分组查询

1、分组查询语句
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];
注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义。

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

查询男女生各自的数学平均分
SELECT avg(math) FROM stu GROUP BY sex;

在这里插入图片描述

查询男女生各自数学平均分,以及各自人数
SELECT avg(math),count(*) FROM stu GROUP BY sex;

在这里插入图片描述

查询男女生各自数学平均分,以及各自人数,要求:分数低于70不参与分组
SELECT avg(math),count(*) FROM stu WHERE math>=70 GROUP BY sex;

在这里插入图片描述

查询男女生各自数学平均分,以及各自人数,要求:分数低于70不参与分组,分组之后人数大于两个的。
SELECT avg(math),count(*) FROM stu WHERE math>=70 GROUP BY sex HAVING count(*)>2;

在这里插入图片描述

(六)分页查询

1、分页查询语法
	SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目数;
	起始索引:从0开始
	计算公式:起始索引=(当前页码-1) * 每页显示的条数
	
	提示:
		(1)分页查询limit是MySQL数据库的方言
		(2)Oracle分页查询使用rownumber
		(3)SQL server分页查询使用top
		
	
从0开始查询3条数据
SELECT id,name,age,sex,address,math,english,hire_date FROM stu LIMIT 0,3;

在这里插入图片描述

每页显示三条数据,查询第一页数据
SELECT id,name,age,sex,address,math,english,hire_date FROM stu LIMIT 0,3;

在这里插入图片描述

每页显示三条数据,查询第二页数据
SELECT id,name,age,sex,address,math,english,hire_date FROM stu LIMIT 3,3;

在这里插入图片描述

每页显示三条数据,查询第三页数据
SELECT id,name,age,sex,address,math,english,hire_date FROM stu LIMIT 6,3;

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值