目录
1.数据库:
1.概念:
文件:存放数据,掉电数据不会丢失,软件的配置及想要持续保存的数据放入文件中
大批量数据存储和管理时使用数据库
2.类型:
1.关系型数据库
1.Oracle
DB2
2.MySQL
开源
3.sqlserver
4.sqlite
小型数据库
2.非关系型数据库
1.Redis
3.SQL语言
数据库支持的编程语言,主要对表完成:增、删、改、查相关功能
4.安装sqlite数据库
1.虚拟机能够上网
2.配置apt-get工具集
3.安装sqlite数据库
sudo apt-get install sqlite3
5.sqlite3命令:
6.SQL语句:
...:表示上一条语句还没有结束,要用“ ;”来结束。
.quit :退出。
.database:路径。
.table:查看文件名。
.schema:看表创建的类型。
" " 和 ' ' 都可以引用字符串。
.header on :显示列表的名
.mode column:显示的格式变为column
1.create table
创建表
使用形式:
create table 表名称(列1 数据类型, 列2 数据类型, ...);
示例:
create table student(姓名 text, 性别 text, 年龄 integer, 成绩 double);
2.insert into
插入表
使用形式:
insert into 表名称 values(值1, 值2, ...);
示例:
insert into student values("张三", "男", 19, 89.5);
insert into student values("李四", NULL, NULL, 99.99);
insert into student (姓名, 年龄) values ("王二", 18);
3.select
查看表
使用形式:
select 列1,列2,... from 表名称 where 匹配条件 order by 列名称 asc/desc;
示例:
select * from 表名称; :查看表的所有内容
select 姓名,成绩 from student; :查看student表的姓名和成绩。
select 姓名,成绩 from student where 姓名 like "%张%"; :查看带张字的姓名的成绩
select 姓名,成绩 from student order by 成绩 desc; :查看成绩以降序的方式
select 姓名 from student where 成绩 > 85 order by 成绩 desc; :成绩大于85,并且以降序的方式排列
4.delete from
删除表
删除的是一整行,不是一行中的某个值
使用形式:
delete from student where 匹配条件;
示例:
delete from student where 姓名 like "%张%";
5.update
更新表
使用形式:
update 表名称 set 列1=值1,列2=值2 where 匹配条件;
示例:
update student set 性别="女", 成绩=86.3 where 姓名="王二";
6.drop table
删除表
使用形式:
drop table 表名称;
加入在刚开始的时候没有splite3 后面没有加文件,那就默认保存在main:下,但是没有保存。这个时候用。backup + 文件名.db 来把创建的表保存下来。
用select产生的新的表格要保存下来的话,要在select之前输入保存的指令,.output 文件名。
7.数据库文件格式:
数据库文件 -> 表 -> 列1 列2 列3
filename.db
8.内键:
1.一般为整形
2.区分一张表中不同的数据(内键的值不允许重复)
9.与外部关联的键值
与外部表关联的键值
学生信息表
成绩表
课程表
10.多表联合查询
1.cross join:
交叉连接
将表1中的每一项都与表2中所有项连接获得一张新表
示例:
select student.name as 姓名, lesson.subject as 科目 from student cross join lesson;
select student.name as 姓名, lesson.subject as 科目 from student cross join lesson where 科目 like "语文";
2.inner join:
内连接
将表1和表2中所有同时满足条件的数据关联在一起
示例:
select grade.stuid as 学号, lesson.subject as 科目, grade.score as 成绩 from grade inner join lesson on grade.lessonid = lesson.id;
sqlite> select student.name as 姓名, lesson.subject as 科目, grade.score as 成绩
...> from grade inner join lesson on grade.lessonid = lesson.id
...> inner join student on grade.stuid = student.id
...> ;
sqlite> select student.name as 姓名, lesson.subject as 科目, grade.score as 成绩
...> from grade i