约束:一种限制,用于限制表中的数据,为了保证表中的数据准确性和可靠性。

六大约束:

  1. not null:非空约束,用于保证该字段的值不能为空。
  2. default:默认约束,用于保证该字段有默认值。
  3. primary key:主键约束,用于保证该字段的值具有唯一性,并且非空。
  4. unique:唯一约束,用于保证该字段的值具有唯一性,可以为空,但只能有一个值为空。
  5. check:检查约束【mysql 不支持】
  6. foreign key: 外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值,在从表添加外键约束,用于引用主表中某列的值。

添加约束的时机:1)创建表时  2)修改表时

约束的添加分类:

  • 列级约束:六大约束都支持;但外键约束没有效果。
  • 表级约束:除了非空,默认,其他的都支持。

 

添加列级约束

       语法:直接在字段名和类型后面追加约束类型即可。只支持:默认、非空、主键、唯一。

create table student(
   id int primary key,  #主键
   stuName varchar(20) not null,  #非空
   gender char(1) check(gender='' or gender=''),  #检查
   seat int unique,  #唯一
   age int default 18, #默认
   majorid int references major(id)  #外键
);

添加表级约束

      语法:在各个字段的最下面,[constraint 约束名] 约束类型(字段名)

create table student(
   id int,
   stuName varchar(20),
   gender char(1),
   seat int,
   age int,
   majorid int,
   [constraint pk] primary key(id), #主键
   [constraint uq] unique(seat), #唯一
   [constraint ck] check(gender='m' or gender='f'), #检查
   [constraint fk_stu] foreign key(majorid) references major(id) #外键
);

 

主键约束和唯一约束的区别

  保证唯一性 是否允许为空 一个表中可以有多少个 是否允许为空
主键 可以 不能 至多有1个 允许
唯一 可以 可以有多个 允许

 

 

 

 

外键:

  1. 要求在从表设置外键关系。
  2. 从表的外键列的类型和主表的关联列的类型要求一致或兼容。名称无要求。
  3. 主表的关联列必须是一个key(一般是主键或唯一)。
  4. 插入数据时,是先插入主表,再插入从表;删除数据时,先删除从表,再删除主表数据。

 

修改时添加约束

1,添加列级约束

#语法
alter table 表名 modify column 字段名 字段类型 新约束;

#添加非空约束
alter table users modify column name varchar(10) not null;

#添加默认约束
alter table users modify column age int default 18;

#添加主键约束
alter table users modify column id  int primary key;

#添加唯一约束
alter table users modify column password unique;

2,添加表级约束

#语法
alter table 表名 add [constraint 约束名]  约束类型(字段名)  [外键的引用]

#添加主键
alter table users add primary key(id);

#添加唯一约束
alter table users add unique(password);

#添加外键
alter table users add foreign key(id) references employee(id); 

 

修改表时删除约束

#一般语法
alter table 表名 modify column 字段名 数据类型;

#删除非空约束
alter table users modify column name varchar(10) null;

#删除默认约束
alter table users modify column age int;

#删除主键约束
alter table users drop primary key;

#删除唯一约束
alter table users drop index idx_password;

#删除外键
alter table users drop foreign key employeeId;

 

 posted on 2020-08-04 15:25  会飞的金鱼  阅读(114)  评论(0)    收藏  举报