数据库二(去重、求和、求平均、统计、排序)

一、基本功能

1.去重

	DISTINCT去重
		格式:select DISTINCT 字段1,字段2... from 表名 筛选条件
		例如:select distinct name from student;
		例如:select distinct name,age from student;
		注意:字段必须放在distinct后面
			多字段时,以字段组合在一起的结果进行去重

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.取别名

as取别名:把查询到的结果,显示的名称进行更改和使用
		格式:结果 as 名称
		注意:as 可以不写

在这里插入图片描述
在这里插入图片描述

3.聚合函数

1)count统计行数

	count统计行数
		格式:count(列名)
		例如:select count(*) from student;
		例如:select count(name) from student;
		注意:单独查询一列时,null不参与统计
		     count()不能写在where子句

在这里插入图片描述
在这里插入图片描述

2)sum 求和

格式:sum(列名);
		例如:select sum(age) from student;
		注意:只能对数字的列进行求和,对没有数字的列求和不会报错,但是结果为0
		     列中有null,不会影响计算结果
		     sum()不能写在where子句

在这里插入图片描述

3)avg求平均

格式:avg(列名);
		例如:select avg(age) from student;
		注意:只能对数字的列进行求和
		     列中有null,不会影响计算结果
		     avg()不能写在where子句

在这里插入图片描述

4)max/min求最大最小值

格式:max()
    	例如:select max(name) from student;
    	注意:可以对varchar的列进行获取
    		 列中有null,不会影响计算结果
		     max/min不能写在where子句

在这里插入图片描述
在这里插入图片描述

4.字符串函数

1)concat拼接

    concat多字段进行拼接显示,不会将值累加
    	格式:concat(字段,字符串,...)
    	例如:select concat(name,",",sex) from student;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2)+拼接并求和

    +拼接求和  上面标识拼接,下面值求和
    	例如:select age+'20' from student;
    	名字会显示为age+'20'
    	结果每一个数据都进行+20
     

在这里插入图片描述
在这里插入图片描述

5.日期函数

查询时间
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
日期转换成字符串在这里插入图片描述

在这里插入图片描述
字符串转为日期,Y需用大写
在这里插入图片描述
日期相加减,前面减去后面
在这里插入图片描述
在这里插入图片描述

6.数值计算函数

1)round()四舍五入

	保留整数
			格式1:round(值)
		指定保留几位小数
			格式2:round(值,保留几位小数)
		注意:只计算小数点后第一位

格式一
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
格式二

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2)floor()向下取整

格式:floor(值)
在这里插入图片描述
在这里插入图片描述

3)rand()随机数

格式:rand()
注意:产生的随机数范围在0-1之间
在这里插入图片描述
100以内的随机数
在这里插入图片描述

7.order by

	order by排序
		格式:order by 字段,字段...;
		asc升序 desc降序
		注意:默认是升序的
  • 在查询过程中form->where->order by->limit->select
  • from 永远在开始,select永远在最后。
  • 求TopN
    select * from student order by age limit 3;
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

8.group by

	group by分组
		格式:group by 字段,字段...;
		例如:select max(age),sex from student group by sex;
		注意:分组之后select显示的结果,分了几组就显示几条
		     分组过程中把相同组的数据聚合到了一起,所以分组和聚合函数一起使用

在这里插入图片描述
在这里插入图片描述

9.having

    having:筛选
    	例如:select count(*) as count from student group by sex where count<6;--不好使
    		 select count(*) as count from student group by sex having count<6;
    	having和where区别
    		where先筛选之后再产生结果,不能使用产生的结果作为条件
    		having先产生结果之后在进行筛选,能使用产生的结果作为条件

在这里插入图片描述

10.求topn

  • 子查询
    在这里插入图片描述
    求top1
    在这里插入图片描述
    求topn:要几条小于几
    在这里插入图片描述

二、练习

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、总结

DISTINCT去重
		格式:select DISTINCT 字段1,字段2... from 表名 筛选条件
		例如:select distinct name from student;
		例如:select distinct name,age from student;
		注意:字段必须放在distinct后面
			多字段时,以字段组合在一起的结果进行去重
	as取别名:把查询到的结果,显示的名称进行更改和使用
		格式:结果 as 名称
		注意:as 可以不写

聚合函数:
	count统计行数
		格式:count(列名)
		例如:select count(*) from student;
		例如:select count(name) from student;
		注意:单独查询一列时,null不参与统计
		     count()不能写在where子句
	sum求和
		格式:sum(列名);
		例如:select sum(age) from student;
		注意:只能对数字的列进行求和
		     列中有null,不会影响计算结果
		     sum()不能写在where子句
    avg求平均值
		格式:avg(列名);
		例如:select avg(age) from student;
		注意:只能对数字的列进行求和
		     列中有null,不会影响计算结果
		     avg()不能写在where子句
    max/min求最大最小值
    	格式:max()
    	例如:select max(name) from student;
    	注意:可以对varchar的列进行获取
    		 列中有null,不会影响计算结果
		     max/min不能写在where子句
    concat多字段进行拼接显示
    	格式:concat(字段,字符串,...)
    	例如:select concat(name,",",sex) from student;
    +拼接和求和
    	例如:select age+'20' from student;
    	名字会显示为age+'20'
    	结果每一个数据都进行+20
    时间函数
    	select current_timestamp, current_timestamp();
		(日期转换为字符串)函数:date_format(date,format)
		 	select date_format(current_timestamp(),"%Y-%m-%d");
		(字符串转换为日期)函数:str_to_date(str, format)
			select STR_TO_DATE("2020-01-01","%Y-%m-%d");
		日期相减函数:datediff(date1,date2)
			select DATEDIFF(STR_TO_DATE("2021-01-01","%Y-%m-%d"),STR_TO_DATE("2020-01-01","%Y-%m-%d"))
		DATE_ADD() 函数向日期添加指定的时间间隔。
			select DATE_ADD(STR_TO_DATE("2021-01-01","%Y-%m-%d"),INTERVAL -5 day);
	round() 四舍五入
		保留整数
			格式1:round(值)
		指定保留几位小数
			格式2:round(值,保留几位小数)
		注意:只计算小数点后第一位
	floor()向下取整
		格式:floor(值)
	rand()随机数
		格式:rand()
		注意:产生的随机数范围在0-1之间
	order by排序
		格式:order by 字段,字段...;
		asc升序 desc降序
		注意:默认是升序的
在查询过程中form->where->order by->limit->select
求TopN
	select * from student order by age limit 3;

	group by分组
		格式:group by 字段,字段...;
		例如:select max(age),sex from student group by sex;
		注意:分组之后select显示的结果,分了几组就显示几条
		     分组过程中把相同组的数据聚合到了一起,所以分组和聚合函数一起使用
    having:筛选
    	例如:select count(*) as count from student group by sex where count<6;--不好使
    		 select count(*) as count from student group by sex having count<6;
    	having和where区别
    		where先筛选之后再产生结果,不能使用产生的结果作为条件
    		having先产生结果之后在进行筛选,能使用产生的结果作为条件
求简单TopN
	select * from student order by age limit 3;
分组求TopN
	Top1:select max(age),sex from student1 group by sex;
	Top3:select * from student1 s where (select count(age) from student1 where student1.sex=s.sex and student1.age >s.age)<3;

java
java入门基础学习(一)
java入门基础学习(二)
java入门基础学习(三)
java入门基础学习(四)
java入门基础学习(五)
java入门基础学习(六)
java入门基础学习(七)
java入门基础学习(八)
java入门基础学习(九)
java入门基础学习(十)
java入门基础学习(十一)
java入门基础学习(十二)
java入门基础学习(十三)
java入门基础学习(十四)Maven Git
java总结,题目+笔记
java进阶之常见对象(一)
java进阶之常见对象(二)
java进阶之冒泡排序
java进阶之选择排序
java进阶之面向对象(封装)
java进阶之面向对象(代码块、继承)
java进阶之面向对象(多态、抽象、接口)
java进阶之匿名内部类、访问修饰符、包
java进阶之io流(字节流,字符流)
Linux
Linux基础一
Linux基础二
Mysql
mysql一



  • 16
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值