服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Sqlite - SQLite教程(五):数据库和事务

SQLite教程(五):数据库和事务

2020-06-09 20:58数据库之家 Sqlite

这篇文章主要介绍了SQLite教程(五):数据库和事务,本文讲解了Attach数据库、Detach数据库、事务等内容,需要的朋友可以参考下

一、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

延伸 · 阅读

精彩推荐
  • SqliteSQLite速度评测代码

    SQLite速度评测代码

    SQLite 作为一个轻量级嵌入式数据库,还是非常好用的。雨痕极力推荐~~~~~~ ...

    SQLite教程网5832020-06-01
  • SqliteSQLite 内存数据库学习手册

    SQLite 内存数据库学习手册

    这篇文章主要介绍SQLite 内存数据库的使用方法, 需要的朋友可以参考下 ...

    SQLite教程网3292020-06-06
  • SqliteSQLite 错误码整理

    SQLite 错误码整理

    这篇文章主要介绍了SQLite 错误码,方便大家在开发过程中快速解决问题 ...

    SQLite教程网5532020-06-06
  • SqliteSQLite中的WAL机制详细介绍

    SQLite中的WAL机制详细介绍

    这篇文章主要介绍了SQLite中的WAL机制详细介绍,本文讲解了什么是WAL、WAL如何工作、WAL的优点与缺点、WAL引入的兼容性问题、WAL引入的性能问题等内容,需要...

    dodo83402020-06-08
  • Sqlite基于sqlite特殊字符转义的实现方法

    基于sqlite特殊字符转义的实现方法

    本篇文章是对sqlite特殊字符转义的实现方法进行了详细的分析介绍,需要的朋友参考下 ...

    sqlite数据库教程网4132020-06-04
  • SqliteSQLite 入门教程三 好多约束 Constraints

    SQLite 入门教程三 好多约束 Constraints

    在上一篇随笔的结尾,我提到了SQLite的约束, 但是在那里我把它翻译成了限定符,不太准确,这里先更正一下,应该翻译成约束更贴切一点。 那么什么是...

    SQLite入门教程4572020-06-05
  • SqliteSQLite中重置自动编号列的方法

    SQLite中重置自动编号列的方法

    这篇文章主要介绍了SQLite中重置自动编号列的方法,本文讲解了3种情况和其对应解决方法,需要的朋友可以参考下 ...

    dodo84492020-06-08
  • Sqlite详解SQLite中的查询规划器

    详解SQLite中的查询规划器

    这篇文章主要介绍了详解SQLite中的查询规划器,SQLite是一个开源的嵌入式数据库,需要的朋友可以参考下...

    SQLite教程网8892021-10-25