数据库
什么是数据库?
数据库是数据的仓库。
与普通的“数据仓库”不同的是,数据库依据“数据结构”来组织数据,因为“数据结构”,所以我们看到的数据是比较“条理化”的(比如不会跟以前的普通文件存储式存储成一个文件那么不条理化,我们的数据库分成一个个库,分成一个个表,分成一条条记录,这些记录是多么分明)
也因为其“数据结构”式,所以有极高的查找速率(比如B-Tree查找法),(由于专精,可以根据自己的结构特性来快速查找,所以对于数据库的查找会比较快捷;不像普通文件系统的“查找”那么通用)
如果与EXCEL来比的话,能明显的看出数据库的好处,我们能给一个个“字段”添加“约束”(比如约束一列的值不能为空)
数据库与普通的文件系统的主要区别(起因):数据库能快速查找对应的数据
常说的XX数据库,其实实质上是XX数据库管理系统。数据库管理系统是一个软件,是数据库管理的程序实现。
什么是关系型数据库?
关系型数据库是依据关系模型来创建的数据库。
所谓关系模型就是“一对一、一对多、多对多”等关系模型,关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。
关系型数据可以很好地存储一些关系模型的数据,比如老师对应多个学生的数据(“多对多”),一本书对应多个作者(“一对多”),一本书对应一个出版日期(“一对一”)
关系模型包括数据结构(数据存储的问题,二维表)、操作指令集合(SQL语句)、完整性约束(表内数据约束、表与表之间的约束)。
Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL
关系型数据库的特点:
安全(因为存储在磁盘中,不会说突然断电数据就没有了)、
容易理解(建立在关系模型上)、
但不节省空间(因为建立在关系模型上,就要遵循某些规则,好比数据中某字段值即使为空仍要分配空间)
事务
-
转账是生活中常见的操作,比如从A账户转账100元到B账号。站在用户角度而言,这是一个逻辑上的单一操作,然而在数据库系统中,至少会分成两个步骤来完成:
1.将A账户的金额减少100元
2.将B账户的金额增加100元。
在这个过程中可能会出现以下问题:
①转账操作的第一步执行成功,A账户上的钱减少了100元,但是第二步执行失败或者未执行便发生系统崩溃,导致B账户并没有相应增加100元。
②转账操作刚完成就发生系统崩溃,系统重启恢复时丢失了崩溃前的转账记录。
③同时又另一个用户转账给B账户,由于同时对B账户进行操作,导致B账户金额出现异常。
为了便于解决这些问题,需要引入数据库事务的概念。 -
什么是数据库事务
定义:数据库事务是构成单一逻辑工作单元的操作集合
一个典型的数据库事务如下所示
BEGIN TRANSACTION //事务开始
SQL1
SQL2
COMMIT/ROLLBACK //事务提交或回滚
关于事务的定义有几点需要解释下:
①数据库事务可以包含一个或多个数据库操作,但这些操作构成一个逻辑上的整体。
②构成逻辑整体的这些数据库操作,要么全部执行成功,要么全部不执行。
③构成事务的所有操作,要么全都对数据库产生影响,要么全都不产生影响,即不管事务是否执行成功,数据库总能保持一致性状态。
④以上即使在数据库出现故障以及并发事务存在的情况下依然成立。
事务如何解决问题
对于上面的转账例子,可以将转账相关的所有操作包含在一个事务中