学习使用SQLite(版本3.7.4)(中F)

前端之家收集整理的这篇文章主要介绍了学习使用SQLite(版本3.7.4)(中F)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

高级sql

插入记录:insert into table_name(column_name) values (value_list) ;

其中,column_name是用逗号隔开的字段,value_name是用逗号隔开的即将插入的数据。

比如:

这里,注意id是主键,插入的时候,只管插入type_id 和name,id是自动生成的;当然也可以这样写:insert into foods values (null , 2 , ‘糖葫芦’),已经验证,这样写是可以的。

这是插入一组值的写法:

这是查询结果:

插入多行:

,你会发现,foods2的字段、内容和foods是一样的。

创建和原来表一样的表的方式,也即插入方式,也是最快捷的:

创建临时表时,可以将选择和插入并成一步:

更新记录:

语法:updatetable_name setupdate_list where predicate ;

删除记录:

delete from table_name where predicate ;

实体完整性:

用于定义和保护表内部和表之间的数据关系。一般有四种完整性:实体完整性(涉及表中的行)、域完整性( 涉及控制字段内的值 )、应用完整性(涉及表之间的行,即外键关系)、用户自定义完整性(比较复杂)。

首先来看约束的种类:

字段级的约束:not null , unique , primary key , foreign key , check , collate 。

表一级的约束: primary key , unique , check 。

(1),实体完整性:

数据库的所有的域都是唯一的、可定位的,域可寻址,则行是可寻址的,行在某种方式上是唯一的,主键来完成这样的功能。主键行要求在某种方式上,与表中的其他行是不同的。这样表中的数据基本上就是有组织的。

唯一性约束:unique,也是主键的基础。一个值或者一个字段的值都是不同的。

主键约束:在sqlite中,定义一个表时则定义一个主键。其实,表里总有一个字段是主键,不管你有没有定义主键,这个字段是一个64为的整型字段,rowid(),也即_rowid_,oid,其魔女工人取值按照增序则自动生成。主键在sqlite里具有自动增长机制。如果你定义了主键,那么定义的新的主键将会取代rowid()字段,不一定按照严格的顺序增长。当达到最大的值时,sqlite将要自动搜索还未使用的值,并且作为将要插入的值,如果要从表中删除记录,那么rowid()将会被回收在后面的插入中使用。

如果要sqlite使用唯一的自动主键值,而不是填补空白,那么可以在主键定义关键字integer primary key 中加入autoincrement。这样,sqlite使用不同的主键生成算法,该算法可能会阻止rowid 的回收,为insert 产生新的非回收rowid,创建表的时候,如果字段包含autoincrement约束,那么sqlite会在一个名为sqlite_sequence的系统表中记录该字段的最大值。在后面的insert语句中,只是使用比该最大值大的,如果达到了绝对最大值,sqlite会在后面的insert语句中返回sqlite_full。

注意,id超过了最大值了,所以就返回了一个错误。其实,可以将自增长字段作为整型主键,鼓励这样做。

那么,我们也可以看见sqlite_sequence的用法

主键约束可以定义在多个字段中,不一定用整型:

建议在合适的地方适用实际字段作为主键。

原文链接:https://www.f2er.com/sqlite/201787.html

猜你在找的Sqlite相关文章