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

所属分类: 数据库 / SQLite 阅读数: 147
收藏 0 赞 0 分享

一、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教程(十二):锁和并发控制详解,本文讲解了锁和并发控制机制概述、文件锁、回滚日志、数据写入、SQL级别的事务控制等内容,需要的朋友可以参考下
收藏 0 赞 0 分享

SQLite教程(十三):C语言编程实例代码(1)

这篇文章主要介绍了SQLite教程(十三):C语言编程实例代码(1),本文讲解了获取表的Schema信息、动态创建表、删除该表、常规数据插入、创建测试数据表、删除测试表等内容,需要的朋友可以参考下
收藏 0 赞 0 分享

SQLite教程(十四):C语言编程实例代码(2)

这篇文章主要介绍了SQLite教程(十四):C语言编程实例代码(2),本文讲解了高效的批量数据插入和数据查询代码实例,需要的朋友可以参考下
收藏 0 赞 0 分享

一些很有用的SQLite命令总结

这篇文章主要介绍了一些很有用的SQLite命令总结,本文总结了显示表结构、获取所有表和视图、获取指定表的索引列表、导出数据库到 SQL 文件、从 SQL 文件导入数据库等一些非常有用的操作命令,需要的朋友可以参考下
收藏 0 赞 0 分享

SQLite数据库常用语句及MAC上的SQLite可视化工具MeasSQLlite使用方法

这篇文章主要介绍了SQLite数据库常用语句及MAC上的SQLite可视化工具MeasSQLlite使用方法,需要的朋友可以参考下
收藏 0 赞 0 分享

SQLite 性能优化实例分享

本文给大家分享的是个人在实际项目中对于sqlite的一次优化的记录,非常简单实用,希望对大家学习sqlite能够有所帮助。
收藏 0 赞 0 分享

SQL中使用ESCAPE定义转义符详解

这篇文章主要介绍了SQL中使用ESCAPE定义转义符的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

SQLite3的绑定函数族使用与其注意事项详解

这篇文章主要介绍了SQLite3的绑定函数族使用与其注意事项的相关资料,文中通过示例代码介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
收藏 0 赞 0 分享

python之sqlalchemy创建表的实例详解

这篇文章主要介绍了数据库之sqlalchemy创建表的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握理解这部分内容,需要的朋友可以参考下
收藏 0 赞 0 分享

sQlite常用语句以及sQlite developer的使用与注册

sQlite数据库对大家来说应该都不陌生,下面这篇文章主要给大家介绍了关于sQlite常用语句以及sQlite developer使用与注册的相关资料,文中通过示例代码与图片给大家介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面来一起看看吧。
收藏 0 赞 0 分享
查看更多