约束
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这个关键词来定义。