sqliteSQLite3 使用教学

source: SQL中文站:http://www.sqlite.com.cn/MySqlite/4/378.Html

 

OS
X从10.4继把SQLite那套很是知名的数据库软件,放上了作业系统工具集里。OS
X包装的是第三本子的SQLite,又如SQLite3。这套软件发生几乎个特色:

  • 软件属于公共财(public
    domain),SQLite可说是某种「美德软件」(virtueware),作者本人丢弃在作权,而于使用SQLite的口以下的「祝福」(blessing):

    • May you do good and not evil. 愿君行善莫行恶
    • May you find forgiveness for yourself and forgive others.
      愿你原谅自己宽容外人
    • May you share freely, never taking more than you give.
      愿君宽心与食指大饱眼福,所收获不多为公所施予
  • 扶植大多数之SQL指令(下面会略介绍)。
  • 一个档就是一个数据库。不欲装数据库服务器软件。
  • 整的Unicode支援(因而尚未跨语系的题目)。
  • 速杀快。

时于OS X
10.4里,SQLite是以/usr/bin/sqlite3的样式包装,也即说就是一个命令列工具,必须优先打终端机(Terminal.app或外程序)进入shell之后才会运用。网络上出有艾协助以SQLite的视觉化工具,但若都未曾像CocoaMySQL(配合MySQL数据库使用)那般好用。或许随时发悲喜也未克,以下就介绍命令列的操作方法。

SQLite顾名思议是因SQL为根基的数据库软件,SQL是同等套强大的数据库语言,重要概念是由「数据库」、「资料表」(table)、「查询指令」(queries)等单元构成的「关联性数据库」(进一步的概念而参照网络直达各个有关SQL及关联性数据库的文件)。因为SQL的询问功用强大,语法一致而入门容易,由此变成现行主流数据库的正统语言(微软、Oracle当大厂的数据库软件还提供SQL语法的查询及操作)。

以下大家即使起数据库、建立资料表及索引、新增资料、查询资料、更改资料、移除资料、sqlite3命令列选项等几乎单门类做简单的牵线。

 

目录

  • 1 建立数据库档案
  • 2 在sqlite3提示列下操作
  • 3 SQL的指令格式
  • 4 建立资料表
  • 5 建立索引
  • 6 加入一笔资料
  • 7 查询资料
  • 8 如何更改或删除资料
  • 9 其他sqlite的特别用法
  • 10 小结

 

起数据库档案

之所以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是资料表的名,fieldx则是字段的讳。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%';

查看有演员名字为茱蒂先河、年份晚于1985年、年份晚的预先列有、最多十笔画,只排有影片名称和夏:

select title, year from film where starring like 'Jodie%' and year >= 1985 order by year desc limit 10;

奇迹大家只有想精通数据库一共发微笔资料:

select count(*) from film;

偶然我们无非想清楚1985年下的视频有几乎统:

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;

哪怕会去所有年代早被1970年(不包含)的影了。

 

外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的RSS
reader,就是将稿子在SQLite数据库里!你得开开看~/Library/Syndication/Database3这些档案,看看其中来啊料),OpenVanilla于0.7.2起来,也援引了坐SQLite为底蕴之词汇管理工具,以及全字库的注音输入法。因为用SQLite,这有限独模块不管数据库内发生稍许笔资料,都足以成功「瞬间启动」以及相当神速的询问答复。

拿同一模仿好好用的数据库软件包进OS
X中,当然也终究Apple异常非凡聪明的抉择。再努力一点底对象可能就上马惦念拿SQLite来记录各种东西(像咱其中虽有同一人写了个程序,自动记录电池状态,写上SQLite数据库中重新开统计……)了。想像空间然则说一定常见。

当前匡助SQLite的程序语言,你可知体悟的光景还起了。那套数据库二〇〇五年尚得了美利坚合众国O’Reilly
Open Source
Conference的顶级开放源代码软件奖,奖评是「有什么事物能为Perl,
Python,
sqlite,PHP,
Ruby语言团结同地赞助的?就是SQLite」。可想而知SQLite的身份了。而SQLite程序异常小,更是个别打
“gcc -o sqlite3
*”,不需任何特别设定就能跳平台编译的次序。小而省,小而美,SQLite连网站都未多废话,直指SQL语法精要和API使用形式,原作者大概也得算某种程序设计的志(Tao
of Programming)里所说的交口矣。

Enjoy /usr/bin/sqlite3 in your OS X Tiger. 🙂

网站地图xml地图