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

文章目录

  • 一、基本功能
    • 1.去重
    • 2.取别名
    • 3.聚合函数
      • 1)count统计行数
      • 2)sum 求和
      • 3)avg求平均
      • 4)max/min求最大最小值
    • 4.字符串函数
      • 1)concat拼接
      • 2)+拼接并求和
    • 5.日期函数
    • 6.数值计算函数
      • 1)round()四舍五入
      • 2)floor()向下取整
      • 3)rand()随机数
    • 7.order by
    • 8.group by
    • 9.having
    • 10.求topn
  • 二、练习
  • 三、总结

一、基本功能

1.去重

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

数据库二(去重、求和、求平均、统计、排序)_第1张图片
数据库二(去重、求和、求平均、统计、排序)_第2张图片
数据库二(去重、求和、求平均、统计、排序)_第3张图片

2.取别名

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

数据库二(去重、求和、求平均、统计、排序)_第4张图片
数据库二(去重、求和、求平均、统计、排序)_第5张图片

3.聚合函数

1)count统计行数

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

数据库二(去重、求和、求平均、统计、排序)_第6张图片
数据库二(去重、求和、求平均、统计、排序)_第7张图片

2)sum 求和

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

数据库二(去重、求和、求平均、统计、排序)_第8张图片

3)avg求平均

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

数据库二(去重、求和、求平均、统计、排序)_第9张图片

4)max/min求最大最小值

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

数据库二(去重、求和、求平均、统计、排序)_第10张图片
数据库二(去重、求和、求平均、统计、排序)_第11张图片

4.字符串函数

1)concat拼接

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

数据库二(去重、求和、求平均、统计、排序)_第12张图片
数据库二(去重、求和、求平均、统计、排序)_第13张图片
数据库二(去重、求和、求平均、统计、排序)_第14张图片

2)+拼接并求和

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

数据库二(去重、求和、求平均、统计、排序)_第15张图片
数据库二(去重、求和、求平均、统计、排序)_第16张图片

5.日期函数

查询时间
数据库二(去重、求和、求平均、统计、排序)_第17张图片
数据库二(去重、求和、求平均、统计、排序)_第18张图片
数据库二(去重、求和、求平均、统计、排序)_第19张图片
数据库二(去重、求和、求平均、统计、排序)_第20张图片
日期转换成字符串数据库二(去重、求和、求平均、统计、排序)_第21张图片

数据库二(去重、求和、求平均、统计、排序)_第22张图片
字符串转为日期,Y需用大写
数据库二(去重、求和、求平均、统计、排序)_第23张图片
日期相加减,前面减去后面
数据库二(去重、求和、求平均、统计、排序)_第24张图片
数据库二(去重、求和、求平均、统计、排序)_第25张图片

6.数值计算函数

1)round()四舍五入

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

格式一
数据库二(去重、求和、求平均、统计、排序)_第26张图片
数据库二(去重、求和、求平均、统计、排序)_第27张图片
数据库二(去重、求和、求平均、统计、排序)_第28张图片
数据库二(去重、求和、求平均、统计、排序)_第29张图片
格式二

数据库二(去重、求和、求平均、统计、排序)_第30张图片
数据库二(去重、求和、求平均、统计、排序)_第31张图片
数据库二(去重、求和、求平均、统计、排序)_第32张图片
数据库二(去重、求和、求平均、统计、排序)_第33张图片

2)floor()向下取整

格式:floor(值)
数据库二(去重、求和、求平均、统计、排序)_第34张图片
数据库二(去重、求和、求平均、统计、排序)_第35张图片

3)rand()随机数

格式:rand()
注意:产生的随机数范围在0-1之间
数据库二(去重、求和、求平均、统计、排序)_第36张图片
100以内的随机数
数据库二(去重、求和、求平均、统计、排序)_第37张图片

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;
    数据库二(去重、求和、求平均、统计、排序)_第38张图片
    数据库二(去重、求和、求平均、统计、排序)_第39张图片
    数据库二(去重、求和、求平均、统计、排序)_第40张图片

8.group by

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

数据库二(去重、求和、求平均、统计、排序)_第41张图片
数据库二(去重、求和、求平均、统计、排序)_第42张图片

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先产生结果之后在进行筛选,能使用产生的结果作为条件

数据库二(去重、求和、求平均、统计、排序)_第43张图片

10.求topn

  • 子查询
    数据库二(去重、求和、求平均、统计、排序)_第44张图片
    求top1
    数据库二(去重、求和、求平均、统计、排序)_第45张图片
    求topn:要几条小于几
    数据库二(去重、求和、求平均、统计、排序)_第46张图片

二、练习

数据库二(去重、求和、求平均、统计、排序)_第47张图片
数据库二(去重、求和、求平均、统计、排序)_第48张图片
数据库二(去重、求和、求平均、统计、排序)_第49张图片
数据库二(去重、求和、求平均、统计、排序)_第50张图片

三、总结

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一



你可能感兴趣的:(数据库Mysql,mysql,sql,数据库)