数据库中数据表的约束
表的约束分为
-
主键约束 primary key
-
外键约束 foreign key
-
非空约束 not null
-
唯一性约束 unique
-
默认约束 default
列级约束和表级约束是mysql中的两种定义约束的方式。列级约束定义在一个列上,只对该列起约束作用;表级约束是独立于列的定义,可以应用在一个表中的多个列上。
1.主键约束
主键约束相当于非空约束和唯一性约束的组合,被约束的字段不允许重复,也不允许出现空值即NULL值,且每个表中最多只允许有一个主键。
其语法格式如下
列级约束:
字段名 数据类型 PRIMARY KEY
表及约束:
PRIMARY KEY (字段名1, 字段名2,~~)
删除主键约束
将数据表中的主键约束删除,其语法为:
ALTER TABLE 表名 DROP PREMARY KEY;
添加主键约束后,插入重复值或NULL值会失败。
2.外键约束
从数据表中添加外键字段,关联主表中的主键字段
3.非空约束
非空约束是指字段内的值不能为NULL值。
其语法为
字段名 数据类型 NOT NULL;
在创建数据表时,非空约束与值为NULL的默认约束(DEFULT NULL)不能同时存在,否则数据表会创建失败。
提示“Invalid default value for 'n2'”错误
4.唯一性约束
唯一性约束用于保证数据表中字段的唯一性,允许有空值且可允许有多个空值。即表中的字段不能重复出现。
列级约束
字段名 数据类型 UNIQUE;
表级约束
UNIQUE (字段名1, 字段名2,~)
MYSQL中的唯一约束允许存在多个NULL值。
5.默认约束
默认约束用于数据表中的字段置顶默认值,语句为
字段名 数据类型 DEFAULT 默认值;
注:BLOB 、TEXT数据类型不支持默认约束。
删除约束
例:
例1:删除company表的主键约束。
ALTER TABLE company DROP PRIMARY KEY;
例2:删除emp表dept_id字段的外键约束,外键约束名是fk_emp_dept.
ALTER TABLE emp DROP FOREIGN KEY fk_emp_dept;
例3:删除sc表的外键约束A2。
ALTER TABLE sc DROP FOREIGN KEY A2;
例4:删除company表的company_name字段的唯一约束。
ALTER TABLE company DROP INDEX company_name;
例5:删除company表的company_address字段的非空约束。
ALTER TABLE company MODIFY company_address INT NOT NULL;
例6:删除company表的company_tel字段的默认约束。
ALTER TABLE company MODIFY company_tel INT UNSIGNED;