SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序

鲍忠
• 阅读 485

SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序

SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序

整理相关的数据库知识点,帮你获得心仪的优惠。 1.数据库事务 1.1什么是数据库事务? 事务是指一组逻辑上相关的操作,这些操作要么全部完成,要么都没有完成。 它是事务管理系统执行过程中的逻辑工作单元,是用户自定义的操作序列。这些操作要么全部执行,要么都不执行,是一个不可分割的工作单元。 1.2.交易的特征 交易的ACID属性:

原子性:事务是不可分割的工作单元。一个事务中包含的所有操作,不是完成就是未完成,不会在中间环节结束。 一致性:事务必须将数据库从一种一致性状态更改为另一种一致性状态。 隔离:一个事务的执行不能被其他事务干扰。当并发执行多个事务时,这些事务应该相互隔离。 持久性:一旦事务被提交,它的更改将永久存储在数据库中,即使数据库失败也不会丢失。

1.3.事务的隔离级别 事务的隔离级别指的是在事务期间数据修改被其他公司看到的程度。从最低到最高的事务隔离级别是:

未提交读取:一个事务可以读取由另一个事务修改但尚未提交的数据。 Read Committed:一个事务只能读取另一个事务已经提交的数据。 可重复读取(Repeatable Read ):同一数据在事务执行过程中被多次读取,结果总是一致的。在可重复读取隔离级别下,不允许幻像读取,但允许不可重复读取。 Serializable:所有事务逐个执行,事务不能并发执行。

隔离级别越高,事务之间的并发越少,但并发性能越差。 1.4.事务的并发性 事务的并发问题主要如下:

脏读:一个事务读取另一个事务的未提交数据。 不可重复读取:一个事务多次读取相同的数据,结果不一致。 幻像读取:一个事务多次读取同一范围的数据,结果不一致。 丢失更新:一个事务读取另一个事务提交的数据。

不可重复读数和幻象读数的区别:

不可重复读取是指同一数据在一个事务中被多次读取,结果不一致; 幻读是指在一个事务中多次读取同一范围的数据,结果不一致。

1.5.交易的并行处理 交易的并发处理主要包括以下内容:

序列化:所有事务都是逐个执行的,事务不能并发执行。 乐观锁定:当提交一个事务时,检查数据是否被其他事务修改过,如果是,放弃提交,否则提交该事务。 悲观锁:当一个事务被执行时,数据被锁定,在该事务结束之前,其他事务不能修改数据。 两阶段锁定协议:在事务执行之前,数据被锁定,直到事务完成。 多版本并发控制(MVCC):读取数据时,读取数据的当前版本,而不是最新版本。 时间戳:事务提交时,检查数据是否被其他事务修改过,如果是,放弃提交,否则提交事务。 快照隔离:在事务执行之前,数据被锁定,直到事务结束。

2.数据库索引 2.1.指数的作用 索引的功能如下:

加快数据检索; 索引可以帮助我们避免排序和分组操作; 随机I/O可以通过索引变成顺序I/O; 索引可以帮助我们避免表之间的连接操作。

2.2.指数分类 主要有以下几类索引:

单值索引:索引列只包含一个值。 多值索引:索引列包含多个值。 唯一索引:索引列的值必须是唯一的,但允许空值。 主键索引:一个表只能有一个主键索引。主键索引的值必须是唯一的,不允许有空值。 复合索引:索引列是多个列的组合。 覆盖:索引包含所有需要查询的列。 全文索引:索引列是全文索引列。 哈希:索引列是哈希索引列。 空间:索引列是一种空间数据类型。 其他索引:索引列是其他数据类型。

2.3.索引的优点和缺点 索引的优点和缺点如下:

优势:

索引可以大大加快数据检索速度; 索引可以帮助我们避免排序和分组操作; 索引可以把随机I/O变成顺序I/O; 索引可以帮助我们避免表之间的连接操作。

缺点:

索引会占用物理空间,建立过多的索引会浪费物理空间; 索引会减慢写入数据的速度,因为数据库服务器在写入数据时也需要维护索引数据; 索引会减慢更新数据的速度,因为数据库服务器在更新数据时也需要维护索引数据; 如果频繁添加或删除表中的数据,索引将无效,从而降低查询速度。

2.4.索引的使用 索引的使用主要如下:

使用Overwrite Index: Index可以帮助我们避免排序和分组操作。 使用复合索引:索引列是多个列的组合。 使用索引下推:索引可以帮助我们避免表之间的连接操作。

3.数据库的类型 3.1.数据库的分类 数据库的分类主要包括以下内容:

关系数据库:关系数据库是指使用关系模型组织数据的数据库。关系模型是基于二维表的数据模型。二维表中的每一行代表一条记录,每一列代表一个属性。二维表之间的关系可以用行之间的关系来表示。 非关系数据库:非关系数据库是指不使用关系模型组织数据的数据库。非关系数据库的数据模型可以是键值对、文档、图形、列存储等。 文档数据库:文档数据库是指使用文档模型组织数据的数据库。文档模型是基于文档的数据模型,文档是一个自包含的数据结构。文档中的数据可以是键值对、文本、二进制数据等。

3.2.关系数据库的分类 主要有以下类型的关系数据库:

MySQL:MySQL是一个关系数据库,它是一个关系数据库管理系统。它是由瑞典的MySQL AB公司开发的,现在属于甲骨文公司。 Oracle:Oracle是一个关系数据库。它是一个关系数据库管理系统,由美国Oracle公司开发。 SQL Server:SQL Server是一个关系数据库。它是一个关系数据库管理系统,由美国微软公司开发。 PostgreSQL:PostgreSQL是一个关系数据库。它是一个关系数据库管理系统,由美国PostgreSQL全球开发集团开发。 DB2:DB2是一个关系数据库。它是一个关系数据库管理系统,由美国IBM公司开发。 SQLite:SQLite是一个关系数据库。它是由加拿大加州大学开发的一个关系数据库管理系统。 Maria DB: Maria DB是关系数据库,是由瑞典Maria DB基金会公司开发的关系数据库管理系统。 MemSQL:MemSQL是一个关系数据库。它是一个关系数据库管理系统,由美国MemSQL公司开发。 H2: H2是一个关系数据库,是一个关系数据库管理系统,由德国H2数据库引擎公司开发。 HSQLDB:HSQLDB是一个关系数据库。它是一个关系数据库管理系统,由美国HSQLDB公司开发。 Derby:Derby是一个关系数据库。它是一个关系数据库管理系统,由美国Apache Derby公司开发。 火鸟:火鸟是一个关系数据库。它是一个关系数据库管理系统,由美国火鸟基金会公司开发。 Sybase:Sybase是一个关系数据库,它是一个关系数据库管理系统,由美国Sybase公司开发。 Informix:Informix是一个关系数据库。它是一个关系数据库管理系统,由美国Informix公司开发。 Access:Access是一个关系数据库。它是一个关系数据库管理系统,由美国微软公司开发。 Teradata:Teradata是关系数据库,是美国Teradata公司开发的关系数据库管理系统。 Vertica:Vertica是一个关系数据库。这是一个关系数据库管理系统,由美国的Vertica Systems公司开发。 Netezza:Netezza是关系数据库,是美国Netezza公司开发的关系数据库管理系统。 Greenplum:Greenplum是关系数据库,是美国Greenplum公司开发的关系数据库管理系统。

这些关系数据库可能缺失,个人统计也不是很全面,可能会有错误。欢迎大家补充。

3.3.非关系数据库的分类 主要有以下类型的非关系数据库:

Redis:Redis是一个非关系数据库。这是一个基于内存的键值对数据库,用C语言编写。 MongoDB:MongoDB是一个非关系数据库。这是一个基于文档的数据库,用C++语言编写。 HBase:HBase是一个非关系数据库。它是一个基于列存储的数据库,用Java语言编写。 Secondary: Secondary是非关系数据库。它是用Java语言编写的基于图形的数据库。 Elasticsearch:Elasticsearch是一个非关系数据库。这是一个基于文档的数据库,用Java语言编写。 Memcached:Memcached是一个非关系数据库。这是一个基于内存的键值对数据库,用C语言编写。 Cassandra:Cassandra是一个非关系数据库。它是一个基于列存储的数据库,用Java语言编写。 CouchDB:CouchDB是一个非关系数据库。这是一个基于文档的数据库,用Erlang语言编写。 Riak:Riak是一个非关系数据库。这是一个基于键值对的数据库,用Erlang语言编写。 Hadoop:Hadoop是非关系数据库。这是一个基于文件的数据库,用Java语言编写。 influre DB:influre DB是一个非关系数据库。它是一个基于时间序列的数据库,用Go语言编写。 Level DB: Level DB是一个非关系数据库。它是一个基于键值对的数据库,用C++语言编写。 RocksDB:RocksDB是一个非关系数据库。它是一个基于键值对的数据库,用C++语言编写。 Tarantool:Tarantool是一个非关系数据库。这是一个基于键值对的数据库,用C语言编写。 TimescaleDB:TimescaleDB是一个非关系数据库。它是一个基于时间序列的数据库,用C语言编写。 VoltDB:VoltDB是一个非关系数据库。这是一个基于内存的键值对数据库,用Java语言编写。 Aerospike:Aerospike是一个非关系数据库。这是一个基于内存的键值对数据库,用C语言编写。 ArangoDB:ArangoDB是一个非关系数据库。它是一个基于文档的数据库,用C++语言编写。 Foundation DB: Foundation DB是一个非关系数据库。它是一个基于键值对的数据库,用C++语言编写。 OrientDB:OrientDB是一个非关系数据库。它是用Java语言编写的基于图形的数据库。

非关系数据库也就是我们常说的NoSQL数据库。它们的特点是不支持SQL语句,但是支持各种API,比如Redis支持Redis命令,MongoDB支持MongoDB命令等等。

3.4.文档数据库 文档数据库是一种非关系数据库,是基于文档的数据库。事实上,文档数据库与上述非关系数据库的区别在于,文档数据库的数据是以文档的形式存储的,而非关系数据库的数据是以键值对的形式存储的。 文档数据库的数据以文档的形式存储,文档是一种数据结构。它是一种类似于JSON的数据结构。它是键-值对的数据结构,但它的值可以是任何类型的数据,如字符串、数字、数组、对象等。 文件数据库包括但不限于:

MongoDB:MongoDB是一个基于文档的数据库,用C++语言编写。 CouchDB:CouchDB是一个基于文档的数据库,用Erlang语言编写。 Couchbase:Couchbase是一个基于文档的数据库,用C++语言编写。 ArangoDB:ArangoDB是一个基于文档的数据库,用C++语言编写。 Foundation DB: Foundation DB是一个基于文档的数据库,用C++语言编写。 OrientDB:OrientDB是一个基于文档的数据库,用Java语言编写。 RethinkDB:RethinkDB是一个基于文档的数据库,用C++语言编写。 Mark Logic: Mark Logic是一个基于文档的数据库,用Java语言编写。

4.InnoDB和myisam的区别 4.1.innodb InnoDB是MySQL 5.5之后默认的存储引擎,是一个事务型数据库。它支持事务、行级锁、外键、崩溃恢复和并发控制。 优势:

支持事务、行级锁、外键、崩溃恢复和并发控制。 支持MVCC,多版本并发控制,可以有效解决魔读问题。 支持B+树索引和哈希索引。 支持全文索引。 支持自增长列。 支持外键。

缺点:

它占用了大量的磁盘空间,因为它是以页为单位存储的,而且页的大小是固定的,通常是16KB,所以如果数据量很小,就会造成磁盘空间的浪费。 不支持全文索引的排序、分组和限制,不支持全文索引的模糊查询等。

4.2.米沙姆 MyISAM是MySQL 5.5之前的默认存储引擎。它是一个非事务数据库。它不支持事务、行级锁、外键、崩溃恢复和并发控制。 优势:

占用的磁盘空间小,因为是以表为单位存储的,表的大小不固定,所以如果数据量小,会造成磁盘空间的浪费。 支持全文索引的排序、分组和限制,全文索引的模糊查询等。

缺点:

不支持事务、行级锁、外键、崩溃修复功能和并发控制。 不支持MVCC和多版本并发控制,无法有效解决魔读问题。 不支持B+树索引和哈希索引。 支持非自增长列。 不支持外键。

4.3.InnoDB和myisam的区别 它们的区别主要如下:

Innodb支持事务,myisam不支持。 Innodb支持行级锁,但myisam不支持。 Innodb支持外键,myisam不支持。 Innodb支持崩溃修复能力和并发控制,而myisam不支持。 Innodb支持MVCC和多版本并发控制,可以有效解决魔读问题。myisam不支持MVCC和多版本并发控制,无法有效解决魔读问题。 Innodb支持B+树索引和hash索引,myisam不支持。 Innodb支持自生长列,但myisam不支持。 Innodb支持外键,myisam不支持。 Innodb占用大量磁盘空间,而myisam占用少量磁盘空间。 Innodb支持全文索引的排序、分组和限制,全文索引的模糊查询,myisam支持全文索引的排序、分组和限制,全文索引的模糊查询等。

可以看到上面列出的innodb和myisam的优缺点。它们的优缺点是相反的,所以在实际开发中,我们需要根据自己的业务场景选择合适的存储引擎。 0.3.group by和having之间的区别

Group语句用于对查询结果进行分组。 Having语句用于过滤分组结果。 Group语句必须在having语句之前。 Having语句必须在order by语句之前。 Group语句可以使用聚合函数,having语句不能使用聚合函数。

download:SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序

点赞
收藏
评论区
推荐文章
鲍忠 鲍忠
1年前
SpringBoot2.X+Vue+UniAPP全栈开发医疗小程序神思者
SpringBoot2.XVueUniAPP全栈开发医疗小程序神思者!1667295671fcfd6ed8018394d(https://imghelloworld.osscnbeijing.aliyuncs.com/img
梦
3年前
微信小程序new Date()转换时间异常问题
微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT
乐和 乐和
1个月前
SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序
SpringBoot2.XVueUniAPP,全栈开发医疗小程序download:chaoxingit.com/208/SpringBoot2.XVueUniAPP全栈开发医疗小程序随着移动互联网的快速发展,全栈开发已成为越来越多企业和个人关注的焦
乐和 乐和
1个月前
SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序
SpringBoot2.XVueUniAPP,全栈开发医疗小程序download》chaoxingit.com/208/现在市面上的医疗小程序有哪些目前市面上有许多医疗相关的小程序,以下是一些比较知名和常见的医疗小程序:挂号平台小程序:包括挂号网、微医
linbojue linbojue
1个月前
SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序
开发医疗小程序的技术选型和开发流程在开发医疗小程序时,可以根据具体需求和项目规模选择合适的技术选型。以下是一些常用的技术选项:前端开发:医疗小程序的前端开发可以使用基于HTML、CSS和JavaScript的框架和库,如Vue.js、React.js和An
linbojue linbojue
1个月前
SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序
开发医疗小程序的技术选型和开发流程在开发医疗小程序时,可以根据具体需求和项目规模选择合适的技术选型。以下是一些常用的技术选项:前端开发:医疗小程序的前端开发可以使用基于HTML、CSS和JavaScript的框架和库,如Vue.js、React.js和An
臧霸 臧霸
4星期前
SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序
开发医疗小程序需要综合运用后端和前端技术,并结合UniApp实现跨平台开发。以下是可能的技术选型和开发步骤:1.后端技术选型:SpringBoot2.x:作为后端的主要框架,提供快速开发和丰富的功能。MySQL或其他适合的数据库:用于存储医疗相关的数据,如
彭玘 彭玘
1星期前
SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序
SpringBoot2.XVueUniAPP,全栈开发医疗小程序download》chaoxingit.com/208/全栈开发医疗小程序:利用SpringBoot2.X、Vue和UniApp在当今数字化时代,医疗行业也在不断地迈向信息化和智能化的方向
灵吉菩萨 灵吉菩萨
1星期前
SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序
开始学习;//xia栽ke://kuxueit.cn/5184/一、为什么要安装docker?1.Docker原理往简单了说,Docker是个沙箱环境。你可以创建很多个沙箱空间,然后在每个沙箱中部署不同的程序。比如沙箱A里面部署MySQL,沙箱B中部署Ma
何婆子 何婆子
3个月前
SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序
SpringBoot2.XVueUniAPP,全栈开发医疗小程序download》chaoxingit.com/208/开发医疗小程序是一个复杂而有挑战性的任务,涉及到前端(UniAPP、Vue)、后端(SpringBoot)、数据库、安全性等多个方面