SQL
全称为 Structured Query Language
,即为结构化查询语言。
目前很多数据库(关系型数据库),都是建立在 SQL
上的。
如果把数据库比作盘子,那数据就是盘子里的菜,SQL
则是你的筷子。
有一些比较流行的数据库比如 SQLite
、MySQL
、Postgres
、Oracle
和 Microsoft SQL Server
.
所有这些数据库都支持标准的 SQL
,换句话说,你学会了 SQL
就可以对这些数据库做数据操作了!
当然上面的每一种数据库都有自己的特性和适用范围(想象一下你家有不同尺寸的盘子).
因此,在接触实际的数据库之前,我们需要先掌握基础 SQL
的使用方式。
# 关系型数据库
RDBMS
全称为 Relational database management system
,关系型数据库,简单理解的话,就是表格结构的数据联系。
关系型数据库的数据是以表格的形式存储的,每一行代表一条数据,每一列代表一种数据类型。
关系型数据库遵循 ACID
原则,即 Atomicity
(原子性)、Consistency
(一致性)、Isolation
(隔离性)和 Durability
(持久性)。
# Atomicity
原子性,即事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
只要有一个事务操作失败,整个事务就会回滚,所有的操作都不会生效。
比如银行转账,从 A
账户转账 100
美元至 B
账户,分为两个步骤:
- 从
A
账户扣除100
美元 - 向
B
账户增加100
美元
这两步操作要么同时完成,要么同时不完成。
如果只完成了第一步,而第二步没有完成,那么 A
账户就少了 100
美元,而 B
账户却没有增加 100
美元,这就是一个不可分割的工作单位。
# Consistency
一致性,即事务必须使数据库从一个一致性状态变换到另外一个一致性状态。
例如现有完整性约束 a+b=10
,如果一个事务改变了 a
,那么必须得改变 b
,使得事务结束后依然满足 a+b=10
,否则事务失败。
# Isolation
独立性,即多个事务并发执行时,事务之间相互隔离,一个事务的执行不应该影响其他事务的执行。
比如银行转账,从 A
账户转账 100
美元至 B
账户。在这个交易还未完成的情况下,如果此时 B
查询自己的账户,是看不到新增加的100
美元的。
# Durability
持久性,即一旦事务提交,它对数据库中数据的改变就应该是永久性的。
数据库操作 →