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
持久性,即一旦事务提交,它对数据库中数据的改变就应该是永久性的。