一、关系型数据库三大范式
1NF(第一范式):属性(对应于表中的字段)不能再被分割,也就是这个字段只能是一个值,不能再分为多个其他的字段了。1NF 是所有关系型数据库的最基本要求 ,也就是说关系型数据库中创建的表一定满足第一范式。
2NF(第二范式):2NF 要求数据库表中的每个实例或行必须可以被惟一地区分,2NF 在 1NF 的基础上增加了一个列,这个列称为主键,非主属性都依赖于主键。
3NF(第三范式):3NF 在 2NF 的基础之上,要求每列都和主键列直接相关,而不是间接相关,即不存在其他表的非主键信息。
在开发过程中,并不一定要满足三大范式,有时候为了提高查询效率,可以在表中冗余其他表的字段。
二、DML 语句和 DDL 语句区别
DML(数据操作语言)和DDL(数据定义语言)是SQL中两个重要的语言分类,它们的区别在以下几个方面:
1.作用对象不同
DDL用于创建、修改或删除数据库中的对象,例如表、视图、索引等。而DML用于对这些对象中的数据进行操作,例如插入、更新、删除数据等。
2.执行结果不同
DDL执行后会改变数据库对象的结构,但是不会对数据库中原有的数据进行任何操作,因此DDL语句不会返回任何行或列。
DML执行后会对数据进行变更,因此DML语句会返回受影响的行数或者查询到的数据。
3.自动提交方式不同
DDL语句执行后会自动提交事务,即使没有显式地使用“COMMIT”命令,也会将修改持久化到磁盘上。
DML语句执行后不会自动提交事务,需要手动使用“COMMIT”或“ROLLBACK”命令来控制事务的提交或回滚。
4.锁定机制不同
由于DDL语句会修改数据库的结构,因此执行时需要对整张表进行锁定,防止其他用户对该表进行并发操作。
DML语句只会对涉及到的行或者页进行锁定,因此相对于DDL语句来说,对并发操作的影响要小一些。
综上所述,DDL主要用于管理数据库结构、表和列等对象,而DML则是用于增删改查操作。两者的执行结果、自动提交方式和锁定机制都有所不同。
三、主键和外键的区别
主键:用于唯一标识一行数据,不能有重复,不允许为空,且一个表只能有一个主键;
外键:用来和其