数据库操作

创建数据库

创建数据库可以在命令行中使用以下命令:
1)创建数据库

1
$ sqlite3 DatabaseName.db

2)使用.open 命令,有则打开无则创建并打开

1
sqlite>.open test.db

.dump 导出数据库

你可以使用.dump 命令将一个数据库完全导出到一个文本文件:

1
$sqlite3 testDB.db .dump > testDB.sql

上面的命令将转换整个 testDB.db 数据库的内容到 SQLite 的语句中,并将其转储到 ASCII 文本文件 testDB.sql 中。您可以通过简单的方式从生成的 testDB.sql 恢复,如下所示:

1
$sqlite3 testDB.db < testDB.sql

ATTACH 语句-附加数据库

假设这样一种情况,当在同一时间有多个数据库可用,您想使用其中的任何一个。SQLite 的 ATTACH DATABASE 语句是用来选择一个特定的数据库,使用该命令后,所有的 SQLite 语句将在附加的数据库下执行。
如果数据库尚未被创建,上面的命令将创建一个数据库,如果数据库已存在,则把数据库文件名称与逻辑数据库 ‘Alias-Name’ 绑定在一起。
打开的数据库和使用 ATTACH 附加进来的数据库的必须位于同一文件夹下。
语法如下:

1
ATTACH DATABASE file_name AS database_name;

数据库名称 main 和 temp 被保留用于主数据库和存储临时表及其他临时数据对象的数据库。这两个数据库名称可用于每个数据库连接,且不应该被用于附加,否则将得到一个警告消息,如下所示:

1
2
3
4
sqlite>  ATTACH DATABASE 'testDB.db' as 'TEMP';
Error: database TEMP is already in use
sqlite> ATTACH DATABASE 'testDB.db' as 'main';
Error: database main is already in use;

DETACH 语句-分离数据库

SQLite 的 DETACH DATABASE 语句是用来把命名数据库从一个数据库连接分离和游离出来,连接是之前使用 ATTACH 语句附加的。如果同一个数据库文件已经被附加上多个别名,DETACH 命令将只断开给定名称的连接,而其余的仍然有效。您无法分离 main 或 temp 数据库。
语法如下:

1
DETACH DATABASE 'Alias-Name';

表操作

CREATE 语句-创建表

SQLite 的 CREATE TABLE 语句用于在任何给定的数据库创建一个新表。创建基本表,涉及到命名表、定义列及每一列的数据类型。
语法如下:

1
2
3
4
5
6
7
CREATE TABLE database_name.table_name(
column1 datatype PRIMARY KEY(one or more columns),
column2 datatype,
column3 datatype,
.....
columnN datatype,
);

CREATE TABLE 是告诉数据库系统创建一个新表的关键字。CREATE TABLE 语句后跟着表的唯一的名称或标识。您也可以选择指定带有 table_name 的 database_name。
创建完成后可以使用.tables 命令查看当前数据库中所有的表。
也可以使用 SQLite .schema table_name 命令得到建表语句。

DROP 语句-删除表

SQLite 的 DROP TABLE 语句用来删除表定义及其所有相关数据、索引、触发器、约束和该表的权限规范。
语法如下:

1
DROP TABLE database_name.table_name;

ALTER 语句-修改表结构

SQLite 的 ALTER TABLE 命令不通过执行一个完整的转储和数据的重载来修改已有的表。您可以使用 ALTER TABLE 语句重命名表,使用 ALTER TABLE 语句还可以在已有的表中添加额外的列。
在 SQLite 中,除了重命名表和在已有的表中添加列,ALTER TABLE 命令不支持其他操作。
语法如下:
1)修改表名

1
ALTER TABLE database_name.table_name RENAME TO new_table_name;

2)添加列

1
ALTER TABLE database_name.table_name ADD COLUMN column_def...;

实际使用

1
sqlite> ALTER TABLE OLD_COMPANY ADD COLUMN SEX char(1);

自动增长 Autoincrement

语法

指定column1列的值是自增的:

1
2
3
4
5
6
7
CREATE TABLE table_name(
column1 INTEGER AUTOINCREMENT,
column2 datatype,
column3 datatype,
.....
columnN datatype,
);