1.聚合与排序
1.1 聚合查询
聚合函数:COUNT,SUM,AVG,MAX,MIN
-
COUNT
:-
全部行数:
select count(*) from <表名>
-
除
NULL
之外的行数:select count(<列名>) from <表名>
NOTE:
*
会包含NULL
的数据行数,而(<列名>)会得到出NULL
之外的数据行数
-
-
SUM
:- 语法:
select sum(<列名>) from <表名>
,包含NULL
会将排除在外.
- 语法:
-
AVG
:- 语法:
select avg(<列名>) from <表名>
- 语法:
-
min,max
一样
删除重复值用关键词distinct
1.2 分组
语法:select <列名1>,<列名2>,... from <表名> group by <列名1>, <列名2>,...;
包含NULL的情况:结果会以不确定行的形式表现出来
当where
和 group by
执行语句
select <列名1>,<列名2>,<列名3>,... from <表名> where <条件语句> group by <列名1>,<列名2>,<列名3>....;
1.3 聚合指定条件
having
:指定组的条件
构成要素:常数,聚合函数,group by
子句中指定的列名(即聚合键)
语句:select <列名1>,<列名2>,<列名3>,... from <表名> where <条件语句> group by <列名1>,<列名2>,<列名3>....having <分组结果对应的条件>;
1.4 排序
order by
-
默认从低到高,想从高到低,用关键词
desc
-
排序键包含
NULL
,会在开头或末尾进行汇总 -
可以使用
select
子句中定义的别名 -
可以使用
select
子句未使用的列和聚合函数
2. 数据更新
2.1 插入
- 基本语法:
insert into <表名> (列1, 列2, 列3,....) values (值1, 值2, 值3,...);
- 列清单可以省略,默认从左到右的顺序赋值每一列
- 插入
null
,写入null
即可 - 插入默认值
- 显式方法:关键词
default
- 隐式方法,列清单不要省略就行
- 显式方法:关键词
- 从其他表中复制数据:
insert ... select 语句
2.2 删除
drop table 语句
:将表完全删除delete 语句
: 会留下表,删除表中的全班数据
delete from 表名
:删除是记录行
delete from 表名 where <条件>;
:指定删除对象
2.3 更新
基本语句:updata <表名> set <列名> = <表达式>;
更新null
直接写null
指定条件:update <表名> set <列名> = <表达式> where <条件>;
多列更新:用逗号对列进行分割排列,用()的清单形式
2.4 事务
事务需要在同一个处理单元中执行的一系列更新处理集合,一个事务包含多少个更新处理或者包含哪些处理
语法:
begin transaction;
DML 语句1;
DML 语句2;
...
commit;
ACID
特性
- 原子性:更新处理要么全部执行,要么完全不执行;
- 一致性:满足数据库提取设置的约束;
- 隔离性:保证不同事务之间互不干扰
- 持久性:系统故障导致数据丢失,数据库也一定能通过某种手段恢复
3. 复杂查询
3.1 视图
视图:还是一种表,但是不会将数据保存到其他任何地方
创建视图:creat view (<视图列名1>,<视图列名2>,...) AS <SELECT语句>
视图的限制:
- 不能使用
order by
- 视图和表要同时更新,因此通过汇总的视图无法进行更新
删除视图:drop view <视图名称>
3.2 子查询
简单的说,就是一张一次性视图
语句:select <列名1>, <列名2> from ( select <视图列名1>, <视图列名2>,.. from <表名>) as <视图名>