一.sqlite数据库安装
去www.sqlite.org官网下载本地数据库sqlite(根据系统下载windows);
下载好后添加环境变量,在设置中输入高级系统设置,找到环境变量,找到path这个选项单击编辑将sqlite的路径添加到其中,点击三个确定,这样就可以使用sqlite数据库了。
二.sqlite操作
.help--sqlite使用帮助,里面有对sqlite数据库操作的解释,自行解读
.schema sqlite_master--(sqlite数据库中的主表保存数据表的关键信息,命名为sqlite_master)
.databases--打开数据库
.open 数据库名称.db--打开并创建数据库
.tables--显示数据表
create table 表名称(字段1,字段2,....);--创建数据表
insert into 表名称(字段1,字段2,....);--向数据表中插入数据
select *from 表名称;--查询数据表中的数据
三.附加数据库与分离数据库
1.附加数据库语句
attach database 文件名称 as 数据库名称
sqlite> .databases
main: "" r/w
sqlite> attach database "db1.db" as "dbtest1";
sqlite> .databases
main: "" r/w
dbtest1: D:\sqlite\db1.db r/w
sqlite>
2.分离数据库语句
detach database 数据库名称
sqlite> .databases
main: "" r/w
dbtest1: D:\sqlite\db1.db r/w
sqlite> detach database dbtest1;
sqlite> .databases
main: "" r/w
sqlite>
四,创建数据表和删除数据表
1.创建数据表
create table 数据表名称(字段1 数据类型1 约束类型,字段2 数据类型2 约束类型,...)
数据类型:整型(int)、长整型(bigint)、单精度、双精度、短日期(data)、长日期(datatime)、可变长度字符串(varchar)、定长字符串(char)。
约束类型:主键约束(primary key)、唯一约束(unique key)、默认约束(default)、非空约束(notnulll)、外键约束。
例:
--创建数据表
-- 学生表
create table student(
sno int primary key not null, --学号
sname text not null, --姓名
ssex text not null, --性别
sage int , --年龄
sdept text --所在系,学院
);
2.删除数据表
drop table 数据表名称
五.insert into语句
select *from 数据表名称; 查询数据表
1.insert into 数据表名称(字段名1,2,3,4...) values(对应的数据)
指定字段名插入数据
2.insert into 数据表名称 values(与字段对应的数据)
未指定字段的插入数据
六.语句实例
--创建员工数据表 staff
create table staff(
sid int PRIMARY key NOT NULL, --员工编号
sname text not null, --员工姓名
sage int not null, --员工年龄
sdepartment varchar(15), --员工所在部门
spost varchar(15), --员工职务
ssalary rel --员工工资
);
--查询数据表:staff
select *from staff;
--插入数据
insert into staff values();
--通过DISTINCT关键字,消除重复字段
select distinct sname from staff;
--通过Order by ASC|DESC ,实现升序和降序
select *from staff order by sname; //默认为升序
select *from staff order by sname ASC; //指定升序
select *from staff order by sname DESC; //指定降序
--相同数据进行分组
select sid,sname,sage,sdepartment,spost,ssalary from staff GROUP BY sname order by sname;
--having子句过滤数据
select *from staff GROUP BY sname having count(sname)<2; --显示名字少于2个的
七.触发器
--查询数据表:staff
select *from staff;
select *from staff_log;
--创建staff员工表对应的日志表
create table staff_log(
staff_sid int not null,
staff_date text not null
);
--创建触发器staff数据表-->监控此表插入记录事件
create trigger staff_logtrigger after insert on staff
begin
insert into staff_log(staff_sid,staff_date) values(new.sid,datetime('now'));
end
--查询刚刚创建的触发器
select name from sqlite_master where type='trigger';
--测试数据
insert into staff values();
--删除触发器
drop trigger staff_logtrigger;
八.索引
--查询数据表:staff
select *from staff;
--创建索引
create index staff_ssalary_index on staff(ssalary);
--查询索引
select *from sqlite_master where type='index';
--通过索引查询数据
select *from staff INDEXED by staff_ssalary_index where ssalary >=50000;
--删除索引
drop index staff_ssalary_index;
--索引的优缺点:
建立索引可以提高在数据库中获取所需要信息的速度,
同时还能够提高服务期处理相关搜索请求的效率。
--什么时候避免使用?
数据表较小;不应该出现在频繁操作的列中;应该使用在有大量null值列上;
有频繁大批数据实现更新、增加、删除操作的
九.视图
select *from student;
select *from course;
select *from sc;
--创建视图
create view student_course_sc_view as
select student.sno,student.sage,student.sname,student.ssex,student.sdept,course.ccredit,course.cname,course.cno,sc.score
from student,course,sc
where student.sno=sc.sno and course.cno=sc.cno;
--通过视图查询数据
select *from student_course_sc_view;
--删除视图
drop view student_course_sc_view;
十.事务
事务处理
事务提交
事务回滚:提交后不能回滚