非常教程

Sqlite参考手册

其他 | Miscellaneous

The UNION Virtual Table

1.UNION虚拟表(以下简称“union-vtab”)是一个虚拟表,它使多个独立的rowid表格看起来像一个大型表格。

2.参与union-vtab的表可以位于同一个数据库文件中,也可以位于单独的数据库文件中,这些文件被附加到相同的数据库连接。

3.union-vtab没有内置到SQLite中。Union-vtab是一个可加载的扩展。union-vtab的源代码包含在位于SQLite源代码树的ext / misc / unionvtab.c中的单个文件中。

4.一个新的union-vtab实例创建如下:

CREATE VIRTUAL TABLE temp.tabname USING unionvtab(query);

5.每个union-vtab都必须位于TEMP名称空间中。因此,tabname之前的“ temp。 ” 是必需的。只有union-vtab本身需要位于TEMP名称空间中 —— 正在联合的单个表可以是任何ATTACH-ed数据库。

6.在针对union-vtab的CREATE VIRTUAL TABLE,其查询必须是一个良好的SQL查询,返回四列和任意数量行。查询 结果中的每一行代表一个参与联合的表。

1.  The first column is the schema name for the database that contains the tables. Examples: "main", "zone512". 
2.  The second column is the name of the table. 
3.  The third column is the minimum value for any rowid in the table. 
4.  The fourth column is the maximum value of any rowid in the table. 

7.union-vtab的CREATE VIRTUAL TABLE语句的查询可以是SELECT语句或VALUES子句。

8.当首次遇到CREATE VIRTUAL TABLE语句,并且该单次运行的结果用于对union-vtab的所有后续访问时,该查询 只运行一次。如果查询 结果发生变化,那么应该删除并重新创建union-vtab以使查询 再次运行。

9.union-vtab中的各个表的rowid的band中不能有重叠。

10.参与union-vtab的所有表必须具有相同的CREATE TABLE定义,但表的名称可以不同。

11.所有参与union-vtab的表都必须是rowid表。

12.tabname 的列名和定义将与基础表相同。应用程序可以访问tabname,就像它是真正的基础表之一一样。

13.union-vtab中的表中不包含CREATE VIRTUAL TABLE语句中由查询 建立的rowid边界之外的条目。

14.当查询的约束条件如下所示时,union-vtab应优化对基础实数表的访问。未来可能会优化其他类型的约束,但在目前的初始实施中,只有这些约束得到优化。

-  **rowid=$id** 
-  **rowid IN** _query-or-list_ 
-  **rowid BETWEEN $lwr AND $upr** 

其他类型的约束可能会被使用且有效,但其他约束将会针对每一行单独检查,并且不会被优化(至少不是在最初被优化)。无论优化是否发生,所有约束检查都是完全自动的。本项目中提到的优化只是性能考虑因素。无论查询是否经过优化,都可以获得相同的结果。

15.union-vtab是只读的。以后可以添加对写的支持,但写不是初始实现的一部分。

注意: sqlite3_blob_open()接口不适用于union-vtab。必须使用普通的SQL语句从union-vtab中读取BLOB内容。

 SQLite is in the Public Domain.

其他 | Miscellaneous相关

1.35% Faster Than The Filesystem
2.8+3 Filenames
3.An Asynchronous I/O Module For SQLite
4.Appropriate Uses For SQLite
5.Architecture of SQLite
6.Atomic Commit In SQLite
7.Automatic Undo/Redo With SQLite
8.Benefits of SQLite As A File Format
9.Change in Default Page Size in SQLite Version 3.12.0
10.Clustered Indexes and the WITHOUT ROWID Optimization
11.Compile-time Options
12.Constraint Conflict Resolution in SQLite
13.Custom Builds Of SQLite
14.Deterministic SQL Functions
15.Distinctive Features Of SQLite
16.EXPLAIN QUERY PLAN
17.Features Of SQLite
18.File Format Changes in SQLite
19.Full-Featured SQL
20.High Reliability
21.Hints for Debugging SQLite
22.How SQLite Is Tested
23.How To Compile SQLite
24.How To Download Canonical SQLite Source Code
25.Imposter Tables
26.In-Memory Databases
27.Indexes On Expressions
28.Internal Versus External BLOBs
29.Isolation In SQLite
30.Long Term Support
31.Maintaining Private Branches Of SQLite
32.Many Small Queries Are Efficient In SQLite
33.Measuring and Reducing CPU Usage in SQLite
34.Memory-Mapped I/O
35.NULL Handling in SQLite
36.Partial Indexes
37.Pointer Passing Interfaces
38.Powersafe Overwrite
39.Release History Of SQLite
40.Result and Error Codes
41.Row Values
42.Rowid Tables
43.Run-Time Loadable Extensions
44.SQL Features That SQLite Does Not Implement
45.sqldiff.exe: Database Difference Utility
46.SQLite As An Application File Format
47.SQLite Autoincrement
48.SQLite Backup API
49.SQLite Changes From Version 3.4.2 To 3.5.0
50.SQLite Changes From Version 3.5.9 To 3.6.0
51.SQLite Database Speed Comparison
52.SQLite File IO Specification
53.SQLite Frequently Asked Questions
54.SQLite In 5 Minutes Or Less
55.SQLite is a Self Contained System
56.SQLite Is Serverless
57.SQLite Is Transactional
58.SQLite Library Footprint
59.SQLite Shared-Cache Mode
60.SQLite Unlock-Notify API
61.SQLite Version 3 Overview
62.SQLite: Single File Database
63.Temporary Files Used By SQLite
64.TH3
65.The COMPLETION() Table-Valued Function
66.The CSV Virtual Table
67.The dbhash.exe Utility Program
68.The DBSTAT Virtual Table
69.The Error And Warning Log
70.The generate_series Table-Valued Function
71.The OS Backend (VFS) To SQLite
72.The Spellfix1 Virtual Table
73.The SQLite Amalgamation
74.The SQLite Bytecode Engine
75.The sqlite3_analyzer.exe Utility Program
76.The SQLITE_STMT Virtual Table
77.The Virtual Database Engine of SQLite
78.Uniform Resource Identifiers
79.Using SQLite In Multi-Threaded Applications
80.Version Numbers in SQLite
81.What If OpenDocument Used SQLite?
82.Why Is SQLite Coded In C
83.Zero-Configuration
Sqlite

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来

主页 https://sqlite.org/
源码 https://www.sqlite.org/src/
发布版本 3.21.0

Sqlite目录

1.C界面 | C Interface
2.C Interface: Session Module
3.CLI
4.数据库文件表 | Database File Format
5.数据类 | Datatypes
6.动态内存分配 | Dynamic Memory Allocation
7.外键约束 | Foreign Key Constraints
8.全文索引 | Full-Text Search
9.损坏方式 | How To Corrupt
10.JSON
11.语言 | Language
12.局限性 | Limits
13.锁定和并发 | Locking and Concurrency
14.其他 | Miscellaneous
15.PRAGMA Statements
16.查询计划程序 | Query Planner
17.R*Tree Module
18.RBU Extension
19.语法图 | Syntax Diagrams
20.Tcl Interface
21.虚拟表机制 | Virtual Table Mechanism
22.预写日志 | Write-Ahead Logging
23.SQL 教程
24.SQL 简介
25.SQL 语法
26.SQL DELETE 语句
27.SQL UPDATE 语句
28.SQL NOT NULL 约束
29.SQL 约束
30.SQL CREATE TABLE 语句
31.SQL CREATE DATABASE 语句
32.SQL INSERT INTO SELECT 语句
33.SQL SELECT INTO 语句
34.SQL CREATE VIEW、REPLACE VIEW、 DROP VIEW 语句
35.SQL AUTO INCREMENT 字段
36.SQL ALTER TABLE 语句
37.SQL 撤销索引、表以及数据库
38.SQL CREATE INDEX 语句
39.SQL DEFAULT 约束
40.SQL CHECK 约束
41.SQL FOREIGN KEY 约束
42.SQL PRIMARY KEY 约束
43.SQL UNIQUE 约束
44.SQL 通用数据类型
45.SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数
46.SQL NULL 值 – IS NULL 和 IS NOT NULL
47.SQL Server 和 MySQL 中的 Date 函数
48.SQL MS Access、MySQL 和 SQL Server 数据类型
49.SQL 函数
50.SQL 总结
51.SQL 主机
52.SQL 快速参考
53.SQL ROUND() 函数
54.SQL Server GETDATE() 函数
55.MySQL DATE_FORMAT() 函数
56.MySQL DATEDIFF() 函数
57.MySQL DATE_SUB() 函数
58.MySQL DATE_ADD() 函数
59.MySQL EXTRACT() 函数
60.MySQL DATE() 函数
61.MySQL CURTIME() 函数
62.MySQL CURDATE() 函数
63.MySQL NOW() 函数
64.SQL Server CONVERT() 函数
65.SQL Server DATEDIFF() 函数
66.SQL Server DATEADD() 函数
67.SQL Server DATEPART() 函数
68.SQLite 命令
69.SQLite 安装
70.SQLite 简介
71.SQLite 运算符
72.SQLite Select 语句
73.SQLite 删除表
74.SQLite 创建表
75.SQLite Insert 语句
76.SQLite 分离数据库
77.SQLite 附加数据库
78.SQLite 创建数据库
79.SQLite 数据类型
80.SQLite 语法
81.SQLite Order By
82.SQLite Limit 子句
83.SQLite Glob 子句
84.SQLite Like 子句
85.SQLite Delete 语句
86.SQLite Update 语句
87.SQLite AND/OR 运算符
88.SQLite Where 子句
89.SQLite 表达式
90.SQLite Distinct 关键字
91.SQLite Having 子句
92.SQLite Group By
93.SQLite Join
94.SQLite 约束
95.SQLite PRAGMA
96.SQLite 事务
97.SQLite 视图
98.SQLite Truncate Table
99.SQLite Alter 命令
100.SQLite Indexed By