学习使用SQLite(版本3.7.4)(中G )
域完整性: 真正的域完整性的定义就是字段的值遵从规定。列的域包含类型和范围。域完整性有两个组成部分:类型检查和范围检查。 默认值(实例): not null约束: 保证insert语句不会向字段中插入null值。它要求必须为该字段提供值。一种应对的方法就是,在插入的时候别写null,一种方法就是,提前给该字段设置默认的值,此时通常default和not null是混合使用的。 check约束: 允许定义表达式来测试要插入或者更新的字段值。如果该值不满足设定的表达式,那数据库会报错。比如,可以通过check约束来规定一个字段的长度等等。
,此时就不能更新数据了。 check约束先判断,如果满足条件,就可以进行操作。还有一种办法,就是利用触发器。 外键约束: 一个表中的主键必须是另一个表中的引用,例子:比如父子关系、商品之间的关系、主从关系等。SQLite可以在创建表的时候使用外键。 create table table_name ( column_definition references foreign_table(column_name) on {delete | update } integerity_action [not deferrable [ initially{deferrable | immediate },] ……) ,
完整性规则的定义:set null,如果父值被删除或者不存在了,那么对应的子值将改为null; set default , 如果赋值被删除或者不存在了,那么对应的子值将会被修改为默认值; casecade, 更新父值的时候,更新所有预知匹配的子值。删除父值的时候,删除所有的子值。注意这个不好用。 restrict, 更新或者删除父值可能会出现孤立的子值,从而阻止或者终止事务。 no action , 使用一种松弛的方法,不干涉操作执行,只是观察变化。在整个语句的结尾报错。约束定义为deferred的类似。 排序规则: 涉及到大小写,文本比较等。三种:二进制排序规则,c中的memcmp();nocase非大小写敏感排序;reverse排序。 排序定义关键字:collate。
存储类: SQLite支持的类型和其他数据库有些不同。它支持的是类型以及这些类型的存储、比较、强化、指派是不同于其他数据库的。 5个原始的数据类型:
|