MySQL约束 唯一约束、主键约束、非空约束、外键约束

1、约束概念

概念:对表中的数据进行限定,保证数据的正确性、有效性和完整性。

约束的分类:

  1. 主键约束:primary key
  2. 非空约束:not null
  3. 唯一约束:unique
  4. 外键约束:foreign key

2、非空约束

not null, 某一列的值不能为空

2.1 创建表时添加约束

CREATE TABLE stu(
	id int,
	name VARCHAR(20) NOT NULL  -- NAME 为非空
);

image-20210331150332794

2.2 创建表后,添加非空约束

-- 创建表后,添加非空约束
ALTER TABLE stu MODIFY name VARCHAR(20) NOT NULL;

2.3 删除name的非空约束

alter table stu modify name varchar(20);

3、唯一约束

unique,某一列的值不能重复

注意:

  1. 唯一约束可以有null值,但是只能有一个null

3.1 创建表时添加约束

CREATE TABLE stu(
	id INT,
	phone_number VARCHAR(20) UNIQUE  -- 手机号
);

image-20210331152409662

3.2 创建表后,添加唯一约束

ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;

image-20210331153739167

3.3 删除唯一约束

-- 删除唯一约束  
ALTER TABLE stu DROP INDEX phone_number;

image-20210331153010163

4、主键约束

主键约束:表示非空且唯一

注意:

  1. 一张表只能有一个主键
  2. 主键就是一张表中记录的唯一标识

4.1 创建表时,添加主键约束

CREATE TABLE stu(
	id INT PRIMARY KEY,
	NAME VARCHAR(20)
);

image-20210331154347025

4.2 删除主键

ALTER TABLE stu DROP PRIMARY KEY;

image-20210331154620461

4.3 创建表后,添加主键

ALTER TABLE stu MODIFY id INT PRIMARY KEY;

image-20210331154757352

4.4 自动增长

如果某一列是数值类型的,使用auto_increment可以完成值得自动增长。

自动增长的数据只跟上一个数据有关。

  • 在创建表时添加主键约束,并完成自动增长

    CREATE TABLE stu(
    	id INT PRIMARY KEY auto_increment, -- 给id添加主键约束
    	NAME VARCHAR(20)
    );
    

    image-20210331155407445

  • 删除自动增长

    ALTER TABLE stu MODIFY id INT;
    
  • 添加自动增长

    ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;
    

5、外键约束

5.1 创建表时添加外键

语法:

create table 表名(
	...
	外键列
	constraint 外键名称 foreign key 外键列名称 reference 主表名称(主表列名称)
);

image-20210331204854341

image-20210331204921753

image-20210331205035297

image-20210331205051763

5.2 删除外键

alter table 表名 drop foreign key 外键名;

image-20210331205724243

5.3 添加外键

alter table 表名 add constraint 外键名称 foreign key 外键列名称 reference 主表名称(主表列名称)

image-20210331205933946

5.4 级联操作

  • 添加级联的操作

    alter table 表名 add constraint 外键名称 foreign key 外键列名称 reference 主表名称(主表列名称) on update cascade on delete cascade;
    
  • 级联的更新

    添加外键的时候设置级联

    alter table 表名 add constraint 外键名称 foreign key 外键列名称 reference 主表名称(主表列名称) on update cascade;
    

    image-20210331211215364

  • 级联的删除

    alter table 表名 add constraint 外键名称 foreign key 外键列名称 reference 主表名称(主表列名称) on update cascade on delete cascade;
    

    image-20210331211554022


版权声明:本文为qq_43536350原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。