数据的完整性
数据完整性,指保证用户输入的数据保存到数据库中是正确的,即数据库中的数据能正确反应实际情况。
为了确保数据的完整性,一般在创建表时给表中添加约束,也可修改表的约束。
数据的完整性是指数据的可靠性和准确性,数据完整性类型一般分三种:
1.实体完整性:通过唯一约束,主键约束或标识列属性来实现,如:PRIMARY KEY(主键约束)、UNIQUE 唯一值约束。
2.域完整性:通过数据类型(如数值类型、日期类型、字符串类型等限制类型)、非空约束(NOT NULL)、默认值定义(DEFAULT)、CHECK检查(MySQL不支持check约束)来实现。
3.引用完整性:又叫做参照完整性,通过外键约束(FOREIGN KEY)来实现。引用完整性保证键值在所有表中一致,不能引用不存在的值。
MySQL三范式
1NF:数据具有原子性,不可再分(字段不可分)
2NF:每行数据唯一性(有主键,非主键字段依赖主键)
3NF:要求一个数据库表中不包含已在其它表中已包含的非主键字段。就是说,表的信息,如果能够被推导出来,就不应该单独的设计一个字段来存放(非主键字段不能相互依赖)
反三范式
没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,提高读性能,就必须降低范式标准,适当保留冗余数据。具体做法是: 在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,减少了查询时的关联,提高查询效率,因为在数据库的操作中查询的比例要远远大于DML的比例。但是反范式化一定要适度,并且在原本已满足三范式的基础上再做调整的。
DQL、DML、DDL、DCL https://www.cnblogs.com/study-s/p/5287529.html
SQL语句执行顺序
https://www.cnblogs.com/yyjie/p/7788428.html
开始 -> FROM子句 -> WHERE子句 -> GROUP BY子句 -> HAVING子句 -> ORDER BY子句 -> SELECT子句 -> LIMIT子句 ->最终结果
每个子句执行后都会产生一个中间结果,供接下来的子句使用,如果不存在某个子句,就跳过