SQLite3使用方法大全(四)之数据库创建、附加、分离

数据库创建

语法

基本语法:

sqlite3 [table_name]
/* 例如创建test.db数据库: */
lu@lu$ sqlite3 test.db

我们还可以这样查看是否已经创建数据库:

sqlite> .databases
seq  name             file                                                      
---  -------        -----------------------------------
0    main             /home/lu/test/sqlite3/test.db                             

数据库导出(dump)

这里数据库的导出包含了数据表的导出,当然表中的数据的也会以命令的形式呈现出来,可以与我们在(一)中所提及的”.schema“有所区别。

语法

前提要退出数据库,在终端命令行上操作:

sqlite> .q
sqlite3 [xxx.db] .dump > [xxx.sql]

举例

lu@lu:~/test/sqlite3$ sqlite3 test.db .dump > t.spl
lu@lu:~/test/sqlite3$ cat t.spl 
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE test (
name text,
age text,
class integer);
INSERT INTO "test" VALUES('jack','15',5);

数据库的附加

假设这样一种情况,当在同一时间有多个数据库可用,您想使用其中的任何一个。SQLite 的 ATTACH DTABASE 语句是用来选择一个特定的数据库,使用该命令后,所有的 SQLite 语句将在附加的数据库下执行。

语法

ATTACH DATABASE 'xxx.db' As 'Alias-Name';

注意:xxx.db如果不是在同一目录下要注意描述绝对地址或相对地址

例如:
(1)ATTACH DATABASE '../../xxx.db' As 'Alias-Name';
(2)ATTACH DATABASE '/home/lu/test/xxx.db' As 'Alias-Name';

实例

数据库1:
sqlite> select * from student;
jack|15|5

数据库2:
sqlite> select * from coder;
mark|9000

现在在数据库1中附加数据库2:
sqlite> ATTACH DATABASE "test2.db"  As "tmp";

sqlite> .database
seq  name             file                                                      
---  ---------------  --------------------------------
0    main             /home/lu/test/sqlite3/test.db                             
2    tmp              /home/lu/test/sqlite3/test2.db

sqlite> select * from tmp.coder;
mark|9000

当在同一时间有多个数据库可用,你想使用其中的任何一个,此时这个功能就发挥作用了。

数据库分离

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

您无法分离 main 或 temp 数据库。

如果数据库是在内存中或者是临时数据库,则该数据库将被摧毁,且内容将会丢失。

语法

DETACH DATABASE 'Alias-Name';

举例

sqlite> DETACH DATABASE 'tmp';
sqlite> .database
seq  name             file                                                      
---  ---------------  --------------------------------
0    main             /home/lu/test/sqlite3/test.db                             

现在只剩下main了,操作与ATTACH DATABASE相反。

猜你喜欢

转载自blog.csdn.net/lugandong/article/details/48594601