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 <视图名>

被折叠的 条评论
为什么被折叠?



