SQLite 总结
术语
- CLP: sqlite3 的命令行程序
- TCL: (Tool Command Language)sqlite3 绑定的一种支持语言
- DML: data manipulation language (SELECT UPDATE INSERT DELETE)
- DDL: data definition language (CREATE ALTER DROP ..)
- DCL: data Control Language (grant deny revoke)
工具
- sqlite3 (CLP)
- 点命令 .help
- sqlite3_analyzer
- SQLite Database Browser
- SQLiteman
- SQLiteManager
概念
- 多表连接
- 内连接:交叉集合
- 左外连接
- 右外连接
- 自然连接
- 数据完整性
- 域完整性: 字段值遵从赋予的规定,字段的值必须是字段定义范围内的.
- 约束
- 指定字段默认值: default xxx (sqlite 预定保留字 : curret_time / curret_date / curret_timestamp)
- not null约束: not null (禁止 null 值,通常用法 not null default xxx)
- check 约束 : check(xxx)
- 外键约束: 定义字段的外部约束,指定该字段引用父表值
- 语法 (column_def references foreign_table(column_name) on {delete|update} action [not] deferrable [initially {deferred|immediate}])
- action
- set null
- set default : 设置默认值
- cascade: 删除所有子值
- restrict: 阻止操作
- no action
- 排序规则,确定唯一性
- 二进制排序 (默认)
- nocase
- reverse
- 约束
- 实体完整性: 表中的数据是有组织的.
- 唯一性约束: unique
- 主键约束: primary key(默认为 interger 值的 rowid/oid)
- 域完整性: 字段值遵从赋予的规定,字段的值必须是字段定义范围内的.
- 存储类: integer, real, text, blob, none
- sqlite 支持同意字段对应不同值: 排序规则 => null -> integer/real -> text -> blob
- 视图: 虚拟表,内容派生自其他表的查询结果
- 索引: 用来在某种条件下加速查询的结构
- 触发器: 具体表发生特定数据库事件时,执行对应的 SQL
- 错误处理: raise(abort|fail|ignore|rollback, error_message)
- 可更新的视图
- 事务:
- 用法:
- begin -> roolback/commit
- savepoint xxx -> rollback [transaction] to xxx
- 冲突解决方案:
- replace (如果解决不了,调用 abort)
- ignore
- fail
- abort (默认,中止当前事务)
- roolback(回归所有)
- 用法:
- 关于锁:
- 锁状态
- 未加锁
- 共享锁: 读状态开启
- 预留锁: 写状态开启
- 未决锁: 提交等待阶段,不再分配共享锁
- 排他锁: 共享锁全部被释放,数据写入开启
- 指定锁状态开启事务: begin [deferred | immediate | exclusive] transaction
- 锁状态
- 数据库管理操作
- 清理:
- reindex collation_name : 重建用户自定义排序的索引
- reindex table_name|index_name
- vacuum:
- auto_vacuum:
- 数据库配置: //todo
- 写同步的配置:
- 临时存储器
- 页大小,编码,自动清理
- 系统目录: sqlite_master
- 查看查询计划: explain query plan select …
- 清理:
C API
- 连接数据库: sqlite_open_v2
- 执行查询 : sqlite_exec
- 获取表查询: sqlite3_get_table
- 查询准备:
- 编译: sqlite3_prepare_v2
- 执行: sqlite3_step
- 完成: sqlite3_finalize / sqlite3_reset
- 获取: sqlite3_column_count / sqlite3_data_count / sqlite3_colum_xxx
- 查询参数化:
- 参数编号: ?100 ==> sqlite3_bind_xxx()
- 参数命名: :value ==> sqlite3_bind_parameter_index
- 错误处理:
- sqlite3_errmsg
- 繁忙处理:
- sqlite3_busy_handle
- sqlite3_busy_timeout
- 操作控制
- 提交钩子 sqlite3_commit_hook
- 回滚钩子 sqlite3_commit_hook
- 更新钩子 sqlite3_update_hook
- 授权函数 sqlite3_set_authorizer