当前位置: 首页 > news >正文

day40——数据库 sqlite3

1 安装sqlite3数据库以及sqlite3函数库

1:sudo apt install sqlite3 //安装数据库
2:sudo apt install libsqlite3-dev // 安装数据库的函数库

2 什么是数据库

一种存放数据的文件,但是该文件拥有特殊的结构

第一层结构:数据库本身

第二层结构体:数据库中存放了若干张表单

每一张表单的字段构成各不相同

第三层结构:一张表单中,所有字段都能存放信息

一组字段中的所有数据,就是一条记录

最终,很多很多条件,格式不同的记录,组成了一个完整的数据库

3 常用数据库类型

① sqlite3:一个允许部署在本地的轻量级数据库

特别适合用于嵌入式开发

② mysql:是一个部署在服务端的,需要网络连接的数据。

如果一定要部署在本地的话,也是需要安装一个mysql服务器的

适合一些应用层程序开发

4 如何操作sqlite3数据库

4.1 打开数据库

输入指令:sqlite3 数据库名.db,出现以下画面就OK了

4.2 sqlite3数据库中的指令规则

1:显示指令

必须以 . 开头,回车确认输入

.table :查看当前数据库中所有表单的名字

.schema 表单名: 查看当前数据库中指定的表单中字段的结构

如果没有写表单名,则表示查看所有表单的字段结构

.head(er) on 在查看数据的时候,打开抬头

.mode column 以字段对齐的形式显示数据

2:操作指令

必须以 ;结尾,然后再键入回车,如果没有 ; 的话,sqlite3不会认定这条指令结束了

如果忘记敲 ; 了,换一行再补一个 ; 也是没有问题的

3:数据库中的指令 大小写无所谓

4.3 创建表单

create table 表单名(
    字段名1	数据类型		约束类型		, 
    ......								,
    字段名n	数据类型		约束类型		
);

字段名:变量名

数据类型:

整形 INTERGER

浮点型 REAL

字符串 TEXT

约束类型:什么是约束?

在添加数据的时候,必要的为这些数据添加一些取值范围,保证这些数据不会过于离谱,添加取值范围这个事,就是依赖约束实现的

① 主键约束 :primary key

什么是键:用于比较大小,从而确定数据存放位置的关键数据。这个数据不能重复,不能修改

被主键约束的字段,成为了表单中的 "键",剩下的都是 "值"

被主键约束的字段,还有一个修饰词: auto increment

功能为:在添加新记录的时候,如果被 auto increment 所修饰的字段,没有填充数据的话,则数据库会根据最近一次填充的数据,自增1后,为当前数据填充

② 默认约束: default 默认值

在添加新纪录的时候,如果没有为拥有默认约束的字段,填充数据的话,数据库会选用默认值填充

③ 非空约束:not null

在添加新记录的时候,如果没有为 非空约束 所修饰的字段,填充数据的话,则本次记录添加失败

④ 检查约束:check(检查条件)

在添加记录的时候,会检查被检查约束的字段所填充的数据,是否满足"检查条件",如果不满足则添加失败

例如:为 字段"成绩" 添加检查约束,约束条件为成绩的取值范围在 0~150分之间

check(成绩>=0 AND 成绩<=150)

再例如:为字段"性别"添加检查约束,要求性别只能是 "男" 或者 "女"

check(性别="男" OR 性别="女")

练习

Plain Text

自动换行

在数据库中创建如下表单
姓名 字符串类型 要求非空
学号 整形,要求主键自增
成绩 整形,要求0~150
性别  字符串类型,要求只能是男或者女,并且默认男

4.4 向表单中添加数据

insert into 表单名(字段1,字段2,....,字段n) values(数据1,数据2,...,数据 n)
    为表单中添加一条新的记录,但是只填充 字段1 ~ 字段n 这几个字段的数据
    如果有任何字段对应的数据,违反了约束,则添加失败

4.5 查看表单中数据

select 字段1,字段2,...,字段n from 表单名
    查看指定表单中的指定字段的所有数据
select * from 表单名
    查看指定表单中的所有字段的所有数据

insert 指令和 select 指令可以配合使用

insert into 表单1(字段1,字段2,....,字段n) select 字段1,字段2,...,字段n from 表单2
    先查询出表单2中的所有指定字段的数据,再将这些数据,对应的添加到表单1中的每一个字段中去

4.6 查看某个特定的数据

where子句:
    只要有任何附加的查询条件的时候,在英语语法应该写条件的地方写上 where 条件
 
    比如说,想要查看 姓名为"张三"的所有信息
select * from stu where 姓名="张三"

4.7 修改表单中指定数据

update 表单名 set 字段名=新数据 where条件定位
    例如:将姓名为"张三"的成绩,改成50分
update stu set 成绩=50 where 姓名="张三"

4.8 删除表单中的指定数据

delete from 表单名 where 条件定位
千万小心:如果不写 where 条件定位的话,会将表单中所有数据全都删除
一般来说,为了防止数据的误删,基本上不用delete指令
一般会在表单中添加一个字段叫做 "delete" ,他的值只有0或者非0
查询的时候,只要在最后加上 where delete=0,这样一来 delete=1也就是所谓的被删除的数据,就查不出来了

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 这周末,除非外面下钞票,否则谁也拦不住我玩《黑神话悟空》(附:两款可以玩转悟空的显卡推荐)
  • Android 安卓Compose软键盘和Activity页面的协调处理问题
  • 【Prettier】代码格式化工具Prettier的使用和配置介绍
  • 超容易出成果的方向:多模态医学图像处理!
  • 大模型参数高效微调技术总结
  • 基于鸿蒙Next模拟扫图识物的一个过程
  • Transformer大模型在训练过程中所需的计算量
  • C语言:文件(写入,读取)
  • Angular路由使用
  • 培训第三十四天(初步了解Docker与套接字的应用)
  • [数据集][目标检测]木材缺陷检测数据集VOC+YOLO格式2383张10类别
  • C++学习笔记之数据结构
  • Prometheus 服务发现
  • k8s Unable to fetch container log stats failed to get fsstats for
  • 常规方法调用Mapper对象bean,批量插入数据
  • 自己简单写的 事件订阅机制
  • [NodeJS] 关于Buffer
  • “大数据应用场景”之隔壁老王(连载四)
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • CSS3 变换
  • CSS相对定位
  • Git的一些常用操作
  • LeetCode算法系列_0891_子序列宽度之和
  • mysql innodb 索引使用指南
  • PHP的Ev教程三(Periodic watcher)
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • spring security oauth2 password授权模式
  • 如何合理的规划jvm性能调优
  • 算法---两个栈实现一个队列
  • 线性表及其算法(java实现)
  • 译米田引理
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (14)Hive调优——合并小文件
  • (规划)24届春招和25届暑假实习路线准备规划
  • (简单) HDU 2612 Find a way,BFS。
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (转)c++ std::pair 与 std::make
  • (转)EOS中账户、钱包和密钥的关系
  • .Net 4.0并行库实用性演练
  • .NET CF命令行调试器MDbg入门(一)
  • .Net Core 中间件与过滤器
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NET上SQLite的连接
  • .pop ----remove 删除
  • .ui文件相关
  • @RequestBody与@ModelAttribute
  • [ 转载 ] SharePoint 资料
  • [2013][note]通过石墨烯调谐用于开关、传感的动态可重构Fano超——
  • [AIGC] Redis基础命令集详细介绍
  • [Algorithm][动态规划][路径问题][不同路径][不同路径Ⅱ][珠宝的最高价值]详细讲解
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [C++] 如何使用Visual Studio 2022 + QT6创建桌面应用
  • [C++]AVL树怎么转