SQLite 基本控制台命令简介

数据库 其他数据库
SQLite 本身是C语言开发的,开源也跨平台,并且被所有的主流编程语言支持。本文主要介绍SQLite的控制台命令,供读者学习参考。

一、基本简介

SQLite是一个自持的(self-contained)、无服务器的、零配置的、事务型的关系型数据库引擎。因为他很小,所以也可以作为嵌入式数据库内建在你的应用程序中。SQLite数据库引擎实现了主要的 SQL-92 标准,引擎本身只有一个文件,大小不到 300k ,但是并不作为一个独立的进程运行,而是动态或者静态的链接到其他应用程序中。它生成的数据库文件是一个普通的磁盘文件,可以放置在任何目录下。SQLite 被应用在 Solaris 10操作系统、Mac OS 操作系统、iPhone 和 Skype 中。QT4 、Python 、 PHP 都默认支持 SQLite ,Firefox Amarok 等流行的应用程序在内部也使用了 SQLiteSQLite 本身是C 语言开发的,开源也跨平台,并且被所有的主流编程语言支持。

二、下载安装

Windows 版的下载地址为:sqlite-shell-win32-x86-3070701.zip
我们这里下载的是命令行版本,所以是一个可执行文件,还有一个动态链接库版本,如果你的应用程序需要嵌入式数据库,可以下载这个版本。当然,如果你愿意折腾,下载源代码自己编译也是可以的。下载完成,解压出来就一个文件: sqlite3.exe ,可以放置到任意一个路径下,然后把这个路径加入到 PATH 环境变量中,这样我们就可以随时在控制台中运行 SQLite 命令行工具了。

三、基本命令

1、进入命令行环境:sqlite3

打开一个控制台窗口,输入 sqlite3 回车,这时你就进入了 SQLite 命令行环境,如图

SQLite 基本控制台(终端)命令简介

它显示了版本号,并告诉你每一条 SQL 语句必须用分号 ; 结尾 。

2、命令行帮助:.help

在命令行环境下输入 .help 回车,显示所有可使用的命令以及这些命令的帮助。注意:所有的命令开头都是一个点。

3、退出命令行环境

.quit 或者 .exit 都可以退出。

四、数据库和表的相关命令

1、创建一个新的数据库:sqlite3 

先建立一个Db目录,并在 Db 目录中创建一个 test.db 数据库文件,打开控制台窗口,命令如下:

  1. mkdir Db  
  2.  
  3. cd Db  
  4.  
  5. sqlite3 test.db 

2、打开一个已经存在的数据库:sqlite3 已经存在的文件名

创建一个新数据库和打开一个已经存在的数据库命令是一模一样的,如果文件在当前目录下不存在,则新建;如果存在,则打开。

3、导入数据:.read     数据文件

打开记事本,并将下列 SQL 语句复制到记事本中,保存为 test.sql 到上面说到的 Db 目录下,在命令行环境中输入.read   test.sql

即将所有的数据导入到 test.db 数据库中。

test.db 导入数据

  1. BEGIN TRANSACTION;  
  2.  
  3. CREATE TABLE Cars(Id integer PRIMARY KEY, Name text, Cost integer);  
  4.  
  5. INSERT INTO Cars VALUES(1,'Audi',52642);  
  6.  
  7. INSERT INTO Cars VALUES(2,'Mercedes',57127);  
  8.  
  9. INSERT INTO Cars VALUES(3,'Skoda',9000);  
  10.  
  11. INSERT INTO Cars VALUES(4,'Volvo',29000);  
  12.  
  13. INSERT INTO Cars VALUES(5,'Bentley',350000);  
  14.  
  15. INSERT INTO Cars VALUES(6,'Citroen',21000);  
  16.  
  17. INSERT INTO Cars VALUES(7,'Hummer',41400);  
  18.  
  19. INSERT INTO Cars VALUES(8,'Volkswagen',21600);  
  20.  
  21. COMMIT;  
  22.  
  23. BEGIN TRANSACTION;  
  24.  
  25. CREATE TABLE Orders(Id integer PRIMARY KEY, OrderPrice integer CHECK(OrderPrice>0),   
  26.  
  27.                     Customer text);  
  28.  
  29. INSERT INTO Orders(OrderPrice, Customer) VALUES(1200, "Williamson");  
  30.  
  31. INSERT INTO Orders(OrderPrice, Customer) VALUES(200, "Robertson");  
  32.  
  33. INSERT INTO Orders(OrderPrice, Customer) VALUES(40, "Robertson");  
  34.  
  35. INSERT INTO Orders(OrderPrice, Customer) VALUES(1640, "Smith");  
  36.  
  37. INSERT INTO Orders(OrderPrice, Customer) VALUES(100, "Robertson");  
  38.  
  39. INSERT INTO Orders(OrderPrice, Customer) VALUES(50, "Williamson");  
  40.  
  41. INSERT INTO Orders(OrderPrice, Customer) VALUES(150, "Smith");  
  42.  
  43. INSERT INTO Orders(OrderPrice, Customer) VALUES(250, "Smith");  
  44.  
  45. INSERT INTO Orders(OrderPrice, Customer) VALUES(840, "Brown");  
  46.  
  47. INSERT INTO Orders(OrderPrice, Customer) VALUES(440, "Black");  
  48.  
  49. INSERT INTO Orders(OrderPrice, Customer) VALUES(20, "Brown");  
  50.  
  51. COMMIT;  
  52.  
  53. BEGIN TRANSACTION;  
  54.  
  55. CREATE TABLE Friends(Id integer PRIMARY KEY, Name text UNIQUE NOT NULL,   
  56.  
  57. Sex text CHECK(Sex IN ('M', 'F')));  
  58.  
  59. INSERT INTO Friends VALUES(1,'Jane', 'F');  
  60.  
  61. INSERT INTO Friends VALUES(2,'Thomas', 'M');  
  62.  
  63. INSERT INTO Friends VALUES(3,'Franklin', 'M');  
  64.  
  65. INSERT INTO Friends VALUES(4,'Elisabeth', 'F');  
  66.  
  67. INSERT INTO Friends VALUES(5,'Mary', 'F');  
  68.  
  69. INSERT INTO Friends VALUES(6,'Lucy', 'F');  
  70.  
  71. INSERT INTO Friends VALUES(7,'Jack', 'M');  
  72.  
  73. COMMIT;  
  74.  
  75. BEGIN TRANSACTION;  
  76.  
  77. CREATE TABLE IF NOT EXISTS Customers(CustomerId integer PRIMARY KEY, Name text);  
  78.  
  79. INSERT INTO Customers(Name) VALUES('Paul Novak');  
  80.  
  81. INSERT INTO Customers(Name) VALUES('Terry Neils');  
  82.  
  83. INSERT INTO Customers(Name) VALUES('Jack Fonda');  
  84.  
  85. INSERT INTO Customers(Name) VALUES('Tom Willis');  
  86.  
  87. CREATE TABLE IF NOT EXISTS Reservations(Id integer PRIMARY KEY,   
  88.  
  89.         CustomerId integer, Day text);  
  90.  
  91. INSERT INTO Reservations(CustomerId, Day) VALUES(1, '2009-22-11');  
  92.  
  93. INSERT INTO Reservations(CustomerId, Day) VALUES(2, '2009-28-11');  
  94.  
  95. INSERT INTO Reservations(CustomerId, Day) VALUES(2, '2009-29-11');  
  96.  
  97. INSERT INTO Reservations(CustomerId, Day) VALUES(1, '2009-29-11');  
  98.  
  99. INSERT INTO Reservations(CustomerId, Day) VALUES(3, '2009-02-12');  
  100.  
  101. COMMIT;  
  102.  
  103. BEGIN TRANSACTION;  
  104.  
  105. CREATE TABLE Names(Id integer, Name text);  
  106.  
  107. INSERT INTO Names VALUES(1,'Tom');  
  108.  
  109. INSERT INTO Names VALUES(2,'Lucy');  
  110.  
  111. INSERT INTO Names VALUES(3,'Frank');  
  112.  
  113. INSERT INTO Names VALUES(4,'Jane');  
  114.  
  115. INSERT INTO Names VALUES(5,'Robert');  
  116.  
  117. COMMIT;  
  118.  
  119.  
  120. BEGIN TRANSACTION;  
  121.  
  122. CREATE TABLE Books(Id integer PRIMARY KEY, Title text, Author text,   
  123.  
  124.                    Isbn text default 'not available');  
  125.  
  126. INSERT INTO Books VALUES(1,'War and Peace','Leo Tolstoy','978-0345472403');  
  127.  
  128. INSERT INTO Books VALUES(2,'The Brothers Karamazov',  
  129.  
  130.                          'Fyodor Dostoyevsky','978-0486437910');  
  131.  
  132. INSERT INTO Books VALUES(3,'Crime and Punishment',  
  133.  
  134.                          'Fyodor Dostoyevsky','978-1840224306');  
  135.  
  136. COMMIT 

#p#

 4、列出所有的数据表: .tables

完成上面所有的工作以后,我们就可以列出所有的数据表了。

SQLite 基本控制台(终端)命令简介

5、显示数据库结构:.schema

其实就是一些SQL 语句,他们描述了数据库的结构,如图

SQLite 基本控制台(终端)命令简介  

6、显示表的结构:.schema    

SQLite 基本控制台(终端)命令简介

7、导出某个表的数据: .dump   

这时我们可以看到,整个表以 SQL 语句的形式为导出来了,但是只是显示在终端上,如何把它导出到文件中呢?

SQLite 基本控制台(终端)命令简介

8、设置导出目标: 

.output 文件名或者.output   stdout,先运行 .output cars.sql ,然后再运行 .dump 命令试试看?如果要回复成导出到终端(标准输出),则运行 .output stdout。

五、数据显示相关命令

1、设置分隔符:.separator 分隔

我们可以首先运行 SELECT * FROM Names; ,可以看到默认的分隔符是

运行.separator  以后,再 SELECT * FROM Names;,可以看到分隔符已经变成了。

SQLite 基本控制台(终端)命令简介

2、设置显示模式:.mode  模式

有好几种显示模式,默认的是 list 显示模式,一般我们使用 column 显示模式,还有其他几种显示模式可以 .help 看 mode 相关内容。看看下面的图,和上面是不是显示的不一样了?

SQLite 基本控制台(终端)命令简介

3、显示标题栏:.headers   on

看看,是不是又不太一样了?

SQLite 基本控制台(终端)命令简介

4、设置每一列的显示宽度:.width     

一些内容,默认的宽度显示不下,这个命令就有用了。

5、设置 NULL 值显示成什么样子: .nullvalue  你想要的NULL值格式。

默认情况下NULL值什么也不显示,你可以设置成你自己想要的样子。

SQLite 基本控制台(终端)命令简介

6、列出当前显示格式设置情况:.show

SQLite 基本控制台(终端)命令简介

7、配置文件 .sqliterc

如果我们每次进入命令行都要重新设置显示格式,很麻烦,其实 .show 命令列出的所有设置项都可以保存到一个 .sqliterc 文件中,这样每次进入命令行就自动设置好了。.sqlterc 文件在 Linux 下保存在用户的 Home 目录下,在 Windows 下可以保存到任何目录下,但是需要设置环境变量让数据库引擎能找到它,感兴趣的可以看看帮助。

本文就介绍到这里,如果文中有描述不当的地方,欢迎大家批评指正。

【编辑推荐】

  1. 虚拟机上Oracle 10g DataGuard的配置
  2. 揭开功能强大的数据库表DUAL的神秘面纱
  3. 共享database独立Schema构建SAAS平台
  4. ASP通过Oracle Object for OLE对Oracle查询
  5. Oracle认证:详解OracleTemp临时表空间处理方法

 

责任编辑:赵鹏 来源: 博客园
相关推荐

2010-05-11 09:41:56

MySQL基本操作

2011-07-11 09:57:19

WINDOWS控制台DOS命令

2011-07-11 14:20:19

2011-07-06 15:25:33

Windows控制台

2010-12-21 14:32:43

操作控制台

2009-08-19 15:31:32

C#控制台应用程序

2011-12-23 10:51:24

Node.js

2011-08-08 10:55:14

IOS 控制台 Consol

2009-06-15 09:50:34

JBoss控制台

2009-03-04 10:10:49

控制台桌面虚拟化Xendesktop

2009-10-10 10:45:04

VB 2005新型控制

2021-06-17 11:34:54

SLS 阿里云

2011-07-27 13:59:04

2011-07-22 17:05:56

IOS 控制台 GDB

2010-09-02 15:54:26

路由器配置

2011-03-24 10:08:38

Nagiosweb

2011-07-11 13:52:45

Windows控制台

2009-07-29 10:22:00

Ubuntu虚拟控制台linux

2009-06-12 18:50:34

JBoss控制台密码设

2011-07-19 15:15:59

故障恢复控制台
点赞
收藏

51CTO技术栈公众号