本文列举了一些sqlite3数据库操作的常用sql语句
1.建表:
1) 缺省写法,确定是新表
create table mytable (id integer, name text not null);
2) 标准写法,如果是已存在的表则不会创建
create table if not exists mytable (id integer, name text not null);
补充:integer为整形,text为字符型,这些是数据类型。not null为标识,意思非空即必须有值。除此之外的标识还有unique,意为唯一不可重复;primary key,作用是设为主键,相当于not null+unique,例:(id integer primary key,name text not null unique)
2.删表:
drop table mytable;
3.查看表中数据:
select * from mytable; //简易写法,直接遍历显示表格内容
select * from mytable order by asc/desc; // 按照 升序/降序 显示表格内容
select * from mytable where ...; //where后面跟的是筛选条件,如" where id = 024 "或者" where name = 'leo' "
select * from mytable where id = 1 and name = 'leo'; //sqlite可以用and连接多个的where限定语句
4.插入数据:
insert into mytable values (001,'leo'); //缺省写法,此种写法括号内参数个数不可缺省,必须与表格实际字段对应
insert into mytable (id,name) values (001,'leo'); //此写法可省参,按照前一个括号内给出的参数,在后一个括号内给出相应值
5.修改数据:
update mytable set id = 5 where name = 'leo'; //将表格中"name"为"leo"的记录(行)的"id"字段的值改为"5"
6.删除数据:
delete from mytable where id = 2; //删除表格中id为2的一条或多条记录
delete from 表名; //清空表内所有数据,但是表还在,注意不要在delete后加‘*’
7.添加字段(列):
alter table mytable add column newcolumn text; //新增一个类型text的字段newcolumn
注:sqlite3给已存在的表格新增字段无法设置为非空,因为无法在增加字段的同时赋值,即使是空表也不可以,如果新增的字段必须为非空,
可以参考以下步骤实现:
1) 在原表加入字段,按照普通类型插入,如上面的例句
2) 给表中每条记录的该字段赋予相应的值(非空字段必须保证有值,否则一定会出错)
3) 建立一张与旧表对应的表,只需将需要新增的字段设置为非空
4) 将旧表的数据导入到新表(可参考下面的不同表格之间的复制操作)
8.重命名表格:
alter table mytable rename to newtable; //将表格“mytable”重命名为“newtable”
9.两张表关联查找:
select * from table1,table2 where table1.id = table2.id; //将两张表中id相等的记录挑选出来,可以增加额外条件如“where id = 2”
select * from table1 inner join table2 on XXX=XXX; //同1)
10.两张表关联复制:
insert into mytable select * from table2 ; 可加上‘where’的限定语句;
将table2中的数据拷贝到mytable中去,前提是两个表格结构相同,可以宽松,但不可缺省,即原字段是not null限制的,新表对应字段可以是普通可空字段,但是不可以缺省该字段(可以附加条件)
附加辅助命令:
1.查看当前数据库下有哪些表格
sqlite> .table
2.查看表格创建结构,如果不加表格名,默认查看所有表格结构
sqlite> .schema mytable
3.筛选表格内容的时候显示出字段名(列名)
sqlite> .head on //显示字段名
sqlite> .mode column //按照一定格式显示
4.退出数据库
sqlite> .q
注:命令不可省略前面的“.”,并且后面不要加“;”,和sql语句不同
以上就是我总结的一些关于sqlite3的操作语句,不是很多,不过也足够实现多数基本需求了。