SQLite教程(五):数据库和事务实用指南
平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“SQLite教程(五):数据库和事务”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
一、Attach数据库:
实际处理时,ATTACH DATABASE语句添加另外一个数据库文件到当前的连接中,如果文件名为":memory:",我们能够将其视为内存数据库,内存数据库无法持久化到磁盘文件上。如果操作Attached数据库中的表,则需在表名前加数据库名,如dbname.table_name。最后需说明的是,如果一个事务包含多个Attached数据库操作,那么该事务仍然是原子的。见如下所示示例:
复制代码 代码如下所示:
sqlite> CREATE TABLE testtable (first_col integer);
sqlite> INSERT INTO testtable VALUES(1);
从实现思路看,sqlite> .backup 'D:/mydb.db' --将当前连接中的主数据库备份到指定文件。
sqlite> .exit
--重新登录sqlite命令行工具:
sqlite> CREATE TABLE testtable (first_col integer);
sqlite> INSERT INTO testtable VALUES(2);
sqlite> INSERT INTO testtable VALUES(1);
sqlite> ATTACH DATABASE 'D:/mydb.db' AS mydb;
在这个场景下,sqlite> .header on --查询结果将字段名作为标题输出。
sqlite> .mode column --将每列都分开显示。
sqlite> SELECT t1.first_col FROM testtable t1, mydb.testtable t2 WHERE t.first_col = t2.first_col;
first_col
----------
1
二、Detach数据库:
理解这一步时,卸载将当前连接中的指定数据库,注意main和temp数据库无法被卸载。见如下所示示例:
复制代码 代码如下所示:
在这个场景下,--该示例承载上面示例的结果,即mydb数据库已经被Attach到当前的连接中。
sqlite> DETACH DATABASE mydb;
sqlite> SELECT t1.first_col FROM testtable t1, mydb.testtable t2 WHERE t.first_col = t2.first_col;
Error: no such table: mydb.testtable
三、事务:
从实现思路看,在SQLite里,如果没有为当前的SQL命令(SELECT除外)显示的指定事务,那么SQLite会自动为该操作添加一个隐式的事务,以保证该操作的原子性和一致性。当然,SQLite也兼容显示的事务,其语法与大多数关系型数据库相比基本相同。见如下所示示例:
复制代码 代码如下所示:
sqlite> BEGIN TRANSACTION;
sqlite> INSERT INTO testtable VALUES(1);
sqlite> INSERT INTO testtable VALUES(2);
在这个场景下,sqlite> COMMIT TRANSACTION; --显示事务被提交,数据表中的数据也发生了变化。
sqlite> SELECT COUNT(*) FROM testtable;
COUNT(*)
----------
2
sqlite> BEGIN TRANSACTION;
sqlite> INSERT INTO testtable VALUES(1);
结合项目来看,sqlite> ROLLBACK TRANSACTION; --显示事务被回滚,数据表中的数据没有发生变化。
sqlite> SELECT COUNT(*) FROM testtable;
COUNT(*)
----------
2
您可能感兴趣的文章:
- SQLite教程(一):SQLite数据库介绍
- SQLite教程(二):C/C++接口简介
- SQLite教程(三):数据表和视图简介
- SQLite教程(四):内置函数
- SQLite教程(五):索引和数据分析/清理
-
09.03
C#对接火山引擎豆包API实现业务调用
-
09.03
Loomy如何打造自动化日程管理流程
-
09.03
Chiaroscuro Portrait in Traditional Robe
-
09.03
掌握五种简单做法清空Excel表格内容提升工作效率
-
09.03
Song Dynasty Enamel Badges
-
09.03
什么是Perl?编程语言Perl详细介绍实用指南
-
-
- SQLite教程(五):数据库和事务实用指南
- 09.03
-
-
- 掌握Excel实用实用技巧助力工作效率提升
- 09.03
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏