加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

学习使用SQLite(版本3.7.4)(中H ) ?

发布时间:2020-12-12 20:26:45 所属栏目:百科 来源:网络整理
导读:索引: 索引是一种在某种条件下的加速查询的结构。一般的查询都是顺序扫描所有的行。如果表很大,查询很频繁,那么一般的查询就很臃肿。SQLite利用B-tree做索引。索引增加了数据库的大小,在建立索引的情况下,最坏的情况就是表的内容翻倍,索引的维护也比较

索引:

索引是一种在某种条件下的加速查询的结构。一般的查询都是顺序扫描所有的行。如果表很大,查询很频繁,那么一般的查询就很臃肿。SQLite利用B-tree做索引。索引增加了数据库的大小,在建立索引的情况下,最坏的情况就是表的内容翻倍,索引的维护也比较麻烦。修改表的时候,索引也是要修改的。

索引分为聚簇索引非聚簇索引两种,聚簇索引 是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。实际上,在SQLite中并没有这样的说法。因为SQLite本来就在这方面不完善。这和一般的数据库是不一样的。

create index [ unique ] index_name on table_name(columns) . 其中,unique约束不仅适用于索引,也适用于索引所限制的字段。

drop index index_name.

例子:

唯一性约束也可存在于联合字段。

现在能插入相同的数据了,因为索引被移除了。这里,有排序规则的应用。

排序规则:索引中的每个字段都有相应的排序规则。如果要创建大小写不敏感的索引,这样:

列出索引和其他信息:

使用索引:

首先要明白在什么时候使用索引是好的,什么时候使用是不好的。将在where子句中出现的表达式,SQLite将使用单个字段索引:

column { = | > |>=| <= |<} expression

expression{ = | > |>=| <= |<} column

column in (espression _list )

column in ( subquery );

触发器:

当具体的表发生特定的事件时,触发器执行相应的操作。

create [temp | temporary ] trigger trigger_name

[ before | after ] [insert | delete | update | update of columns ] on table_name

action

触发器是通过行为、名称、表定义的。行为通过sql语言构成,当某些事件发生时,触发器负责启动这些命令。通过关键则before或者after来确定是在事件发生前还是后来执行这些操作。事件包含insert、delete等命令。触发器可以有自定义完整性约束、日志改变、更新表和其他的一些事情。作用只是限制在所写的SQL命令。

这里出现了点问题。触发器执行后,不知道为什么没有改变表foods的内容

错误处理:定义为事件发生前的触发器有机会阻止事件的发生,也可以检查事件的发生。before和after触发器可以帮助实施新的完整性约束。SQLite触发器允许调用raise()函数允许在触发器内产生错误。

raise()定义如下:raise(resolution,error_message);

resolution可以是:abort、 fail、 ignore、rollback等。

可更新的视图:

创建了一个连接foods和foods_types的视图,通过外键关系相连(有别名的应用):

更新数据库表的时候,这里表示foods和foods_types,触发器自动执行:

事件后,注意回滚,如果没有回滚检查是不是先前没有输begin;

可以看出,在update表格之后,name发生了变化,这是,因为没有提交,注意提交了就不能回滚了。如果,想恢复原来表格的内容,可以利用回滚rollback命令,这样就恢复了。

接下来,将进行事务的学习和理解。事务是数据库的一个很好的东东,用好了有好多的好处。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读