mysql (2)

一、数据记录的查询
在这里插入图片描述
数据准备:

create table exam(
		id int primary key auto_increment,
		name varchar(20) not null,
		chinese double,
		math double,
		english double
);
insert into exam values(null,'关羽',85,76,60);
insert into exam values(null,'张飞',70,75,70);
insert into exam values(null,'赵云',90,65,95);
insert into exam values(null,'刘备',97,50,50);
insert into exam values(null,'曹操',90,89,80);
insert into exam values(null,'司马懿',90,67,65);

1.查询所有信息
语法:select * from 表名;
表示查询表的所有信息。会把表的所有的列,所有的行都列出来。
2.查询指定列的信息
语法: select 列名,列名… from 表名;
显示指定列数据。列出所有行信息。
3. 条件查询
语法:select * from 表名 where 条件;

运算符
在这里插入图片描述

虑重
查询排重:select distinct 列名 from 表名 [where 条件];

别名以及列运算
语法:select 列名 as 别名,列名 as 别名,列名 as 别名… from 表名 [where 条件];

order by 排序
语法:select * from 表名 order by 列名 asc|desc ;
注意 : 可以有多个排序条件, 首先按照第一列进行排序,如果第一列相同,按照第二列再进行排序。

null的问题
如果使用null来进行表达式运算,那么计算的结果也会是null.

SQL中的 聚合
聚集函数:多个数据进行运算,运算出一个结果。例如,求和,平均值,最大值,最小值。

count函数–统计记录数(统计行数)
语法:select count(*) | count(列名) from 表名

sum求和函数

语法:select sum(列名) from 表名;
sum(列名) ------统计该列的所有的值的和。sum 也可排除null
注意:如
在这里插入图片描述
这种写法会先将每一行的语数外成绩进行相加,然后再把每一行的语数外相加后的值进行求和。这样写会出现一个问题,因为null值和任何值相加为null,而最后sum求和的时候,总成绩null给排除。

avg函数–平均值
语法: select avg(列名) from 表名;
avg里面的null不作为统计。

max/min 最大值/最小值
null 排除在外

group by分组查询(重点)
分组: 按照某一列或者某几列。把相同的数据,进行合并输出。
完整写法 : select … from … group by 列名;
说明:其实就是按列进行分类,然后可以对分类完的数据使用聚集函数进行运算。
注意事项:
1、聚合函数:分组之后进行计算;
2、通常 select的内容:a 被分组的列,b 聚合函数。
3、如果遇到这种情况 按照 每种,每个。 类似的这些语句的时候,通常会使用分组。
4、如果使用group by 对数据进行分组之后还要过滤。只能使用having关键字。
5、where 后不能跟 聚合函数,having中可以跟 聚合函数。

where 和 having 的区别
1、having 通常与group by 分组结合使用。 where 和分组无关。
2、having 可以书写聚合函数 count,sum,avg,max,min),是不可以出现where条件中。
3、where 是在分组之前进行过滤的。having 是在分组之后进行过滤的。

select 语句的执行顺序与查询
select …要显示的内容… from …表名… where 条件…. group by …分组的列 …having …分组后的条件… order by …排序
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/tangiwang/article/details/89750667