一、对数据库的操作
1.创建/进入数据库
$sqlite3 DatabaseName.db
2.退出数据库
sqlite> .quit 或者 sqlite> .exit
3.导出数据库
$sqlite3 testDB.db .dump > testDB.sql
4.查看当前数据库
sqlite> .database
二、对数据库表的操作
1.查看当前数据库有那些表
sqlite> .table
2.查看某一个表的定义
sqlite> .schema [表名]
3.创建表
create table [表名](
[列名] [类型] [约束条件],
[列名] [类型] [约束条件]
);
示例:
create table student(
id int not null primary key),
name varchar(20) not null,
age int not null,
address varchar(20) not null
);
4.删除表
drop table [表名];
示例:
drop table student;
5.清空表
truncate table [表名];
示例:
truncate table student;
三、对数据库内容的操作
1.增
insert into [表名] ([字段名1],[字段名2]…)
values ([常量1],[常量2]…);
insert into [表名] ([字段名1],[字段名2]…)
select [查询语句
];
示例:
insert into student (id,name,age,address)
values (1,"hzq",22,"china");
insert into student (id,name,age,address)
select (id,name,age,address) from student_T;
2.删
delete from [table] [where表达式]
示例:
//删除ID为1的学生信息
delete from student where id=1;
3.查
select [ALL|DISTINCT] [目标列1…]
from [表名]
[where表达式]
[order by 表达式]
[limit 表达式];
示例:
//显示来自中国的id最大的前4位
select name from student
where address="china"
order by id DESC
limit 4;
4.改
update [表名] set [列名]=[需要修改成为的值,或者表达式] [where表达式];
示例:
update student set age=18 where id=1;
四、约束条件
1.where
指定条件。
同时可以通过关系运算符和逻辑运算符”>,<,=,like,not”
示例:
//查询student表中,id=1的结果;
select * from student where id=1;
//查询student表中,id大于10小于100的结果。
select * from student where id>10 and id < 100;
2.order by
按照一定的顺序显示结果。支持升序和降序。
order by [列名] ASC; //升序
order by [列名] DESC; //降序
示例:
//查询所有的学生,并按照降序排序
select * from student order by id DESC;
3.like
通过通配符来匹配达标的项。
可以使用的通配符有两个:
- 百分号:%
- 下划线:_
%表示零个或者多个字符,_表示一个数字或字符。
示例
where salary like "200%" 找到200开头的结果
where salary like "%200%" 找到含有200的结果
where salary like "_00%" 找到第二位和第三位都是0的结果
where salary like "2_%_%" 找到以2开头,并且长度至少有3位的结果
where salary like "2%3" 找到2开头,3结尾的结果
4.limit
限制输出结果的数量。
limit [int] [offset [int]];
其中offset表示偏移量。
示例:
//查询student表,从第2(1+1)个数据开始,只显示3个。
select * from student limit 3 offset 1;
注意:数据库中的表的下标,是从0开始。
5.group by
与select连用,将相同的数据进行分组。
注意:group by要放在where之后,order by之前。
相当于对同名的进行一个组合。直接显示会只是显示第一行。
示例:
//显示出每个学生的名字,以及他的总分
select name,SUM(grade) from student group by name;
6.having
指定过滤条件, 与group by连用。
在对进行了group by之后,再一次的筛选。
示例:
//输出age次数出现了两次以上的结果
select name,age from student group by age having COUNT(age)>=2;
7.distinct
与select一起使用,用来查找出不重复的结果。
示例:
//看学生都是来自哪几个地方
select distinct address from student
8.join
join主要用于多表查询,还有一种方式就是使用子查询。select中嵌套select.
虽然在sql中是定义了三种外链接:left,right,full,但是sqlite中只支持左外查询(left outer join)
示例:
select * from keys
left join Sections
on Keys.SectionID=sections.sectionid
order by KeyID ASC;
达到的效果为以前面的表为基本,添加新的表的中的列,然后不能补充的,用null表示。
五、常用函数
1.COUNT
统计行数
示例:
找到有多少人是来自suining的
select COUNT(address) from student where address="suining";
2.SUM
统计所选列中,相加的结果
示例:
找到1号学生的总成绩
select SUM (grade) from student where id = 1;