SQLite 总结

来源:互联网 发布:小白素材vip源码 编辑:程序博客网 时间:2024/04/30 12:10

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
0 0
原创粉丝点击