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

索引:

           索引是一种在某种条件下的加速查询的结构。一般的查询都是顺序扫描所有的行。如果表很大,查询很频繁,那么一般的查询就很臃肿。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命令,这样就恢复了。

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

        

 

           

              

              

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值