百宝云数据库Sqlite3常用SQL语句总结

Sqlite数据库基本操作

建立数据表

假设要建一个名叫film数据表,只要键入以下指令就可以了:

create table film(title, length, year, starring);

这样就建立了一个名叫film数据表,里面有namelengthyearstarring四个字段。

这个create table指令的语法为:

create table table_name(field1, field2, field3, ...);

table_name数据表的名称,fieldx(field1, field2, field3, ...)则是字段的名字。sqlite3与许多SQL数据库软件不同的是,它不在乎字段属于哪一种数据型态:sqlite3的字段可以储存任何东西:文字、数字、大量文字(blub),它会在适时自动转换。

 

如果表不存在,则创建数据表,存在则不创建数据表。命令:

create table if not exists film(title, length, year, starring);

扫描二维码关注公众号,回复: 283691 查看本文章



建立索引

如果数据表有相当多的数据,我们便会建立索引来加快速度。好比说:

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, 'Jodee 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年(不含)的电影了。


如何更改数据表名

alter table AAA rename to BBB;

AAA数据表改名为BBB


如何在数据表中增加一个字段

alter table AAA add column ccc;

AAA数据表里增加一个ccc的字段


如何在数据表中删除一个字段

ALTER TABLESQLite SQLite支持ALTER TABLE的一个有限子集。在ALTER SQLite中允许一个表或一个新列添加到现有表。删除列,或者添加或从表中删除约束。

sqlite中是不支持删除有值的列操作的,所以alter table table_name drop column col_name这个语句在sqlite中是无效的,而替代的方法可以如下:

1.根据原表创建一张新表

2.删除原表

3.将新表重名为旧表的名称

示例例子如下

1.创建一张旧表Student,包含id(主码),name, tel

create table student (id integer primary key,name text,tel text)

 

2.给旧表插入两个值

insert into student(id,name,tel) values(101,"Jack","110")

insert into student(id,name,tel) values(102,"Rose","119")

 

3.接下来我们删除电话这个列,首先根据student表创建一张新表teacher

create table teacher as select id,name from student

 

4.然后我们删除student这个表

drop table if exists student

 

5.teacher这个表重命名为student

alter table teacher rename to student

 

结果演示:

select * from student order by name descdesc降序, asc升序)



如何删除数据表

drop table AAA;

删除AAA数据表


附录:

上面只列出了常用的SQL语句,如未发现你需要的SQL语句,请自行百度搜索,关键字可以为“sqlite xxxx”,其中xxxx表示的是你要的功能。如果你愿意分享的话,可以在博客下面回复。

 

猜你喜欢

转载自15116189146.iteye.com/blog/2324220