sqlite3简单操作

近来在操作集团录像设备的tutk转发服务器的时候,用到的数据库是sqlite,在此复习一下

目录

  • 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;

sqlite,偶尔大家只想知道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;
网站地图xml地图