当前位置: 首页 > 知识 >正文

SQLite数据库管理的相关命令

Sqlite是一个类似于access的轻量级数据库系统,但是更小、更快、容量更大、并发性更高。

为什么SQLite最适合CMS(内容管理系统)?不是说其他数据库不好。oracle、mysql、SQLServer也是很优秀的数据库,但是设计目标不同,特点也不同。

所以只是更适合某个应用场景,没有绝对的好坏之分。

SQLite的技术特性:

SQLite对SQL92标准的支持包括索引、限制、触发和查看。SQLite不支持外键限制,但支持原子的、一致的、独立的和持久的(ACID)事务(稍后将提供关于ACID的更多信息)。

这意味着事务是原子的,因为它们要么完全执行,要么根本不执行。事务也是一致的,因为数据库永远不会保持不一致的状态。事务也是独立的,所以如果有两个事务同时在同一个数据库上执行操作,

那么这两个事务互不干扰。此外,事务是持久的,因此数据库可以在崩溃和电源故障中存活,而不会丢失或损坏数据。SQLite通过数据库级的排他性和共享锁定实现独立的事务处理。

这意味着当多个进程和线程可以同时从同一个数据库读取数据时,只有一个可以写入数据。在进程或线程可以写入数据库之前,必须获得独占锁。发出独占锁后,其他读或写操作将不会再次发生。

1.创建数据库

通过输入以下命令,启动命令行并在Shell模式下打开CLP:

sqlite3 test.db

尽管我们提供了数据库名称,但是如果数据库不存在,SQLite实际上并没有创建数据库,直到在数据库内部创建了一些东西。

创建数据表

Sqlite creates table members (id integer primary key, name text, age integer, address text);

注意:id是主键,默认情况下该列具有自动增长的属性。

插入数据

SQLite插入成员值(0,' WWL '21,'上海');//ID=0的列不能存在,否则会出错。

Or sqlite inserts member (name, age, address) values ('wwl' 21,' Shanghai');

4.查询数据

sqlite.mode column

sqlite.headers on

sqlite select * from Member;

注:select语句前面的两个命令(.headers和.mode)用于改善显示格式,可以不要。

5.创建视图和索引

sqlite create view schema as select * from Member;

sqlite create index Member_Idx on Member(id)

6.导出数据

使用.dump命令可以将数据库对象导出成SQL格式。不带任何参数时,dump将整个数据库导出为数据库定义语言(DDL)和数据库操作语言(DML)命令,适合重新创建数据库对象和其中的数据。

如果提供了参数,Shell将参数解析作为表名或视图,导出任何匹配给定参数的表或视图,那些不匹配的将被忽略。

默认情况下.dump 命令的输出定向到屏幕。如:dump

如果要将输出重定向到文件,请使用.dump[filename]命令,此命令将所有的输出重定向到指定的文件中。若要恢复到屏幕的输出,只需要执行.output stdout命令就OK了。

sqlite.output file.sql

sqlite.dump

sqlite.output stdout

注:如果file.sql不存在,将在当前工作目录中创建该文件。如果文件存在,它将被覆盖。

7.导入数据

有两种方法可以导入数据,用哪种方法取决于要导入的文件格式。如果文件由SQL语句构成,可以使用.read命令导入文件中包含的命令。

如果文件中包含由逗号或其他分隔符分割的值(comma-swparated values,CSV)组成,可使用.import[file][table]命令,

此命令将解析指定的文件并尝试将数据插入到指定的表中。

.read命令用来导入.dump命令创建的文件。如果使用前面作为备份文件所导出的file.sql,需要先移除已经存在的数据库对象,然后用下面的方法重新导入:

sqlitedrop table Member;

sqlitedrop view schema;

sqlite.read file.sql

8.备份数据库

有两种方式可以完成数据库的备份,具体使用哪一种取决于你希望的备份类型。SQL转储许是移植性最好的备份。

生成转储的标准方式是使用CLP.dump命令:sqlite3 test.db .dump test.sql

在Shell中,可以将输出重定向到外部文件,执行命令,恢复到屏幕输出,如:

sqlite.output file.sql

sqlite.dump

sqlite.output stdout

sqlite.exit

同样,容易将SQL转储作为CLP的输入流实现数据库导入:

sqlite3 test.db test.sql

备份二进制数据库知识比复制文件稍多做一点工作。备份之前需要清理数据库,这样可以释放一些已删除对象不再使用的空间。这数据库文件就会变小,因此二进制的副本也会较小:

sqlite3 test.db vacuum

cp test.db test.Backup

9.其它命令

sqliteselect last_insert_rowid();//获得最后插入的自动增长量值

sqlite.tabes//返回所有的表和视图

sqlite.indices Member //查看一个表的索引

sqlite.schema Member //得到一个表或视图的定义(DDL)语句,如果没有提供表名,则返回所有数据库对象(table,view,index,triger)的定义语句

相关文章:
  • 5月11日基金净值:申万菱信新经济混合最新净值0.9805,跌0.03%
  • 6月8日基金净值:永赢双利债券A最新净值1.2203,涨0.46%
  • php禁止缓存(如何禁止php服务程序中不安全的功能)
  • 5月9日基金净值:融通深证100指数A最新净值1.397,跌0.57%
  • 鹏华国证半导体芯片ETF净值下跌1.91% 请保持关注_基金频道_证券之星
  • 4月14日基金净值:易方达科创板50ETF联接A最新净值0.882,涨3.1%
  • 4月24日基金净值:大成策略回报混合A最新净值1.14,跌0.18%
  • 7月3日基金净值:东方新能源汽车混合最新净值2.6703,涨0.74%
  • 华夏中证新能源ETF净值下跌3.41% 请保持关注
  • 5月19日基金净值:南方军工改革灵活配置混合A最新净值1.3408,涨1.14%