语句获取并显示所有这些记录,本节记录必威手

本节记录 SQLite 编制程序人士所采用的简便却使得的通令。这一个命令被叫作 SQLite 的点命令,那些命令的差异之处在于它们不以分号结束。

SQLite -命令

  对SQLite文明已久,却是一向没使用过,今天就来设置试用下。

Sqlite命令操作塑造数据库档案
用sqlite3建构数据库的办法很轻便,只要在shell下键入(以下$符号为shell提醒号,请勿键入):
$ sqlite3 foo.db
倘若目录下并没有foo.db,sqlite3就能够树立这一个数据库。sqlite3并未强制数据库档名要怎么取,假诺您欣赏,也足以取个foo.icannameitwhateverilike的档名。
在sqlite3提醒列下操作
步向了sqlite3之后,会看出以下文字:
SQLite version 3.1.3
Enter ".help" for instructions
sqlite>
此刻假设使用.help能够获得求助,.quit则是偏离(请留神:不是quit)
SQL的吩咐格式
因而的SQL指令都是以分行(;)结尾的。假如超越七个减号(--)则意味表明,sqlite3会略过去。
树立资料表
只要大家要建几个称呼film的资料表,只要键入以下指令就可以了:
create table film(title, length, year, starring);
如此大家就营造了三个叫做film的资料表,里面有name、length、year、starring八个字段。
这些create table指令的语法为:
create table table_name(field1, field2, field3, ...);
table_name是资料表的称谓,田野(field)x则是字段的名字。sqlite3与众多SQL数据库软件区别的是,它不在乎字段属于哪类材质型态:sqlite3的字段能够积累任何事物:文字、数字、大批量文字(blub),它会在及时自动调换。
组建目录
如果资料表有比相当多的资料,大家便会确立索引来加飞快度。好比说:
create index film_title_index on film(title);
情趣是对准film资料表的name字段,建立多个堪称film_name_index的目录。这一个命令的语法为
create index index_name on table_name(field_to_be_indexed);
若果确立了目录,sqlite3会在针对该字段作查询时,自动使用该索引。那总体的操作都是在幕后自动发出的,无须使用者非常指令。
步向一笔资料
接下去大家要参预资料了,插手的章程为利用insert into指令,语法为:
insert into table_name values(data1, data2, data3, ...);
比如大家得以加入
insert into film values ('Silence of the Lambs, The', 118, 1991, 'Jodie Foster');
insert into film values ('Contact', 153, 1997, 'Jodie Foster');
insert into film values ('Crouching Tiger, Hidden Dragon', 120, 2000, 'Yun-Fat Chow');
insert into film values ('Hours, The', 114, 2002, 'Nicole Kidman');
万一该字段未有资料,大家得以填NULL。
询问资料
讲到这里,大家究竟要从头介绍SQL最强劲的select指令了。大家率先简介select的中坚句型:
select columns from table_name where expression;
最广大的用法,当然是倒出全部数据库的剧情:
select * from film;
假若资料太多了,大家兴许会想限制笔数:
select * from film limit 10;
或是照着影片年度来排列:
select * from film order by year limit 10;
唯恐年份相当近的影视先列出来:
select * from film order by year desc limit 10;
也许大家只想看录制名称跟年份:
select title, year from film order by year desc limit 10;
查全部茱蒂佛斯特演过的录制:
select * from film where starring='Jodie Foster';
查全体明星名字开首叫茱蒂的影视('%' 符号正是 SQL 的万用字符):
select * from film where starring like 'Jodie%';
查全数明星名字以茱蒂初始、年份晚于1984年、年份晚的事先列出、最多十笔,只列出影片名称和年度:
select title, year from film where starring like 'Jodie%' and year >= 1985 order by year desc limit 10;
神迹大家只想清楚数据库一共有稍许笔资料:
select count() from film;
有的时候大家只想知道壹玖捌壹年从此的电影有几部:
select count(
) from film where year >= 1985;
(进一步的各类组合,要去看SQL专书,可是你差相当少已经知道SQL为啥如此流行了:这种语言允许你将各类查询条件构成在共同──而我们还没涉及「跨数据库的同台查询」呢!)
什么样转移或删除资料
询问select的用法特别关键,因为要在sqlite更换或删除一笔资料,也是靠一样的语法。
诸如有一笔资料的名字打错了:
update film set starring='Jodie Foster' where starring='Jodee Foster';
就能把主演字段里,被打成'Jodee Foster'的那笔(或多笔)资料,改回成Jodie Foster。
delete from film where year < 1970;
就能删除全体时代早于1967年(不含)的录制了。
别的sqlite的特地用法
sqlite能够在shell底下直接实施命令:
sqlite3 film.db "select * from film;"
输出 HTML 表格:
sqlite3 -html film.db "select * from film;"
将数据库「倒出来」:
sqlite3 film.db ".dump" > output.sql
使用输出的素材,建设构造贰个相同的数据库(加上以上命令,即是标准的SQL数据库备份了):
sqlite3 film.db < output.sql
在大方安排资料时,你恐怕会须要先打那么些命令:
begin;
插入完资料后要记得打这么些命令,资料才会写进数据库中:
commit;
小结
如上大家介绍了SQLite那套数据库系统的用法。事实上OS X也许有诸于SQLiteManagerX那类的图形接口程序,能够方便数据库的操作。可是万变不离其宗,理解SQL指令操作,SQLite与其各家变种就很轻易上手了。
关于为何要写那篇教学呢?除了因为OS X Tiger一大波使用SQLite之外(比如:Safari的奥迪Q7SS reader,就是把稿子存在SQLite数据Curry!你能够开开看~/Library/Syndication/Database3这么些档案,看看里面有啥样料),OpenVanilla从0.7.2始发,也引用了以SQLite为根基的词汇处理工科具,以及全字库的注音输入法。因为使用SQLite,这五个模块不管数据库内有个别许笔资料,都得以做到「须臾间运维」以及比非常的慢捷的查询答复。
将一套有助于好用的数据库软件包进OS X中,当然也总算Apple格外非凡聪明的精选。再努力一点的对象大概已经起来想拿SQLite来记录种种东西(像大家内部就有壹个人写了个程序,自动记录电瓶状态,写进SQLite数据库中再做总括......)了。想像空间可说格外广阔。
眼前支援SQLite的程序语言,你能体悟的光景都有了。这套数据库二零零六年还收获了美利坚合众国O'Reilly Open Source Conference的顶级开放源代码软件奖,奖评是「有如何事物能让Perl, Python, PHP, Ruby语言团结一致地赞助的?便是SQLite」。简来说之SQLite的地位了。而SQLite程序相当小,更是个别打 "gcc -o sqlite3 *",不需任何非凡设定就能够跨平台编写翻译的前后相继。小而省,小而美,SQLite连网址都比较少废话,直指SQL语法精要及API使用格局,原来的书文者大约也可以算是某种程序设计之道(Tao of Programming)里所说的至人了。
sqlite3的出格命令
超越四分之一候,sqlite3读入输入行,并把它们传递到SQLite库中去运营。不过一旦输入行以贰个点(“.”)起首,那么那行将被sqlite3程序自个儿截取并解释。这个“点命令”平常被用来改动查询输出的格式,可能实践鞭个预封包(预订义prepackaged)的询问语句。
你能够在其他时候输入“.help”,列出可用的点命令。举例
sqlite> .help
.bail ON|OFF Stop after hitting an error. Default OFF
.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
.load FILE ?ENTRY? Load an extension library
.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>
改造输出格式
sqlite3程序得以以多样分歧的格式展现一个询问的结果:"csv", "列", "html", "插入", "行", "制表"和"tcl"。你能够用".mode"点命令在这几个输出格式之间切换。
暗中同意的出口格式是“列表”。在列表形式下,每条查询结果记录被写在一行中而且每列之间以七个字符串分割符隔开分离。私下认可的相间符是八个管道符号(“|”)。列表符号在当你输出查询结果到别的贰个符加管理的主次(如AWK)中去是越发有用。
sqlite> .mode list
sqlite> select * from tbl1;
hello|10
goodbye|20
sqlite>
你能够用“.separator”点命令来改动分界符。举个例子,为了把分割符改为贰个逗号和三个空格,你能够这么做:
sqlite> .separator ", "
sqlite> select * from tbl1;
hello, 10
goodbye, 20
sqlite>
在“line"情势下,每三个坐落条记下中的列在它和谐那行展现。每行由列名、贰个等号和列数据整合。下一条记下以二个空行隔断。那是三个行情势输出的事例:
sqlite> .mode line
sqlite> select * from tbl1;
one = hello
two = 10
one = goodbye
two = 20
sqlite>
在列格局下,每条记下在二个独门的行中以数据列对齐的方式呈现。列如:
sqlite> .mode column
sqlite> select * from tbl1;
one two

SQLite 的 SELECT 语句用于从 SQLite 数据库表中获取数据,以结果表的款型再次回到数据。这么些结果表也被称得上结果集。

让我们在命令提醒符下键入二个简单易行的 sqlite3 命令,在 SQLite 命令提醒符下,能够动用各类 SQLite 命令。

本章将带你通过简单的和卓有效能的吩咐使用SQLite程序猿。这个命令被称之为SQLite点命令,这一个命令的比不上是她们不该以总局(;)甘休。    

一、安装


语法

$sqlite3

SQLite version 3.3.6

Enter ".help" for instructions

sqlite>

让大家先从输入二个简约的sqlite3指令在命令提醒符将提供您SQLite命令指示符会发出有滋有味的SQLite命令。

  下载地址:

hello 10
goodbye 20
sqlite>
在默许的事态下,每列至少拾贰个字符宽。太宽的多寡将被截取。你能够用“.width”命令来调节列宽。如下所示:
sqlite> .width 12 6
sqlite> select * from tbl1;
one two

SQLite 的 SELECT 语句的基本语法如下:

如需获得可用的点命令的清单,能够在别的时候输入 ".help"。比方:

$sqlite3

  将Precompiled Binaries for Windows下的包下载下来sqlite-dll-win64-x64-3150100.zip、sqlite-tools-win32-x86-3150100.zip


SELECT column1, column2, columnN FROM table_name;

sqlite>.help

SQLite version 3.3.6

  sqlite-dll-win64-x64-3150100.zip包蕴.def、.dll多个文本

hello 10
goodbye 20
sqlite>
地方例子中".width"命令设置第一列宽为10回之列宽为6。另外的列宽不改变。你可以钦点与你询问结果须要的列数一样多的“.width”参数。
即使您钦命一列宽为0,那么那么些列宽将电动以下边多少个数字中的最大值做为列宽:10、表头宽度和最宽的数据列的拉长率。那足以让列自动调节幅度。每列的私下认可设置为电动调度的0值。
出现在输出起先两行的列标示能够用".header"点命令关闭。在地点的例证中,列标示是张开的。能够用上边包车型地铁法子关闭列标示:
sqlite> .header off
sqlite> select * from tbl1;
hello 10
goodbye 20
sqlite>
另外叁个灵光的输出情势是"insert"。在插入形式下,被子格式化为看起来像SQL INSERT语句的样式。你能够用插队格局来发出文书(便于)以往用于分裂数据库的输入。
当内定插入形式时,你不可能不给定贰个特定参数就是要插入的表名。譬如:
sqlite> .mode insert new_table
sqlite> select * from tbl1;
INSERT INTO 'new_table' VALUES('hello',10);
INSERT INTO 'new_table' VALUES('goodbye',20);
sqlite>
风行的出口格式是“html”。在这种格局下,sqlite3把询问的结果写做XHTML表。开始的<TABLE>和停止的</TABLE>(标志)未有写出,但有<TCR-V>、<TH>和<TD>等分界符。html输出对 CGI来讲是极其实用地。
把结果写到文件中
默许处境下,sqlte3把结送到标准输出。你能够用“.output”命令改变它。只须把出口文件名做为.output命令的输出参数然后全体继续查询结果将被写到那三个文件中。用“.output stdout”再二次改为规范输出。举个例子:
sqlite> .mode list
sqlite> .separator |
sqlite> .output test_file_1.txt
sqlite> select * from tbl1;
sqlite> .exit
$ cat test_file_1.txt
hello|10
goodbye|20
$
查询数据库结构
sqlite3程序提供多少个有效的用来查询数据库结构的敏捷命令。那些不是不能够用其他方法来达成。这么些命令唯有是一个急速形式而已。
举例,为了查看数据库的表列表,你能够敲入“.tables”。
sqlite> .tables
tbl1
tbl2
sqlite>
“.tables”命令相似于设置列表情势然后实践接下去的询问:
SELECT name FROM sqlite_master WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%'UNION ALL SELECT name FROM sqlite_temp_master WHERE type IN ('table','view') ORDER BY 1
实质上,你能够查阅sqlite3的源代码(能够在源文件树的src/shell.c中),你可找到地点的现实性的查询。
“.indices”命令成效类似的不二等秘书技是列出特定表的具备的目录。“.indics”命令须二个参数即所要索引表的表名。最终,但不是起码,是“.schema”命令。不带其余参数,“.schema”命令展现原始的用来创建当前数据库的 CREATE TABLE和CREATE INDEX语句。就算你给".schema"命令三个表名,它显得原始的创始该表和它抱有索引的CREATE语句。大家得以:
sqlite> .schema
create table tbl1(one varchar(10), two smallint)
CREATE TABLE tbl2 (
f1 varchar(30) primary key,
f2 text,
f3 real
)
sqlite> .schema tbl2
CREATE TABLE tbl2 (
f1 varchar(30) primary key,
f2 text,
f3 real
)
sqlite>
".schema"命令能够用设置列表然后实行以下查询来促成:
SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master)WHERE type!='meta'ORDER BY tbl_name, type DESC, name
要么,假使您给".schema"命令多个参数,由于你只想赢得一个表的构造,查询能够是这么:
SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master)WHERE type!='meta' AND sql NOT NULL AND name NOT LIKE 'sqlite_%'ORDER BY substr(type,2,1), name
你能够担供贰个参数给.schema命令。若是那橛,查询能够是这么的:
SELECT sql FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master)WHERE tbl_name LIKE '%s' AND type!='meta' AND sql NOT NULL AND name NOT LIKE 'sqlite_%'ORDER BY substr(type,2,1), name
在查询中“%S“为您的参数所代表。那令你能够询数据库结构的有些子集。
sqlite> .schema %abc%
与那一个共同,“.table”命令也接受三个形式作为他的参数。假如你给“.table”八个参数,“%”将被前后扩张况且贰个LIKE子句被增大到查询上。那让您能够列出只与一定情势相相称的的表。
“.datebasae”命令展现全体当前连接展开的数据库的二个列表。将同意二回到少四个。第三个是“main”,最先张开的可怜数据库。第1个是"temp",用于有的时候表的数据库。对于用ATTACH语句附加的数量恐怕有增大数据库列表。输出的率先列与之连通的数码库名,第二列是外界文件名。
sqlite> .databases
将全方位数据库转变为ASCII文本文件
".dump"命令成一个纯粹的ASCII文本文件。那几个文件能够被当做管道传递给sqlite3限令来调换回数据库。
三个最佳的造作二个数据库档案拷贝的下令是:
$ echo '.dump' | sqlite3 ex1 | gzip -c >ex1.dump.gz
它发生多个名称为ex1.dump.gz的文件,它含有了您之后或在其余机器上海重机厂构数据库的全体的信息。要重构数据库,只须敲入:
$ zcat ex1.dump.gz | sqlite3 ex2
以此文本格式是纯粹的SQL语句所以您能够用.dump命令来导出七个SQLite数据库到另贰个常用的SQL数据库引擎。举例:
$ createdb ex2
$ sqlite3 ex1 .dump | psql ex2
其他的点命令
".explain"命令能够被用来安装输出格式为“column” 并设置列宽为 EXPLAIN命令看起来相比较合理的小幅。EXPLAIN命令是SQLite特有的SQL增添,它是对调治有用。要是其余正规的SQL被EXPLAIN实践,那么SQL命令被阐述并深入分析但并不实行。取代他的是,虚构机指令类别将被用于实行SQL命令并回到二个像样的询问结果。如:
sqlite> .explain
sqlite> explain delete from tbl1 where two<20;
addr opcode p1 p2 p3

在此处,column1, column2...是表的字段,他们的值正是您要获得的。纵然你想得到具备可用的字段,那么能够采纳上面的语法:

*管教 sqlite> 提醒符与点命令之间平昔不空格,不然将无法平常专门的学业。

Enter ".help" for instructions

  sqlite-tools-win32-x86-3150100.zip满含多个施行文件exe


SELECT * FROM table_name;

让大家品尝运用 .show 命令,来查阅 SQLite 命令提醒符的默许设置。

sqlite >

  将它们一起解压到D:sqlite文件夹,配置碰着变量PATH后扩充“D:sqlite;”

0 ListOpen 0 0
1 Open 0 1 tbl1
2 Next 0 9
3 Field 0 1
4 Integer 20 0
5 Ge 0 2
6 Key 0 0
7 ListWrite 0 0
8 Goto 0 2
9 Noop 0 0
10 ListRewind 0 0
11 ListRead 0 14
12 Delete 0 0
13 Goto 0 11
14 ListClose 0 0
“.timeout”命令设置sqlite3等待叁个筹划存款和储蓄文件锁定请除直到错误再次回到的总时间。暗中同意的超时值是0因而要是别的必要的数码库表或体系列被锁定期它将马上回到八个荒唐。
末段,大家提到“.exit”命令它交导致sqlite3退出。
在指令新昌高腔本中动用sqlite3
一个在脚本命令中央银行使sqlite3的法子是用“echo”或“cat”来发生一个命令种类在三个文本中,然后当从三个生出的一声令下行中重定向输入时调用sqlite3。它使得并且适应大多条件。但作为一叠合的便民是,sqlite3允许三个单纯的SQL语句在命令行中作为数据库名后的第三个参数输入。当sqlite3程序带着四个参数运行时,第3个参数被传送给SQLite库管理,查询以列表格局打字与印刷到规范输出,然后程序退出。那个机制被规划用来让sqlite3轻松于用于连接诸如"AWK"的顺序。比如:
$ sqlite3 ex1 'select * from tbl1' |

实例

sqlite>.show

echo: off

explain: off

headers: off

mode: column

nullvalue: ""

output: stdout

separator: "|"

width:

sqlite>

清单的可用点命令,您能够输入"。在另外时候帮助"。譬如:

  借让你想从任何目录下运作CLP,需求将该公文复制到Windows系统路线下。默许情状下,Windows中劳作的路径是根分区下的(C:WindwosSystem32)。

awk '{printf "<tr><td>%s<td>%sn",$1,$2 }'
<tr><td>hello<td>10
<tr><td>goodbye<td>20
$
告竣命令行命令
SQLite命令平常以一个总局截止。在贰个命令行中你也得以用“GO”单词(大小写敏感)大概七个“/”斜线在它所在行结束三个限令。那常被SQL Server和Oracle使用。那个将不在sqlite3_exec()中有用,因为命令行在传递它们到函数在此之前把这个翻译为分行。
从源文件中编写翻译sqlite3
sqlite3程序当你编写翻译SQLite库时自动被确立。只须取得一个源文件树的正片,运维“configure"然后"make"即可。

即使 COMPANY 表有以下记录:

格式化输出

sqlite>.help

二、运行

ID NAME AGE ADDRESS SALARY


1 Paul 32 California 20000.0

2 Allen 25 Texas 15000.0

3 Teddy 23 Norway 20000.0

4 Mark 25 Rich-Mond 65000.0

5 David 27 Texas 85000.0

6 Kim 22 South-Hall 45000.0

7 James 24 Houston 10000.0

您能够选择下列的点命令来格式化输出为本学科上面所列出的格式:

地点的吩咐将显得叁个列出种种主要SQLite点命令,如下:

  张开sqlite3.exe,自动调出Windows命令行窗口。当SQLite命令行提醒符出现时,输入.help,将现出一列类似相关命令的求证。输入.exit后脱离程序。

下边是二个实例,使用 SELECT 语句获取并展现全数那么些记录。在那边,前八个指令被用来安装科学格式化的出口。

sqlite>.header on

sqlite>.mode column

sqlite>.timer on

sqlite>

Command

Description

.backup ?DB? FILE

(默认"主要")备份数据库文件

.bail ON|OFF

(默认)停止后打一个错误。

.databases

连接数据库的名称和文件列表

.dump ?TABLE?

把数据库的SQL文本格式。如果表指定,只有转储表像模式匹配表。

.echo ON|OFF

打开或关闭命令显示

.exit

SQLite退出提示

.explain ON|OFF

打开或关闭输出模式适合解释。没有参数,结果解释。

.header(s) ON|OFF

打开或关闭显示的标题

.help

显示此消息

.import FILE TABLE

将数据从文件导入表

.indices ?TABLE?

显示所有索引的名称。如果表指定,只显示索引表等表匹配模式。

.load FILE ?ENTRY?

加载一个扩展库

.log FILE|off

打开或关闭日志记录,文件可以stderr / stdout

.mode MODE

设置输出模式,模式是:

  • csv 逗号分隔的值
  • column 左对齐列.
  • html HTML <table> code
  • insert表的SQL insert语句
  • line 每行一个值
  • list Values delimited by .separator string
  • tabs Tab-separated values
  • tcl TCL列表元素

.nullvalue STRING

打印字符串代替NULL值

.output FILENAME

发送输出文件名

.output stdout

发送输出到屏幕上

.print STRING...

印刷文字字符串

.prompt MAIN CONTINUE

取代标准的提示

.quit

SQLite退出提示

.read FILENAME

执行SQL的文件名

.schema ?TABLE?

显示创建语句。如果表指定,只显示表匹配模式表。

.separator STRING

改变分离器使用的输出模式和进口

.show

显示当前值不同的设置

.stats ON|OFF

开启或关闭状态

.tables ?PATTERN?

匹配表的名字像模式列表

.timeout MS

试着打开锁定表 for MS milliseconds

.width NUM NUM

为"列"模式设置列宽

.timer ON|OFF

打开或关闭CPU计时器测量

三、轻易操作

sqlite>.header on

sqlite>.mode column

sqlite> SELECT * FROM COMPANY;

sqlite_master 表格

 

  入门教程:

终极,将赢得以下的结果:

主表中保存数据库表的要害音信,并把它定名为sqlite_master。如要查看表概要,可按如下操作:

让大家试一试。展现命令查看暗许设置为您的SQLite命令提醒符。

 

ID NAME AGE ADDRESS SALARY


1 Paul 32 California 20000.0

2 Allen 25 Texas 15000.0

3 Teddy 23 Norway 20000.0

4 Mark 25 Rich-Mond 65000.0

5 David 27 Texas 85000.0

6 Kim 22 South-Hall 45000.0

7 James 24 Houston 10000.0

本文由必威发布于必威-编程,转载请注明出处:语句获取并显示所有这些记录,本节记录必威手

相关阅读