一、简介SQL语言
SQL语言,是结构化查询语言的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
SQL语言,是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方式,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言作为数据输入与管理的接口。SQL语言语句可以嵌套,这使她具有极大的灵活性和强大的功能。
二、聚合函数
函数 | 作用 |
sum(列名) | 求和 |
max(列名) | 最大值 |
min(列名) | 最小值 |
avg(列名) | 平均值 |
first(列名) | 第一条记录(仅access支持) |
last(列名) | 最后一条记录(仅access支持) |
count(列名) | 统计记录数(注意和count(*)的区别) |
注意:使用聚合函数时,select子句中只能存在三种元素:常数、聚合函数、聚合键。(聚合键:eg.在group by子句中指定的列)
(1)access:是微软发布的关系数据库管理系统。可以进行数据分析(拥有强大的数据处理、统计分析能力,可以进行各类汇总、平均等统计)和开发软件(成本低且易学,可以开发生产管理、销售管理、库存管理等各类企业管理软件)。
(2)count(* )
count()函数返回匹配指定条件的行数,忽略null;count(* )就返*回查询结果所有的行数,不忽略null和0。当count()里面跟某个字段,特指某个字段的行数。
三、group by
【通过(by)一定的方式分组(group)】
1、group by的作用
根据一定的规则将一个数据集划分成若干个小区域,然后针对每个区域进行数据处理。即分组查询,一般是和聚合函数配合使用。
group by有一个原则:就是select 后面的所有列中,没有使用聚合函数的列,必须出现在group by 后面。
2、group by的用法:
group by是先排序后分组
(1)简单应用:select——from——where——group by——;
执行顺序:from——where——group by——select——
(2)多表连接:select , from left join _ on_group by;
注意:
(1)在group by子句中不能使用select子句中定义的列的别名。由于group by子句的执行优先级高于select,因此如果在select中定义的列的别名,group by子句并不知道。
(2)group by子句的结果是随机的。
四、having和where的区别
1、where子句
作用是这对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
2、having子句
作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件过滤出特定的组,也可以使用多个分组标准进行分组。
例子1:
select 类别,sum(数量) as 数量只和 from A
group by 类别 having sum(数量)>18
例子2:
select 类别,sum(数量)from A
where 数量 gt;8
group by 类别 having sum(数量)gt;10
五、Compute 和 Compute by
1、compute子句
其能够观察“查询结果”的数据细节或统计各列数据,返回结果由select列表和compute统计结果组成。
例子3:
select * from A
where 数量>8
compute max(数量),min(数量),avg(数量)
2、compute by
例子4:
select * from A
where 数量>8
order by 类别
compute max(数量),min(数量),avg(数量) by 类别