sqlite3的安装以及增删改查排序功能的实现

发布于:2023-01-08 ⋅ 阅读:(732) ⋅ 点赞:(0)

目录

一、安装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与高级语言对接的具体操作会另作分享,希望这些能够对大家有所帮助。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到