SQLite3-DDL语句基本使用
数据库操作
创建数据库
创建数据库可以在命令行中使用以下命令:
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 | sqlite> ATTACH DATABASE 'testDB.db' as 'TEMP'; |
DETACH 语句-分离数据库
SQLite 的 DETACH DATABASE 语句是用来把命名数据库从一个数据库连接分离和游离出来,连接是之前使用 ATTACH 语句附加的。如果同一个数据库文件已经被附加上多个别名,DETACH 命令将只断开给定名称的连接,而其余的仍然有效。您无法分离 main 或 temp 数据库。
语法如下:
1 | DETACH DATABASE 'Alias-Name'; |
表操作
CREATE 语句-创建表
SQLite 的 CREATE TABLE 语句用于在任何给定的数据库创建一个新表。创建基本表,涉及到命名表、定义列及每一列的数据类型。
语法如下:
1 | CREATE TABLE database_name.table_name( |
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 | CREATE TABLE table_name( |