MYSQL基础四--约束

约束

1.约束数据的完整性和一致性;

2.约束分为表级约束(单个表)和列级约束(多表之间的约束)。

3.约束的类型:

NOT NULL;非空约束

DEFAULT;默认约束

PRIMARY KEY;主键约束

UNIQUE KEY;唯一约束

FOREIGN KEY;外键约束

4.自动编号,必须与主键组合使用。默认情况下起始值为1,不断递增。AUTO_INSCRMENT

5.主键约束,每张表只能有一个主键,主键保证记录的唯一性,主键为NOT NULL。

在AUTO_INSCRMENT后加primary key

create table tab_blue(id int unsighned auto_increment primary key,username varchar(30));

6.唯一约束:UNIQUE KEY

唯一约束保证记录的唯一性,一张表可以存在多个唯一约束,且可以为NULL。

唯一约束的意义在于当需要在表中的值是唯一不能重复的时候,需要将该序列的值设置为唯一性约束。

如学号的唯一性,在学号序列中设置唯一性约束,当出现相同学号的时候就会报错。

7.默认约束

当插入记录,没有明确为字段赋值,则自动赋予默认值。Default

8.外界约束

保持数据一致性,完整性。实现一对一或一对多关系。

父表和子表必须使用相同的存储引擎,而且禁止使用零时列表。

数据表的存储引擎只能是InnoDB。

外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度可以不同。

外键列和参照列必须创建索引。如果外键列不存在索引的话,MYSQL将自动创建索引。

编辑数据表的默认的存储引擎

CASCODE:从父表删除或删除且自动删除或更新子表中匹配的行;

SET NULL:从父表删除或更新行,并设置子表的外键列为NULL,如果使用该选项,必须保证子列表没有指定NOT NULL.

RESTRICT:拒绝父表的删除或更新操作。

NO ACTION:与RESTRICT相同。

以上方式为物理外键约束。

所谓的逻辑外键,我们定义两张表的结构的时候,我们是安装定义两张表的结构去定义,而不去使用foreign key这个关键词去定义。

在外键约束当中,在实际的开发过程中,我们很少使用物理的外键约束,很多都去使用逻辑的外键约束,因为物理的外键约束只有INNODB这种引擎才会支持,像我们另外的一种引擎MYISAM的引擎则不支持,反过来说,如果我想创建的数据表,假设存储引擎为MYISAM,而且又想使用外键约束的话,其实是不可能实现的,所以说,我们在实际的项目开发中,我们不去定义物理的外键,所谓的逻辑外键指的是就是我们在定义两张表的结构的时候,我们是按照存在的某种结构的方式去定义,但是不去使用FOREIGN KEY这个关键词来定义。

原文地址:https://www.cnblogs.com/moxuexiaotong/p/6586508.html