sqlite3学习之数据库操作(创建、附加、分离)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/luyaran/article/details/86227695

SQLite 的 sqlite3 命令被用来创建新的 SQLite 数据库,所以我们可以不需要任何特殊的权限即可创建一个数据库,语法格式也很简单,如下:

sqlite3 DatabaseName.db

运行完上述命令之后,会在你的当前目录下生成一个你的数据库名称加上.db做后缀的文件,这个文件就是数据库文件,我们应该保证数据库名称的唯一性,并且此文件将会被 SQLite 引擎用作数据库,等数据库创建完毕后,我们可以使用如下命令查看是否创建成功:

.databases

我们可以使用 SQLite的 .quit 命令退出 sqlite 提示符。

我们可以在命令提示符中使用 SQLite的 .dump 点命令来导出完整的数据库在一个文本文件中,如下:

sqlite3 testDB.db .dump > testDB.sql

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

sqlite3 testDB.db < testDB.sql

SQLite 的 ATTACH DATABASE 语句是用来选择一个特定的数据库,使用该命令后,所有的 SQLite 语句将在附加的数据库下执行,语法格式如下:

ATTACH DATABASE 'DatabaseName' As 'Alias-Name';

如果数据库尚未被创建,上面的命令将创建一个数据库,如果数据库已存在,则把数据库文件名称与逻辑数据库 'Alias-Name' 绑定在一起。

如果想附加一个现有的数据库 testDB.db,则 ATTACH DATABASE 语句将如下所示:

ATTACH DATABASE 'testDB.db' as 'TEST';

我们可以使用 SQLite .database 命令来显示附加的数据库。

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

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;

SQLite的 DETACH DTABASE 语句是用来把命名数据库从一个数据库连接分离和游离出来,连接是之前使用 ATTACH 语句附加的。如果同一个数据库文件已经被附加上多个别名,DETACH 命令将只断开给定名称的连接,而其余的仍然有效,但是我们无法分离 maintemp 数据库,还有就是,如果数据库是在内存中或者是临时数据库,则该数据库将被摧毁,且内容将会丢失。

我们来看下SQLite 的 DETACH DATABASE 'Alias-Name' 语句的基本语法:

DETACH DATABASE 'Alias-Name';

上述代码中,'Alias-Name' 与我们之前使用 ATTACH 语句附加数据库时所用到的别名相同。

假设我们已经创建了一个数据库,并给它附加了 'test' 和 'currentDB',使用 .database 命令,我们可以看到如下场景:

sqlite>.databases
seq  name             file
---  ---------------  ----------------------
0    main             /home/sqlite/testDB.db
2    test             /home/sqlite/testDB.db
3    currentDB        /home/sqlite/testDB.db

接下来,我们尝试把 'currentDB' 从 testDB.db 中分离出来,如下:

DETACH DATABASE 'currentDB';

我们再来检查当前附加的数据库,如下:

sqlite>.databases
seq  name             file
---  ---------------  ----------------------
0    main             /home/sqlite/testDB.db
2    test             /home/sqlite/testDB.db

我们会发现,testDB.db 仍与 'test' 和 'main' 保持连接。

好啦,本次记录就到这里了。

如果感觉不错的话,请多多点赞支持哦。。。

猜你喜欢

转载自blog.csdn.net/luyaran/article/details/86227695