SQlite命令行工具的使用

转载 2015年07月10日 11:48:16

最近使用sqlite较多,这东西现在是越用越着迷,不管是工作或者个人自娱自乐写东西,只要有数据存储首先就想到了sqlite,我一直对C/S模式的数据存储很反感,记得在知道sqlite之前的很长一段时间里一直用的是xml来存数我的数据,我喜欢将数据存储在单一文件里,我可以随时把数据带在身上,而且它们兼容性够好,拿着数据文件到那里都能用,哪怕是在嵌入式系统里照样玩儿的转…

SQLite特性

  1. ACID事务
  2. 零配置 – 无需安装和管理配置
  3. 储存在单一磁盘文件中的一个完整的数据库
  4. 数据库文件可以在不同字节顺序的机器间自由的共享
  5. 支持数据库大小至2TB
  6. 足够小, 大致3万行C代码, 250K
  7. 比一些流行的数据库在大部分普通数据库操作要快
  8. 简单, 轻松的API
  9. 包含TCL绑定, 同时通过Wrapper支持其他语言的绑定
  10. 良好注释的源代码, 并且有着90%以上的测试覆盖率
  11. 独立: 没有额外依赖
  12. Source完全的Open, 你可以用于任何用途, 包括出售它
  13. 支持多种开发语言,C, PHP, Perl, Java, ASP.NET,Python

Sqlite安装
现在各大Linux发型版均有现成的软件包可供安装,而且大部份系统都是自带有的,想确认系统里有没有运行下
$sqlite3
非Linux系统到:http://www.sqlite.org/download.html下载安装
接下来就是sqlite命令行工具的使用

打开或创建数据库
$sqlite3 test.db3
这样就能打开或者创建一个新的数据库文件
$sqlite3 test.db3
SQLite version 3.6.23
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> 

它看起来就是这个样子

SQlite内置命令
它除了能执行SQL语句以外还提供一组内置的命令,它们是以点.开始,比如说查看帮助信息就是 .help退出是 .exit 跟 .quit

创建表
在命令行里大部份的SQL语句它都是支持的,现在来新建两个表

sqlite>create table Artists (
--->ArtistID INTEGER PRIMARY KEY,
--->ArtistName TEXT);

sqlite 对SQL语句大小写不敏感,所以大写小写随便
sqlite>create table CDs (
--->CDID INTEGER PRIMARY KEY,
--->ArtistID INTEGER NOT NULL,
--->Title TEXT NOT NULL,
--->Date TEXT);


这里注意,除了INTEGER PRIMARY KEY其它字段是都可以是无类型的,也就是不关声明什么或者不声明,这个字段是可以存储任何数据的。

插入数据
sqlite>insert into Artists (ArtistID,ArtistName) values (NULL,'Peter Gabriel');
sqlite>insert into Artists (ArtistID,ArtistName) values (NULL,'Bruce Hornsby');
sqlite>insert into Artists (ArtistID,ArtistName) values (NULL,'Lyle Lovett');
sqlite>insert into Artists (ArtistID,ArtistName) values (NULL,'Beach Boys');

sqlite>insert into CDs (CDID,ArtistID,Title,Date) values (NULL,1,'So','1984');
sqlite>insert into CDs (CDID,ArtistID,Title,Date) values (NULL,1,'Us','1992');
sqlite>insert into CDs (CDID,ArtistID,Title,Date) values (NULL,2,'The Way It Is','1986');
sqlite>insert into CDs (CDID,ArtistID,Title,Date) values (NULL,2,'Scenes from the Southside','1990');
sqlite>insert into CDs (CDID,ArtistID,Title,Date) values (NULL,1,'Security','1990');
sqlite>insert into CDs (CDID,ArtistID,Title,Date) values (NULL,3,'Joshua Judges Ruth','1992');
sqlite>insert into CDs (CDID,ArtistID,Title,Date) values (NULL,4,'Pet Sounds','1966');

sqlite是支持导入sql文件的,只要使用内置命令.read即可,比如说我们将以上的命令建成一个sql文件,命名为insert_table.sql

insert into Artists (ArtistID,ArtistName) values (NULL,’Peter Gabriel’);
insert into Artists (ArtistID,ArtistName) values (NULL,’Bruce Hornsby’);
insert into Artists (ArtistID,ArtistName) values (NULL,’Lyle Lovett’);
insert into Artists (ArtistID,ArtistName) values (NULL,’Beach Boys’);
insert into CDs (CDID,ArtistID,Title,Date) values (NULL,1,’So’,’1984′);
insert into CDs (CDID,ArtistID,Title,Date) values (NULL,1,’Us’,’1992′);
insert into CDs (CDID,ArtistID,Title,Date) values (NULL,2,’The Way It Is’,’1986′);
insert into CDs (CDID,ArtistID,Title,Date) values (NULL,2,’Scenes from the Southside’,’1990′);
insert into CDs (CDID,ArtistID,Title,Date) values (NULL,1,’Security’,’1990′);
insert into CDs (CDID,ArtistID,Title,Date) values (NULL,3,’Joshua Judges Ruth’,’1992′);
insert into CDs (CDID,ArtistID,Title,Date) values (NULL,4,’Pet Sounds’,’1966′);

接着在命令行里运行
sqlite>.read insert_table.sql

表查询
来看看现在这两张表里都有那些内容,执行
sqlite>select * from Artists; 

sqlite>select * from CDs;
如果要同时看表头,请在运行查询语句前打开headers选项
sqlite>.headers ON
输出结果看起来应该是这样子


ArtisID|ArtistName
1 |Peter Gabriel
2 |Bruce Hornsby
3 |Lyle Lovett
4 |Beach Boys


CDID|ArtisID|Title |Date
1 |1 |So |1984
2 |1 |Us |1992
3 |2 |The Way It Is |1986
4 |2 |Scenes from the Southside|1990
5 |1 |Security |1990
6 |3 |Joshua Judges Ruth |1992
7 |4 |Pet Sounds |1966

其它的一些查询语句
sqlite>SELECT Title AS AlbumName FROM CDs;

sqlite>SELECT Title FROM CDs WHERE Date>=1990 ORDER BY Title;

sqlite>SELECT Date FROM CDs;

sqlite>SELECT DISTINCT Date FROM CDs;

sqlite>SELECT Title FROM CDs GROUP BY ArtistID;

多表查询
执行
sqlite>SELECT t1.ArtistName,CDs.Title FROM Artists t1, CDs WHERE t1.ArtistID=CDs.ArtistID
得到的结果
ArtistName |Title
Peter Gabriel|So
Peter Gabriel|Us
Peter Gabriel|Security
Bruce Hornsby|The Way It Is
Bruce Hornsby|Scenes from the Southside
Lyle Lovett |Joshua Judge Ruth
Beach Boys |Pet Sounds

更新字段
插入一条数据
sqlite>insert into Artists (ArtistID,ArtistName) values (NULL,'Supernatural');
如果要更改歌手名字为Santana
sqlite>UPDATE Artists SET ArtistName ='Santana' WHERE ArtistID=5;
即可

删除字段
首先执行
sqlite>select * FROM CDs WHERE Title LIKE 'Super%';
看看是不是想要删除的数据,是的话执行
sqlite>DELETE FROM CDs WHERE Title LIKE 'Super%'; 
再运行
sqlite>select * FROM CDs WHERE Title LIKE 'Super%';
看看是不是已经删除了?

如果嫌上面的命令行不够直观高效,而你又非常喜欢多用鼠标,那么推荐你安装SQLite Manager这个Firefox扩展程序,它真的非常方便。

原创文章,转载请注明: 转载自LazyHack | SQlite命令行工具的使用




» 下一篇:线程pthread_mutex_init()锁的应用

参考:
sqlite 命令行 谷歌

MAC下终端sqlite3简单使用

最近iOS项目中用到了sqlite3,所以研究了下MAC下的sqlite3.好了,废话不多说,进入正题.  一.MAC下打开终端      我知道的有两种方式: 1.点击"Launc...
  • majiakun1
  • majiakun1
  • 2014年11月19日 14:49
  • 34287

sqlite3工具的使用方法详细解释

这个例子的环境虽然是windows,但mac os下同样适用。 mac os10.10.5下亲测,非常好用。 ps: mac os10.10.5下sqlite3工具本身是系统自带的...
  • heikefangxian23
  • heikefangxian23
  • 2016年05月26日 16:32
  • 2641

SQLite的命令行操作

1.SQLite管理操作1.1.进入sqlite3交互模式解析: ① sqlite3.exe [dbname] 打开sqlite3的交互模式,[并创建数据库]。 ② .open dbname若未创建数...
  • linux_wgl
  • linux_wgl
  • 2016年06月09日 13:02
  • 7284

SQlite命令行工具的使用

最近使用sqlite较多,这东西现在是越用越着迷,不管是工作或者个人自娱自乐写东西,只要有数据存储首先就想到了sqlite,我一直对C/S模式的数据存储很反感,记得在知道sqlite之前的很长一段时间...
  • dsg333
  • dsg333
  • 2012年12月11日 15:38
  • 265

SQLite 命令行工具

  • 2016年03月22日 16:18
  • 254KB
  • 下载

sqlite加解密命令行工具(windows)

  • 2017年05月24日 10:41
  • 7.65MB
  • 下载

sqlite命令行工具简单操作

在Win32下面操作,先看下sqlite.exe的帮助: D:\>sqlite3.exe -help Usage: sqlite3.exe [OPTIONS] FILENAME [SQL] FI...
  • lixianlin
  • lixianlin
  • 2011年12月10日 17:25
  • 2376

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

转自http://www.cnblogs.com/stephen-liu74/archive/2012/02/24/2325981.html 工欲善其事,必先利其器。学好SQLite的命令行工具...
  • Kiritow
  • Kiritow
  • 2017年08月04日 15:43
  • 169

sqlite命令行工具

sqlite3命令行工具 - By Dorayosqlite3命令行工具是基于终端的SQLite软件,可以查询交互,并且可以多种格式显示结果。它也可以用在脚本中。打开终端,键入如下命令:~ sqli...
  • Chndy_x
  • Chndy_x
  • 2015年06月09日 11:27
  • 508

SQLite学习笔记(11)命令行工具

SPAN style="COLOR: #ff0000">sqlite> .help SPAN>.backup ?DB? FILE      Backup DB (default "ma...
  • Kid_U_ForFun
  • Kid_U_ForFun
  • 2012年09月19日 17:28
  • 1444
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQlite命令行工具的使用
举报原因:
原因补充:

(最多只允许输入30个字)