MySql 单表查询sql语句(二)

上一篇博客讲了单表查询的一部分sql语句,下面接着讲单表查询的下部分,而且这部分特别的重要,直接入正题,先创建一张学生表

CREATE TABLE student(
id INT,
NAME VARCHAR(20),
chinese FLOAT,
english FLOAT,
math FLOAT
);


然后往表中插入一些值  方便我们演示一些sql语句

INSERT INTO student(id,NAME,chinese,english,math) VALUES(1,'张小明',89,78,90);
INSERT INTO student(id,NAME,chinese,english,math) VALUES(2,'李进',67,53,95);
INSERT INTO student(id,NAME,chinese,english,math) VALUES(3,'王五',87,78,77);
INSERT INTO student(id,NAME,chinese,english,math) VALUES(4,'李一',88,98,92);
INSERT INTO student(id,NAME,chinese,english,math) VALUES(5,'李来财',82,84,67);
INSERT INTO student(id,NAME,chinese,english,math) VALUES(6,'张进宝',55,85,45);
INSERT INTO student(id,NAME,chinese,english,math) VALUES(7,'黄蓉',75,65,30);

现在表结构为:


1):聚合查询(使用聚合函数的查询)

常用的聚合函数有   

sum()求和函数

需求:求出所有学生的math成绩总和

SELECT SUM(math) FROM student;

avg()  求平均函数

需求:求出所有学生的math平均分

SELECT AVG(math) FROM student;

 max() 求最大值函数

需求:求出所有学生中math成绩最高的

SELECT MAX(math) FROM student;

min() 求最小值函数

需求:求出所有学生中math成绩最差的

SELECT MIN(math) FROM student;

count() 求表中所有的记录的数量

SELECT COUNT(*) FROM student;

注意:使用count(*)是统计所有的字段值 然后取最大的个数,比如有得字段为null,这是不包含的,所以要使用count()记录表的总数,不能包含null的字段值


2):分页查询(关键字为limit) limit后面会跟二个数字,第一个表示从第几个开始,第二个数字表示查询几行,比如limit 2,4表示从第2条开始查询到第6条,

注意:这里的几始行是从0开始的

需求:查询前二条的数据

SELECT * FROM student LIMIT 0,2;


3):排序查询

平时我们查询select * from student 这样查询是按照插入记录顺序排序的,而有些时候我们会根据需求进行排序

排序的语句是order by (asc/desc)

说明:

asc: 顺序,正序。数值:递增,字母:自然顺序(a-z

desc: 倒序,反序。数值:递减,字母:自然反序(z-a)

需求:按照id的正序 查询

SELECT * FROM student ORDER BY id ASC;

需求:按照id的倒序 查询

SELECT * FROM student ORDER BY id DESC;

这里要注意一点就是多条件排序 比如要求某一个字段正序  某一个条件倒序查询,记住order by在一条sql语句中只出现一次

需求:按照Chinese正序,按照math的倒序

SELECT * FROM student ORDER BY chinese ASC,math DESC;


4):分组查询

分组查询的关键词为 group by

需求:查询男女的人数

-- 预期结果:

  --  男   3

  --- 女   2

SELECT sex,COUNT(*) FROM student1 GROUP BY sex;

5):分组查询后筛选

需求: 查询总人数大于2的性别

这个分二步来完成

-- 1) 查询男女的人数

-- 2) 筛选出人数大于2的记录(having)

注意: 分组之前条件使用where关键字,分组之前条件使用having关键字

SELECT sex,COUNT(*) FROM student1 GROUP BY sex HAVING COUNT(*)>2;




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值