-
SQL数据类型
1.整型
类型 | 字节大小 |
TINGINT | 1 |
SMALLINT | 2 |
MEDIUMINT | 3 |
INT | 4 |
BIGINT | 8 |
2.浮点型
float
double
3.字符型
类型 | 区别 |
char | 定长字符串,长度不够自动补空格 |
varchar | 变长字符串 |
4.text
存储文本
5.日期
类型 | 格式 |
year | 1991 |
time | 10:01:10 |
date | 1991-01-10 |
datetime | 1991-01-10 10:01:10 |
timestamp | 1991-01-10 10:01:10 |
6.BLOB
存储二进制
7.enum
枚举类型,字段值只能取一个
8.set
枚举类型,字段值可以取多个
-
修改已存在的表
alter table 表名 add/drop/modify/change 字段名 / index 字段名 / unique index 字段名
-
视图
视图是一张虚表,它是由数据库中的一张或多张表的某些列拼接起来的一张虚拟表,不占磁盘空间。
对视图中字段的数据进行修改、删除会直接修改对应的原表。
向视图插入数据时,如果没有给某张原表的某些字段赋值,并且这些字段要求是非空的,则插入操作会失败。
-
存储过程
完成特定功能的sql语句集,已经编译好的,存储在数据库中,调用时用存储过程名,并传入参数。
-
索引
什么是索引?
索引是一种数据结构,存储在数据库中,占用磁盘空间。
索引本质是一颗平衡树(非二叉),对表数据进行增删改查就会对这颗平衡树进行操作,查找次数为树的高度,每次进行增删改操作,都需要调整这颗平衡树,所以索引可以提高查询效率,但是,频繁增删改会降低操作效率。
为什么用索引?
索引存在的目的是可以提高查询效率。
索引有什么优缺点?
优点:提高查询效率。
缺点:频繁的增删改操作会减低效率。
索引有哪些分类?
索引分为聚集索引和非聚集索引。
对于InnoDB来说:
聚集索引:树的每个节点是主键的值,叶子节点是对应的数据记录。
非聚集索引:树的每个节点是除主键外的字段值,叶子节点是其对应的主键值。
通过聚集索引可以直接查找到数据。
通过非聚集索引查找到的是对应的主键值,然后再通过聚集索引查找到数据。
-
触发器
由事件触发某个操作,这些事件包括insert、delete、update,触发时机可以在事件之前,也可以在事件之后。
-
事务
事务的四个特性:
- 原子性:
事务中的操作,要么都执行,要么都不执行。
- 一致性:
事务提交前后,数据库满足完整性。
- 隔离性:
多个事务并行执行时,相互不影响。
- 持久性:
事务提交后,数据记录是永久保存的。
隔离级别:
- 读未提交:
事务A已开始执行,但还未提交,此时,事务B查询了事务A修改的记录,然后,事务A回滚,这将造成事务B查询到的记录是无意义的,这个问题称为脏读。
- 读已提交
事务A有两次查询数据记录,第一次查询结束,此时,事务B update了某些记录并且已提交,然后,事务A执行第二次查询,这将造成事务A中两次查询结果不一样,这个问题称为不可重复读。
- 可重复读
事务A有两次查询某个范围的数据记录,第一次查询结束,此时,事务B 在这个范围内insert了某些数据记录或delete了某些记录并已提交,然后,事务A执行第二次查询,这将会造成事务A第二次查询的结果比第一次的多了或少了某些数据记录,就像出现了幻觉一样,这个问题称为幻读。
- 可串行化
事务A与事务B是串行执行的,该级别下不会产生任何问题,但是效率最低。