龙空技术网

MySQL 02:表约束与表关系

南北不是东西 68

前言:

眼前小伙伴们对“mysql取消主键约束”大体比较重视,我们都需要知道一些“mysql取消主键约束”的相关资讯。那么小编也在网络上网罗了一些对于“mysql取消主键约束””的相关资讯,希望姐妹们能喜欢,朋友们一起来学习一下吧!

表约束

1.非空约束(NULL )

数据库字段的某个值是否可以为空, NULL 字段值可以为空, NOT NULL 字段值不能为空。当字段设置为空时,插入值就必须插入值,否则就会报错。

(1) 设置非空约束(修改)

ALTER TABLE 表名 MODIFY 字段名 类型 NOT NULL

mysql> ALTER TABLE `student` MODIFY `name` VARCHAR(20) NOT NULL;

(2)取消非空约束(修改)

ALTER TABLE 表名 MODIFY 字段名 类型 NULL

mysql> ALTER TABLE `student` MODIFY `name` VARCHAR(20) NULL;

2.唯一约束(unique key)

(1)添加唯一约束

字段添加唯一约束之后,该字段的值不重复,也就是该字段的值在该表中唯一,unique key

添加唯一约束。(UNI 表示唯一键)

ALTER TABLE 表名 ADD UNIQUE KEY(字段)

ALTER TABLE 表名 ADD CONSTRAINT 键名 UNIQUE KEY(字段)

mysql> ALTER TABLE `student` ADD UNIQUE KEY('id');
mysql> DESC `student`;+-------+-------------+------+-----+---------+-------+| Field | Type        | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id    | int(11)     | YES  | UNI | NULL    |       || name  | varchar(20) | NO   |     | NULL    |       || age   | int(11)     | YES  |     | NULL    |       |+-------+-------------+------+-----+---------+-------+

(2)取消唯一约束

ALTER TABLE 表名 DROP KEY 约束名

mysql> ALTER TABLE `student` DROP KEY `id`;
mysql> DESC `student`;+-------+-------------+------+-----+---------+-------+| Field | Type        | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id    | int(11)     | YES  |     | NULL    |       || name  | varchar(20) | NO   |     | NULL    |       || age   | int(11)     | YES  |     | NULL    |       |+-------+-------------+------+-----+---------+-------+

3.主键约束(primary)

主键保证记录的唯一性,主键自动为 NOT NULL, 每张数据表只能存在一个主键。相当于唯一约束+非空约束,如果该表格没有定义主键,那么第一个添加非空+唯一约束的视为主键。这种情况你还是可以添加字段为主键的,添加成功之后,非空+唯一约束的字段就不再视为主键。

(1)添加主键约束

ALTER TABLE 表名 ADD PRIMARY KEY (字段名);

 ALTER TABLE `student` ADD PRIMARY KEY (`age`);
+-------+-------------+------+-----+---------+-------+| Field | Type        | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id    | int(11)     | NO   | UNI | NULL    |       || name  | varchar(20) | NO   |     | NULL    |       || age   | int(11)     | NO   | PRI | NULL    |       |+-------+-------------+------+-----+---------+-------+

(2)取消主键约束

mysql> ALTER TABLE `student` DROP PRIMARY KEY;
+-------+-------------+------+-----+---------+-------+| Field | Type        | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id    | int(11)     | NO   | PRI | NULL    |       || name  | varchar(20) | NO   |     | NULL    |       || age   | int(11)     | NO   |     | NULL    |       |+-------+-------------+------+-----+---------+-------+

4.自增约束(auto_increment)

AUTO_INCREMENT 自动编号,且必须与主键组合使用,默认情况下,起始值为1,每次的增量为1。例如,如果将 id 设为自增约束,在增加元素而不设置 id 的情况下就会将 id 自动进行 + 1 。

(1)增加自增约束

mysql> ALTER TABLE `student` CHANGE `age` `age` INT NOT NULL;
+-------+-------------+------+-----+---------+-------+| Field | Type        | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id    | int(11)     | NO   | PRI | NULL    |       || name  | varchar(20) | NO   |     | NULL    |       || age   | int(11)     | NO   |     | NULL    |       |+-------+-------------+------+-----+---------+-------+

(2)取消自增约束

mysql> ALTER TABLE `student` CHANGE `age` `age` INT NOT NULL;
+-------+-------------+------+-----+---------+-------+| Field | Type        | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id    | int(11)     | NO   | PRI | NULL    |       || name  | varchar(20) | NO   |     | NULL    |       || age   | int(11)     | NO   |     | NULL    |       |+-------+-------------+------+-----+---------+-------+

5.默认约束(default)

DEFAULT(默认约束) 初始值设置,插入记录时,如果没有明确为字段赋值,则自动赋予默认值。例如,将年龄设置为默认约束且为18,在增加元素而你添加年龄的时候会默认将年龄设置为18。

(1)增加默认约束

mysql> ALTER TABLE `student` ALTER `age` SET DEFAULT 18;
+-------+-------------+------+-----+---------+-------+| Field | Type        | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id    | int(11)     | NO   | PRI | NULL    |       || name  | varchar(20) | NO   |     | NULL    |       || age   | int(11)     | NO   |     | 18      |       |+-------+-------------+------+-----+---------+-------+

(2)取消默认约束

mysql> ALTER TABLE `student` ALTER `age` DROP DEFAULT;
+-------+-------------+------+-----+---------+-------+| Field | Type        | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id    | int(11)     | NO   | PRI | NULL    |       || name  | varchar(20) | NO   |     | NULL    |       || age   | int(11)     | NO   |     | NULL    |       |+-------+-------------+------+-----+---------+-------+

6.外键约束

之前讲到的约束,都是表内约束自身,而外键约束约束其他表。数据表的存储引擎只能为InnoDB。外键列和参照列数据类型一致,外键必须关联到键上面去,外键在名在数据库要唯一。字段添加唯一约束之后,该字段的值不重复,也就是该字段的值在该表中唯一unique key 。当存在外键关联时,默认是不允许删除的,这样来保证数据的完整性。

标签: #mysql取消主键约束 #唯一约束和主键约束之间的联系 #mysql修改非空约束 #mysql添加约束 #mysql删除表约束