SQLite Tips
- 附加数据库
Attach database filename as database_name; |
主数据库默认为 "Main", 在使用Attach命令时, 不能将database_name指定为main;
当附加多个数据库, 并且存在相同名称的表时, 如果在命令时末指定数据库名(database_name), 则默认关联最先Attach的数据库;
建议操作相同名称的表时, 对应的数据库(database_name.table_name), 如, select * from MyDB.Table1;
- 分离附加的数据库
Detach database database_name; |
- 数据库相关配置
pragma cache_size |
设置缓冲区大小 |
pragma default_cache_size |
在创建数据库之前通过此命令可永久设置缓冲区大小 |
pragma database_list |
显示当前加载的数据库列表(包括Attach附加的数据库) |
pragma index_info(index_name) |
查看index_name对应的索引信息 |
pragma table_info(table_name) |
查看table_name对应的表结构信息 |
pragma index_list(table_name) |
列出table_name创建的所有索引信息 |
pragma Synchronous |
设置数据库写同步的三种方式: 0: OFF 1: NORMAL 2: FULL (Default) |
pragma auto_vacuum |
设置数据库自动清理, 当大量删除数据时可自动缩小数据库文件大小, 但占用更多存储空间, 此命令必需在创建数据库之前设置 |
-
Sqlite_master
Sqlite_master保存数据库所有表, 索引的元数据信息, 及创建的DDL, 可通过如下命令查看:
SELECT * FROM SQLITE_MASTER; |
- Explain query plan 查看SQL执行的流程, 可用于SQL性能分析, 改善SQL查询
EXPLAIN QUERY PLAN SELECT * FROM SQLITE_MASTER; |
- 利用null插入自动增长的值
- SQLite在使用INSERT / UPDATE时处理冲突的五种方式:
replace |
替换存在冲突的记录 |
ignore |
SQLite继续执行但忽略冲突的记录 |
fail |
Sqlite终止命令, 但不恢复发生冲突之前的修改记录 |
abort |
Sqlite终止命令并恢复此命令发生冲突之前的修改 |
rollback |
Sqlite执行回滚, 恢复到事务开始之前的状态 |
如: INSERT OR REPLACE INTO TABLE_NAME (FIELD_NAME) VALUES (FIELD_VALUE)
当执行命令的时候, 如遇到已存在记录, 则可直接在此记录上插入更新, 而不需要再插入前执行删除.
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。