数据模型
数据类型
名称 |
类型 |
说明 |
INT |
整型 |
4字节整数类型,范围约+/-21亿 |
BIGINT |
长整型 |
8字节整数类型,范围约+/-922亿 |
REAL |
浮点型 |
4字节浮点数,范围约+/-10^38 |
DOUBLE |
浮点型 |
8字节浮点数,范围约+/-10^308 |
DECIMAL(M,N) |
高精度小数 |
指定精度的小数(M:整数位数,N小数位数) |
CHAR(N) |
定长字符串 |
存储指定长度的字符串(N长度) |
VARCHAR(N) |
变长字符串 |
可变长度的字符串(最大N长度) |
BOOLEAN |
布尔类型 |
True或者False |
DATE |
日期类型 |
日期,例如,2018-06-22 |
TIME |
时间类型 |
时间,例如,12:20:59 |
DATETIME |
日期和时间类型 |
日期+时间,例如,2018-06-22 12:20:59 |
关系模型
主键
- 不使用任何业务相关的字段作为主键
- 常用自增整数类型(ID)作为主键
- 可以使用多个列作为联合主键,但联合主键并不常用
外键
- 关系数据库通过外键可以实现一对多、多对多和一对一的关系
- 外键既可以通过数据库来约束,也可以不设置约束,仅依靠应用程序的逻辑来保证
索引
-
原理是让数据库系统不必扫描整个表,而是直接定位到符合条件的记录,提高查询速度
- 索引的效率取决于索引列的值是否散列,即该列的值如果越互不相同,那么索引效率越高
- 索引的优点是提高了查询效率.缺点是在插入、更新和删除记录时,需要同时修改索引,拖慢速度
- 通过创建唯一索引,可以保证某一列的值具有唯一性
事务ACID
- A:Atomic,原子性,将所有SQL作为原子工作单元执行,要么全部执行,要么全部不执行
- C:Consistent,一致性,事务完成后,所有数据的状态都是一致的,即A账户只要减去了100,B账户则必定加上了100
- I:Isolation,隔离性,如果有多个事务并发执行,每个事务作出的修改必须与其他事务隔离
- D:Duration,持久性,即事务完成后,对数据库数据的修改被持久化存储
事务隔离级别
隔离级别 |
说明 |
脏读 |
不可重复读 |
幻读 |
读未提交 |
事务会读到其它未提交事务的数据(脏读) |
yes |
yes |
yes |
读提交 |
事务可以读取另一个已提交的事务 |
- |
yes |
yes |
可重复读 |
事务中,第一次读取不到,但可以成功更新,之后就可以读到(幻读) |
- |
- |
yes |
序列化 |
事务按照次序依次执行 |
- |
- |
- |
原文地址: https://www.zhuyilong.我爱你/tech/sql_base.html
SQL基础