加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLITE简单使用

发布时间:2020-12-13 00:05:37 所属栏目:百科 来源:网络整理
导读:原文链接: http://www.jb51.cc/article/p-csnwjemf-cd.html [root@glnode04 ~]# sqlite3 test.db 在当前目录下创建数据库文件 test.db,若存在该数据库文件,则是打开数据库文件. SQLite version 3.3.6 Enter ".help" for instructions sqlite .help // 命

原文链接: http://www.52php.cn/article/p-csnwjemf-cd.html [root@glnode04 ~]# sqlite3 test.db 在当前目录下创建数据库文件 test.db,若存在该数据库文件,则是打开数据库文件.
SQLite version 3.3.6
Enter ".help" for instructions
sqlite> .help // 命令不需要用分号结束.
.databases List names and files of attached databases
.dump ?TABLE? ... Dump the database in an SQL text format
.echo ON|OFF Turn command echo on or off
.exit Exit this program
.explain ON|OFF Turn output mode suitable for EXPLAIN on or off.
.header(s) ON|OFF Turn display of headers on or off
.help Show this message
.import FILE TABLE Import data from FILE into TABLE
.indices TABLE Show names of all indices on TABLE
.mode MODE ?TABLE? Set output mode where MODE is one of:
csv Comma-separated values
column Left-aligned columns. (See .width)
html HTML <table> code
insert SQL insert statements for TABLE
line One value per line
list Values delimited by .separator string
tabs Tab-separated values
tcl TCL list elements
.nullvalue STRING Print STRING in place of NULL values
.output FILENAME Send output to FILENAME
.output stdout Send output to the screen
.prompt MAIN CONTINUE Replace the standard prompts
.quit Exit this program
.read FILENAME Execute SQL in FILENAME
.schema ?TABLE? Show the CREATE statements
.separator STRING Change separator used by output mode and .import
.show Show the current values for various settings
.tables ?PATTERN? List names of tables matching a LIKE pattern
.timeout MS Try opening locked tables for MS milliseconds
.width NUM NUM ... Set column widths for "column" mode
sqlite> .databases;
unknown command or invalid arguments: "databases;". Enter ".help" for help
sqlite> .databases
seq name file
--- --------------- ----------------------------------------------------------
0 main /root/test.db

sqlite> drop table test; // SQL 语句用分号结束
sqlite> create table test ( ID varchar(20) PRIMARY KEY,Name nvarchar(20) UNIQUE);
sqlite> insert into test values ( '1234','zhankunlin');
sqlite> insert into test values ( '1234','zhankunlin');
SQL error: column Name is not unique // 违背了主键约束
sqlite> insert into test values ( '123','zhankunlin');
SQL error: column Name is not unique
sqlite> insert into test values ( '123','zhaoyanhong');
sqlite> select * from test;
1234|zhankunlin
123|zhaoyanhong
sqlite> .schema test // 查看表的定义
CREATE TABLE test ( ID varchar(20) PRIMARY KEY,Name nvarchar(20) UNIQUE);
sqlite> .tables
test
sqlite> .databases //查看当前数据库
seq name file
--- --------------- ----------------------------------------------------------
0 main /root/test.db

1 temp /var/tmp/sqlite_QrNXVqClzKC6LWO


更多使用,参考:http://www.cnblogs.com/hnrainll/archive/2011/04/22/2024627.html

SQlite命令行工具的使用

最近使用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,'Bruce Hornsby');
sqlite>insert into Artists (ArtistID,'Lyle Lovett');
sqlite>insert into Artists (ArtistID,'Beach Boys');

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

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

insert into Artists (ArtistID,’Peter Gabriel’);
insert into Artists (ArtistID,’Bruce Hornsby’);
insert into Artists (ArtistID,’Lyle Lovett’);
insert into Artists (ArtistID,’Beach Boys’);
insert into CDs (CDID,’So’,’1984′);
insert into CDs (CDID,’Us’,’1992′);
insert into CDs (CDID,’The Way It Is’,’1986′);
insert into CDs (CDID,’Scenes from the Southside’,’1990′);
insert into CDs (CDID,’Security’,’Joshua Judges Ruth’,’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>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扩展程序,它真的非常方便。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读