常用约束

用于限制表中的数据,为了保证表中数据的准确和可靠性

分类:
not null:非空,保证字段的值不为空。如姓名
default:默认约束,用于保证该字段有默认值。如性别
primary key:主键,保证该字段的值具有唯一性,并且非空。如学号
unique:唯一,用于保证该字段的值具有唯一性,但可以为空。如座位号
check:检查【mysql中不支持】。如年龄,性别
foreign key:外键,用于限制两个表的关系,用于保证该字段的值必须来自主表关联列的值。在从表添加外键约束,用于引用主表中某列的值

添加约束的时机:

  1. 创建表时
  2. 修改表时

约束添加的分类:

  1. 列级约束:
    六大约束语法上都支持,但外键约束没有效果
  2. 表级约束:
    除了非空、默认,其他都支持

主键和唯一键的比较:

  1. 主键不允许为空,唯一键可以为空
  2. 一个表中只能有一个主键,而唯一键可以有多个
  3. 都具有唯一性
  4. 允许组合,但不推荐

外键的特点:

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

一、创建表时添加约束

1、添加列级约束

create table stuinfo(
    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 foreign key references major(id),外键
);

create tbale major(
    id int primary key,
    majorName varchar(20)
);

show index from 表名查看表中所有的索引,包括主键,外键、唯一

2.添加表级约束

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

create table stuinfo(
    id int,
    stuname varchar(20),
    gender char(1),
    seat int,
    age int,
    majorid int,
    
    constraint pk prmary key(id),主键
    constraint uq unique(seat),唯一键
    constraint ck check(gender=‘男’ or gender =‘女’),检查
    constraint fk stuinfo_major foreign key(majorid) references major(id)外键
)

二、修改表时添加约束

语法:

  1. 添加列级约束
    alter table 表名 modify column 字段名 字段类型 新约束;
  2. 添加表级约束
    alter table 表名 add 约束类型(字段名) 外键的引用;

1.添加非空约束
alter table stuinfo modify column stuname varchar(20) not null;
2. 添加默认约束
alter table stuinfo modify column age int default 18;
3. 添加主键

  • 列级约束
    alter table stuinfo modify column id int primary key;
  • 表级约束
    alter table stuinfo add primary keuy(id);
  1. 添加唯一
  • 列级约束
    alter table stuinfo modify column seat int unique;
  • 表级约束
    alter table stuinfo add unique(seat);
  1. 添加外键
    alter table stuinfo add [constraint fk_stuinfo_major] forengin key(majorid) references major(id);

三、修改表时删除约束

  1. 删除非空约束
    alter table stuinfo modify stuname varchar(20) null;
  2. 删除默认约束
    alter table stuinfo modify age int;
  3. 删除主键
    alter table stuinfo drop primary key;
  4. 删除唯一
    alter table stuinfo drop index seat;
  5. 删除外键
    alter table stuinfo drop foreign key 外键名
原文地址:https://www.cnblogs.com/ylcc-zyq/p/13139338.html