1).open 打开数据库
@H_404_2@例子: @H_404_2@sqlite> .open test.db @H_404_2@注意:>后面有点 @H_404_2@2) .tables 查看数据库包含的表名 @H_404_2@sqlite> .tables @H_404_2@3) .schema 查看数据库中所有的表的结构 @H_404_2@sqlite> .schema students @H_404_2@4) 执行sql语句 @H_404_2@sqlite> select * from students where StudentID = 3 ; @H_404_2@注意:调用sql之前,可以设置输出的结果格式 @H_404_2@-显示SELECT结果集的列名。 @H_404_2@--以列的形式显示各个字段。 @H_404_2@--将其后输出的第一列显示宽度设置为10. @H_404_2@sqlite> .header on @H_404_2@sqlite> .mode column @H_404_2@sqlite> .width 10 @H_404_2@5).exit 退出 @H_404_2@6) .explain 准备显示sql语句转换成VDBC机器码的语句 @H_404_2@例子如下: @H_404_2@sqlite> .explain @H_404_2@sqlite> EXPLAIN select * from students ; @H_404_2@7)在上面的基础上,如果调用了.explain @H_404_2@可以查看简单的如下的细节,目前需要等到翻译了英文版本才能够理解 @H_404_2@sqlite> EXPLAIN QUERY PLAN select * from students; @H_404_2@@H_404_2@sele order from data @H_404_2@0 0 0 SCAN TABLE students @H_404_2@当然,我在下面的网站上看到了对students表创建索引,之后产生的不同: @H_404_2@摘自:http://blog.itpub.net/16900201/viewspace-1291550/ @H_404_2@sqlite> create index student_index on students(StudentID); @H_404_2@sqlite> EXPLAIN QUERY PLAN select * from student where StudnetID = 1; @H_404_2@结果显示如下: @H_404_2@0 0 0 SEARCH TABLE student USING INDEX student_index(StudentID= ?) @H_404_2@综上所述,该语句说明了数据是如何查询的,当然了只有建立索引的时候,才有效,这里我们可以大胆的断言:实际上,如果数据库不建立索引,其实就是扫描整一个数据库的表记录,如果建立了索引就会搜索索引,这个话题将会在以后的文章中,进行详细的分析说明,并且从源码角度如何正确建立索引,而且是在多个列上建立聚簇索引。 @H_404_2@ 如下是一些简单的探索: @H_404_2@1)数据库并没有保存student_index这张表,至于保存在什么地方等待探索!! @H_404_2@Error:no such table student_index; @H_404_2@2)索引是否记录了对应数据块的编号,来加快搜索,保存的结构是什么?? @H_404_2@update别名问题: @H_404_2@目前测试过程中,发现sqlite是不支持在update中使用别名,例如: @H_404_2@update task as t set t.state = 4 where t.taskID = 65 @H_404_2@说明在执行sql语句的时候需要相当注意 @H_404_2@注意事项 @H_404_2@sqlite数据库保存的内容编码格式可能是UTF-8或者GBK编码,直接启动sqlite.exe程序读取数据库的内容,目前读取GBK编码的时候,显示中文乱码 @H_404_2@解决方案:很多用户希望能够在控制台下输入中文,必须使用指令chcp 936,切换到GBK编码格式,才能够正常输入 @H_404_2@ 2)目前查看UTF-8编码的数据库文件,使用指令chcp 65001,切换到UTF-8编码字符集 @H_404_2@ 3)进入到sqlite.exe程序的目录,启动sqlite.exe,这个时候正常显示UTF-8数据库内容 @H_404_2@ 4)如果数据库内容是GBK编码,可以使用chcp 936。