目录
一、安装sqlite3
1.安装sqlite3数据库:
2.安装编译依赖库:
3.安装可视化界面:
4.验证数据库是否安装成功
二、常用数据库指令及SQL数据类型
1.常用数据库指令
2.常用SQL数据类型
三、数据库操作
1.创建数据库表
2.插入数据到数据库表
3.显示数据库表中的数据
4.修改数据库表中的数据
5.删除数据表中的数据
6.排序显示数据库表中的数据
四、外键策略
五、数据库查询操作
1.单表查询
2.模糊查询
3.多表查询
一、安装sqlite3
1.安装sqlite3数据库:
sudo apt install sqlite3 -y //安装数据库
sudo apt-get install libreadline-dev -y //安装方向键回溯
2.安装编译依赖库:
sudo apt-get install libsqlite3-dev -y //用于高级语言程序访问接口
3.安装可视化界面:
sudo apt-get install sqlitebrowser -y //可视化GUI
可视化界面安装完成后在本地文件鼠标右键以DB Browser for SQLite打开数据库文件(如stu.db)就可以使用了
4.验证数据库是否安装成功
在终端下运行sqlite3 <*.db>,出现如下提示符:
运行: sqlite3 Student.db
出现一下结果:
SQLite version 3.7.2 #版本号
Enter ".help" from instructions #.help 指令显示帮助手册
Enter SQL statements terminated with a ";" #输入SQL语句需要以 ;分号结尾
sqlite> #指令输入框
二、常用数据库指令及SQL数据类型
1.常用数据库指令
指令 说明
.help #数据库指令帮助手册
.quit #退出sqlite3
.database #显示当前打开的数据库文件
.tables #显示数据库中所有表名
.header on #启用表头
.mode column #使用列显示模式
.schema #<表名> 查看表的结构
.show #显示各种设置的当前值
2.常用SQL数据类型
类型 说明
int #普通整型
integer #可增加自动增长约束的整型
real #值是一个浮点值,存储为 8 字节的 IEEE 浮点数字
text #值是一个文本字符串,使用UTF-8格式编码
char #值是一个文本字符串,使用ASCII格式编码,不足部分使用空格填充
varchar #值是一个文本字符串,使用ASCII格式编码,不足部分则截止
data #值是一个时间文本字符串,使用ASCII格式编码
NULL #值是一个 NULL 值
三、数据库操作
1.创建数据库表
create table 表名(列名1 列1类型,列名2 列2类型,...); #创建数据库表语法
#例如创建一个学生信息表
create table 学生信息表 (
学号 integer primary key autoincrement,
姓名 char(20) not null,
性别 char(1) default '男' check (性别 = '男' or 性别 = '女'),
年龄 int check (年龄 > 0 or 年龄 < 60),
入学时间 date,
班级 char(10),
邮箱 char(20) unique
);
#数据库约束:
# 主键约束:primary key 唯一表示数据库表中的各行/记录
# 非空约束:not null 确保某列不能有 NULL 值
# 默认约束:default 当某列没有指定值时,为该列提供默认值。
# 唯一约束:unique 确保某列中的所有值是不同的。
# 条件约束:check 确保某列中的所有值满足一定条件。
# 外键约束:foreign key 用来强制 两个表之间”存在”的关系
# 自动增长:autoincrement 只能跟在integer 类型后面做主键自动增
# 需要与 references 连用并且开启外键功能
# SQL语句以‘;’结束
2.插入数据到数据库表
#插入一列全部数据
insert into 表名 values(列值1,列值2,列值3);
#注意!!!:字符串类型要加单引号,数值类型可以不用加引号
#例如:
insert into 学生信息表 values(10000,'张三','男',18,'2022-8-20','一班','12345678@qq.com');
#插入一列部分数据
insert into 表名(列名1,列名4) values(列值1,列值4);
#例如:
insert into 学生信息表(学号,姓名) values(10000,'张三');
3.显示数据库表中的数据
select 列名1, 列名2, 列名n from 表名; #显示当前数据库指定表的内容;
#例如:
select 学号,姓名 from 学生信息表; #显示学生信息表所有的学号和姓名
#例如:
select * from 学生信息表; # * 是通配符,表示所有,显示学生信息表的所有信息
#注意:
#1、可以使用数据库指令打印表名 .header on
#2、可以使用数据库指令格式化输出 .mode column
4.修改数据库表中的数据
#SQLite 的 update 用于修改表中已有的记录。
#可以使用带有 where子句的 update 查询来更新选定行,否则所有的行都会被更新
#语法:
update 表名 set 列名1=值1,列名2=值2,.. where 条件表达式;
#例如:更新学生信息表中的学号10000的姓名为李白
update 学生信息表 set 姓名 = '李白' where 学号 = 10000;
5.删除数据表中的数据
#SQLite的delete用于删除表中已有的记录。
#可以使用带有where子句的delete查询来删除选定行,否则所有的记录都会被删除。
#语法:
delete from 表名 where 条件表达式;
#例如:删除表内所有性别为男的学生
delete from 学生信息表 where 性别 = '男';
6.排序显示数据库表中的数据
#SQLite的order by子句是用来基于一个或多个列按升序或降序顺序排列数据
#需要与关键字 asc(升序) desc(降序)搭配使用
#语法:order by 列名 排序关键字
#例如:学生信息表中年龄升序显示
select * from 学生信息表 order by 年龄 asc; #升序
select * from 学生信息表 order by 年龄 desc; #降序
四、外键策略
#外键约束
#外键约束:foreign key(列名) references 表名(依赖) 嵌入式sqlite3数据库默认关闭外键约束,所以需要打开使用
#执行数据库指令:
PRAGMA foreign_keys = ON
#功能:让数据库表之间建立关系,例如学生信息表和课程表没有任何关系,但是选课表中的学号和课程科目 分别与学生信息表和课程表有关,当有该学号学生以及有该课程才可以选课。
#注意: 外键约束必须放在末尾,否则建立失败
create table 学生信息表(
学号 integer primary key autoincrement,
姓名 char(20) not null
);
create table 课程表 (
科目 char(20) not null unique
)
create table 选课(
学号 integer not null,
科目 char(20) not null,
unique(学号,科目),
foreign key(学号) references 学生信息表(学号),
foreign key(科目) references 课程表(科目)
)
#当插入选课数据时会依赖 学生信息表和课程表进行插入,如果没有则插入失败
#当课程表有相关数据时,删除被依赖表则无法删除
五、数据库查询操作
1.单表查询
#1.显示所有列数据:
select * from 表名; # *代表所有数据
#2.显示部分列:
select column1,column2 from 表名; #只显示 column1,column2
#3.显示部分行:过滤不需要的行 where
select * from 表名 where 条件表达式;
#4.起别名: as 关键字
select 列名1 as 别名名称1 , 列名2 as 别名名称2 from 表名;
#5.算术运算 + 别名
select 列名1 + 数据 as 别名1 from 表名;
#6.去重操作: distinct
select distinct 列名 from 表名''
#7.排序显示: order by 升序 asc 降序 desc
select * from 表名 order by 列名; #默认升序
select * from 表名 order by 列名 desc; #降序
2.模糊查询
#1.where 字句 + 模糊查询:
# % 代表任意多字符
例如:select * from 表名 where 列名 like '%数据';
# _ 任意代表一个字符
例如:select * from 表名 where 列名 like '_数据';
3.多表查询
#1.内连接查询 join 交叉连接:cross 笛卡尔乘积
select * from 表名1 cross join 表名2;
#2.内连接查询 join 自然连接:natural 自动匹配表内所有同名列数据
select * from 表名1 natural join 表名2;
#3.内连接查询 join 指定列匹配 :inner 搭配 using
select * from 表名1 inner join 表名2 using(表2列名);
#4.内连接查询 join 指定列匹配 :inner 搭配 on
select * from 表名1 inner join 表名2 on(表1.列名 = 表2.列名 );
sqlite3与高级语言对接的具体操作会另作分享,希望这些能够对大家有所帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)