sqlite数据库高级

1.函数和聚合

SQL语句支持利用函数来处理数据,函数一般是在数据上执行的,它给数据的转换和处理提供了方便

常用的文本处理函数:

length()     返回字符串的长度

lower() 将字符串转换为小写

upper() 将字符串转换为大写

sqlite数据库高级

 

2.常用的聚集函数:

使用聚集函数,用于检索数据,以便分析和生成报表

avg() 返回某列的平均值

count() 返回某列的行数

max() 返回某列的最大值

min() 返回某列的最小值

sum() 返回某列值之和

sqlite数据库高级

 

3. 数据分组 group by

分组数据,以便能汇总表内容的子集,常和聚集函数搭配使用。例如查询每个班级中的人数、平均分

使用:select 列名1[, 列名2, ...] from 表名 group by 列名

在终端下输入(先增加一列班名class):

注意:group by子句必须出现在where子句之后

 sqlite数据库高级

4.过滤分组 having

 

除了能用group by分组数据外,还可以包括哪些分组,排除哪些分组。例如:查看班级平均分大于90的班级

 

语法:

select 函数名(列名1)[, 列名2, ...] from 表名 group by 列名 having 函数名 限制值

终端输入(查看班级平均分大于90的班级)

sqlite数据库高级 

5. 约束

管理如何插入或处理数据库数据的规则

常用约束分类

主键 (primary key)

惟一的标识一行(一张表中只能有一个主键)

主键应当是对用户没有意义的(常用于索引)

永远不要更新主键,否则违反对用户没有意义原则

主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等

语法:

create table 表名称 (列名称1 数据类型 primary key, 列名称2 数据 类型,列名称3 数据类型, ...);

唯一约束

 

用来保证一个列(或一组列)中数据唯一,类似于主键,但跟主键有区别

表可包含多个唯一约束,但只允许一个主键

唯一约束列可修改或更新

创建表时,通过unique来设置

 

create table 表名 (列名称1 数据类型 unique[,列名称2 数据类型 unique,...]);

sqlite数据库高级 

检查约束

用来保证一个列(或一组列)中的数据满足一组指定的条件。

指定范围,检查最大或最小范围,通过check实现

create table 表名 (列名 数据类型 check (判断语句));

sqlite数据库高级 

6.联结表(多表操作)

保存数据时往往不会将所有数据保存在一个表中,而是在多个表中存储,联结表就是从多个表中查询数据。

在一个表中不利于分解数据,也容易使相同数据出现多次,浪费存储空间;使用联结表查看各个数据更直观,这使得在处理数据时更简单。

sqlite数据库高级 

order by 语句

 

默认按照升序对结果集进行排序,可使用 desc 关键字按照降序对结果集进行排序。

升序

    select * from 表名 order by 列名;

降序

    select * from 表名 order by 列名 desc;

视图

视图不包含数据,因此在每次使用视图时,实际上都必须执行查询语句,从返回结果信息中再检索.视图与表一样,必须唯一命名(通过.tables和.schema查看)

语法:create view 视图名 as 语句;

sqlite数据库高级 

sqlite数据库高级 

删除视图:

语法:drop view 视图名;

总结:

1、视图不包含数据,因此在每次使用视图时,实际上都必须执行查询语句

2、视图相当于 创建视图的时候 as后面SQL语句查询得到的结果集合。

3、从返回结果信息(视图)中再检索视图与表一样