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