SQLite:
H2:
Firebird:
Berkeley DB:
LevelDB:
RocksDB:
SQLite3是一个轻量级的关系型数据库管理系统,它遵循ACID(原子性、一致性、隔离性和持久性)原则,广泛用于嵌入式系统和应用程序中。以下是SQLite3的一些主要特点和优势:
sudo apt update
sudo apt install sqlite3 libsqlite3-dev
sqlite3
是SQLite的命令行工具。libsqlite3-dev
是SQLite的开发库,供开发者使用。sqlite3 database_name.db
database_name.db
的数据库文件。如果文件不存在,它将被创建。CREATE TABLE table_name ( column1_name column1_type, column2_name column2_type, ... );
table_name
的新表,并指定表的列及其数据类型。.schema table_name
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
SELECT column1, column2 FROM table_name WHERE condition;
WHERE
子句进行条件过滤。UPDATE table_name SET column1 = value1 WHERE condition;
DELETE FROM table_name WHERE condition;
SELECT * FROM table_name;
DROP TABLE table_name;
.tables
.quit
CREATE TABLE table_name (column1 datatype constraints, column2 datatype constraints, ...);
INTEGER
, TEXT
, REAL
)。PRIMARY KEY
, NOT NULL
)。使用 AUTOINCREMENT
关键字使主键值自动增长(仅对 INTEGER PRIMARY KEY
列有效)。INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
SELECT column1, column2, ... FROM table_name WHERE condition ORDER BY column1 [ASC|DESC];
age > 25
),可以省略。ASC
表示升序(默认),DESC
表示降序。DELETE FROM table_name WHERE condition;
age < 20
)。DROP TABLE table_name;
在 SQLite3 中,可以通过 AUTOINCREMENT
关键字使主键列的值自动递增。通常与 INTEGER PRIMARY KEY
列一起使用,以确保每次插入新行时,主键值都会自动增加并且唯一。
用法:INTEGER PRIMARY KEY AUTOINCREMENT
用于定义一个列为主键并自动递增。
INTEGER PRIMARY KEY AUTOINCREMENT
。ORDER BY
子句用于对查询结果进行排序。你可以指定一个或多个列进行排序,并选择升序(ASC
)或降序(DESC
)方式。
升序排序:默认排序方式,使用 ASC
关键字,按列的值从小到大排序。如果省略 ASC
,排序默认为升序。
降序排序:使用 DESC
关键字,按列的值从大到小排序。
ORDER BY column1 ASC
:按 column1
列的升序排列查询结果。ORDER BY column1 DESC
:按 column1
列的降序排列查询结果。WHERE
子句用于在查询中添加条件,从而筛选满足特定条件的记录。
用法:在 SELECT
语句中使用 WHERE
子句,以指定查询条件。
age > 25
)、多个条件的组合(如 age > 25 AND name = 'Alice'
),或使用通配符和其他运算符进行更复杂的筛选。内联接用于从两个表中返回所有满足联接条件的记录。只有当两个表中的记录满足联接条件时,才会包含在结果中。
用法: SELECT column1, column2, ... FROM table1 INNER JOIN table2 ON table1.common_column = table2.common_column;
解释:
左联接返回左表中的所有记录,即使在右表中没有匹配的记录。如果右表中没有匹配的记录,则结果中右表的列将包含空值(NULL)。
用法: SELECT column1, column2, ... FROM table1 LEFT JOIN table2 ON table1.common_column = table2.common_column;
解释:
SQLite3 不直接支持右联接(RIGHT JOIN)。通常可以通过将表的位置互换来实现右联接的效果,即使用左联接并调换表的位置。
用法: SELECT column1, column2, ... FROM table2 LEFT JOIN table1 ON table1.common_column = table2.common_column;
解释:
交叉联接用于生成两个表之间的笛卡尔积,即每个表的每一行与另一个表的每一行进行组合。交叉联接会返回一个包含所有可能行组合的结果集。
用法: SELECT column1, column2, ... FROM table1 CROSS JOIN table2;
解释:
注意:
sqlite3_open(const char *filename, sqlite3 **ppDb)
sqlite3
对象的指针,用于接收数据库连接句柄。sqlite3_close(sqlite3 *pDb)
sqlite3_exec(sqlite3 *db, const char *sql, int (*callback)(void*, int, char**, char**), void *data, char **errmsg)
sqlite3_prepare_v2(sqlite3 *db, const char *sql, int length, sqlite3_stmt **stmt, const char **tail)
sqlite3_stmt
语句句柄的指针。sqlite3_step(sqlite3_stmt *stmt)
sqlite3_finalize(sqlite3_stmt *stmt)
sqlite3_column_text(sqlite3_stmt *stmt, int col)
sqlite3_column_int(sqlite3_stmt *stmt, int col)
sqlite3_errmsg(sqlite3 *db)
sqlite3_errcode(sqlite3 *db)
sudo apt update
sudo apt install sqlitebrowser
sqlitebrowser + 数据库文件(.db)