1. MySQL 提供的约束
为了实施数据完整性,MySQL 提供了以下六种约束。
- (1)主键约束(PRIMARY KEY):定义为主健的字段或字段组合,其取值在表中不能重复,构成主键的字段不能为NULL.
- (2)外键约束(FOREIGN KEY): 定义为外键的字段,其值必须参考被它参照的表的主键的取值,当外键不是构成主键的字段时,可以为NULL.
- (3)唯-约束(UNIQUE): 定义了唯约束的字段在表中的取值不能重复.
- (4)非空约束(NOT NULL):定义了非空约束的字段取值不能为NULL.
- (5)默认约束(DEFAULT): 定义了默认约束的字段,在没有给它输入数据的情况下取默认值.
- (6)检查约束(CHECK): 定义了检查约束的字段,其值必须使CHECK(表达式)中的表达式的返回值为TRUE.
那我们该如何添加自己所需的约束呢~
添加约束的情况有两种:
①在已存在的数据表中添加约束
②在创建数据表的同时添加约束
我们先来看①这种情况
- 添加约束,语法格式如下:
添加主键约束:
ALTER TABLE 表名 ADD PRIMARY KEY (字段名);
添加外键约束:
ALTER TABLE 表名 ADD FOREIGN KEY (字段名) REFERENCES 父表名(字段名);
添加唯一约束:
ALTER TABLE 表名 ADD UNIQUE (字段名);
添加检查约束:
ALTER TABLE 表名 ADD CHECK (字段名);
2. 删除约束,语法格式如下:
删除主键:
ALTER TABLE 表名 DROP PRIMARY KEY;
删除外键:
ALTER TABLE 表名 DROP FOREIGN KEY 约束名;
删除唯一约束:
ALTER TABLE 表名 DROP [INDEX | KEY ]约束名;
删除检查约束:
ALTER TABLE 表名 DROP CHECK 约束名;
3. 添加和删除非空约束和默认约束,语法格式如下:
ALTER TABLE 表名 MODIFY 字段名 数据类型 [NOT NULL | DEFAULT 默认值];
呼~①结束
看官 别走 你难道忘记上文的②了吗
②在创建数据表的同时添加约束
不知道大家还记不记得我上一篇数据表的创建与管理中的suinfo表,本趴菜来放个图:
假设我要在创建suinfo表同时为其添加约束,代码如下:
CREATE TABLE stuinfo(
stuno CHAR(4) PRIMARY KEY,
stuname CHAR(5) NOT NULL,
stusex ENUM('男','女'),
stubirthday DATE,
stuaddress VARCHAR(60) DEFAULT '地址不详');
如何查看(一览)我们的表结构?
DESC 表名;