一、Sqlite的基础类型
INTEGER: 整型
TEXT: 文本类型
REAL: 浮点型
NULL: 数据值为空
BLOB: 表示一个数据块。
(解释:
在实际的编程开发当中我们经常要处理一些大容量二进制数据的存储,如图片或者音乐等等。对于这些二进制数据(blob字段)我们不能像处理普通的文本那样简单的插入或者查询,为此SQLite提供了一组函数来处理这种BLOB字段类型。
)
注:SQLite不提供Date与Time这两种类型。如果需要可以将这两种类型,转化成字符串或者整型
二、SQLite提供的约束条件
PRIMARY KEY:主键
AUTOINCRIEMENT:自增
UNIQUE:唯一
DEFAULT:默认值
NOT NULL:数据不为空
CHECK(判断语句):判断数据的数据是否符合条件
FOREIGN KEY(name) REFERENCE [table](name):外键
举例:有学生(Students)和班级(Classes)两张表
create students (
create students (
id integer primary key autoincriement,
name text unique,
class_id integer check(class < 3),//表示class只能数输入<3的数
age integer not null,
foreign key(class) reference classes(class_id) //表示:students.class_id的数据必须存在于classess.class_id
)
三、外键的组成与使用
组成:
FOREIGN KEY(子表中的字段) REFERENCES(父表中的字段)
[ON {DELETE|UPDATE} action
[NOT] DEFERRABLE INITIALLY {DEFERRED|IMMEDIATE}]
解析:
第二行表示当父表的字段更新或删除,子表中发生的操作DELETE表示删除,UPDATE表示更新
默认为:
NO ACTION
类型:(只支持单个外键约束)
NO ACTION: 不执行
使用:NO ACTION
RESTRICT: 应用程序禁止修改父键
使用:ON DELETE/UPDATE RESTRICT
SET NULL: 当父键被删除或更新的时候,子键相对应的数据被设为null
使用:ON DELETE/UPDATE SET NULL
SET DEFAULT: 当父键被删除或更新的时候,子键相对应的字段被设为default值,如果default值不在父键内,就会抛出异常。
使用:ON DELETE/UPDATE SET DEFAULT
CASCADE: 将父键上的操作传给子键,就是如果删除cls_id=2则子表中的cls_id=2这一行也会被删除。
使用:ON DELETE/UPDATE CASCADE
第三行表示当父表的字段更新或删除,子表相对于第二行操作的时机。
默认为:立即执行
类型:记住两个就好了
DEFERRABLE 立即执行
DEFERRABLE INITIALLY DEFERRED 延迟执行
注意事项:
在使用外键前,必须执行 PRAGMA foreign_keys = ON 语句
四、SQL语句的使用
①、insert语句:
insert into 表名[字段列表] values(值,值,值...);
举例:
insert into students values("章",2,12);
或者:
insert into students(name,age) values("哈",13);
insert into students(name,age) values("哈",13);
特殊使用:
批量插入数据
insert into stu select * from students; //将搜索到的数据批量插入
insert into stu(name,age) select name, age from students;
或者可以这样
create table stu as select * from students; //这里省去了建表的动作,相当于赋值了students表给stu表
②、select语句:
select 字段名 from 表名 where 筛选条件 group by 分组 having 分组的条件筛选 order by 排序 limit 返回数据的数量
offset 数据从起始位置的偏移量
示例:
select * from studens where count = 2 group by cls_id having cls_id >1 order by desc limit 3 offset 1;
从字段名开始:
1、distinct :去除select中的重复行。
select distinct cls_id from studens;
2、as(设定暂时的名字):
select cls_id as class from students where class = 2; //class就是修改后的名字
3、使用聚合函数:
select count(cls_id) from students;
常用聚合函数列表:
1、 求个数:count
2、 求总和:sum
3、 求最大值:max
4、 求最小值:min
5、 求平均值:avg