一、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学习手册(数据库和事务)相关推荐

  1. SQLite学习手册(目录)

    在实际的应用中,SQLite作为目前最为流行的开源嵌入式关系型数据库,在系统的架构设计中正在扮演着越来越为重要的角色.和很多其它嵌入式NoSQL数据库不同的是,SQLite支持很多关系型数据库的基本特 ...

  2. 学习Stephen Liu的《SQLite学习手册(数据表和视图)》(一)

    好好学习,day day up.不能再玩了,学习要紧 以下内容主要基于对于Stephen Liu的博文SQLite学习手册(数据表和视图)的学习. 零.准备工作 先把sqlite3.exe的路径添加到 ...

  3. SQLite学习手册(锁和并发控制)

    一.概述: 在SQLite中,锁和并发控制机制都是由pager_module模块负责处理的,如ACID(Atomic, Consistent, Isolated, and Durable).在含有数据 ...

  4. SQLite学习手册(开篇)

    一.简介: SQLite是目前最流行的开源嵌入式数据库,和很多其他嵌入式存储引擎相比(NoSQL),如BerkeleyDB.MemBASE等,SQLite可以很好的支持关系型数据库所具备的一些基本特征 ...

  5. SQLite学习手册(临时文件)

    一.简介: 尽管SQLite的数据库是由单一文件构成,然而事实上在SQLite运行时却存在着一些隐含的临时文件,这些临时文件是出于不同的目的而存在的,对于开发者而言,它们是透明的,因此在开发的过程中我 ...

  6. SQLite学习手册(内存数据库)

    一.内存数据库: 在SQLite中,数据库通常是存储在磁盘文件中的.然而在有些情况下,我们可以让数据库始终驻留在内存中.最常用的一种方式是在调用sqlite3_open()的时候,数据库文件名参数传递 ...

  7. SQLite学习手册(数据类型)

    一.存储种类和数据类型: SQLite将数据值的存储划分为以下几种存储类型:      NULL: 表示该值为NULL值.      INTEGER: 无符号整型值.      REAL: 浮点值. ...

  8. SQLite学习手册(命令行工具)

    工欲善其事,必先利其器.学好SQLite的命令行工具,对于我们学习SQLite本身而言是非常非常有帮助的.最基本的一条就是,它让我们学习SQLite的过程更加轻松愉快.言归正传吧,在SQLite的官方 ...

  9. SQLite学习手册(实例代码二)

    三.高效的批量数据插入: 在给出操作步骤之前先简单说明一下批量插入的概念,以帮助大家阅读其后的示例代码.事实上,批量插入并不是什么新的概念,在其它关系型数据库的C接口API中都提供了一定的支持,只是接 ...

最新文章

  1. 姿态检测 树莓派_怎样在树莓派上轻松实现深度学习目标检测?
  2. Linux常见面试题2
  3. 一点小兴趣,一份小生意
  4. 浅析网站外链优劣如何判定?
  5. Java设计模式(学习整理)---命令模式
  6. QT 动态创建对象(第一种方法)
  7. 函数sprintf真好用
  8. 单片机检测stc没反应_我为什么不用STC单片机
  9. mysql ndb 命令_Mysql入门基础命令
  10. No architectures to compile for VALID_错误解决法案
  11. 聊聊mac系统的 secoclient和iTerm2
  12. 【转载】AssetBundle资源打包加载管理
  13. Linux指令篇:文件系统--fdisk(转)
  14. 压摆率和上升时间的区别
  15. 如何实现网站内容秒收录?网站秒收录技巧分享!
  16. CentOS 7 升级Python2.7到Pyton3.6
  17. 根据电子设计大赛心率检测的设计实践思路
  18. 杰奇小说站PC端跳转WAP端实现方式
  19. LZW字典编码(文末附python实现代码)
  20. 大数据分析的几种方法

热门文章

  1. python中序列和列表区别细菌真菌病毒_python是哪种动物_动物的分类
  2. mysql删除以什么开头的数据_Mysql如何删除以“#sql-”开头的临时表
  3. 如何用python绘图、柱形图、线形图等_python使用Plotly绘图工具绘制散点图、线形图...
  4. Java Integer于Int 进行==双等于的内存比较时的一些问题说明
  5. https 页面中引入 http 资源的解决方式
  6. 【C++】C++自学旅程(5):指针和引用
  7. iOS xocde编译报错 NSObjCRuntime.h
  8. Shell 脚本修改 Mac IP地址
  9. 思科网络CCNA的学习笔记-关于IP和子网的计算
  10. IIS7 与 WCF 问题总结