八、MySql基础 -- 常见的约束

233 阅读2分钟

常见约束

含义:一种限制,限制表中的数据,保证表中的数据的准确性和可靠性

create table 表名(
        字段名 字段类型 约束
        );

分类:六大约束

  1. NOT NULL -- 非空约束,保证该字段的值不可为空
  2. DEFAULT -- 默认约束,保证该字段存在默认值
  3. PRIMARY KEY -- 主键约束,保证该字段的值具有唯一性,并且非空
  4. UNIQUE -- 唯一约束,保证该字段的值具有唯一性,但可为空
  5. CHECK -- 检查约束,【MYSQL中不支持】
  6. FOREIGN KEY -- 外键约束,限制两个表的关系,保证该字段的值来自主表的关联列的值,从表添加外键约束,用于引用主表中某列的值
    注:约束添加在创建表和修改表时

约束添加时的分类:

  • 列级约束 六大约束语法上支持,但外键约束无效果

  • 表级约束 除了非空、默认、其他都支持

      create table 表名(
              字段名 字段类型 列级约束,
              表级约束
              );
          
    

创建表时添加约束

1、添加列级约束

use 库名
create table 表名(
        列名 int primary key not null,
        col2 varchar(20) not null,
        sex char(1) check(sex='男' or sex='女')
        )
        

2、添加表级约束

constraint 约束名】(可省略内容) 约束类型(列名)

use 库名
create table 表名(
        列名 int,
        col2 varchar(20),
        sex char(1),
        constraint pk primary key(列名),
        constraint uq unique(列名),
        constraint fk foreign key(列名) references z主表            
        )
        

通用写法

create table 表名(
            列级约束
            表级约束:外键
            );
            

primary key 和 unique:

  • 两者都可以限制唯一性
  • 主键不可为空,唯一可以为空
  • 一个表最多有一个主键,唯一性约束有多个
  • 两者都允许组合

foreign key

  • 在从表设置外键关系
  • 从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求
  • 主表中的关联列必须为一个key(一般为主键或者唯一键)
  • 插入数据时,先插入主表的数据后再插入从表,删除反之

二、修改表时添加约束

  1. 添加非空约束 alter table 表名 modify column 列名 int NOT NULL;

  2. 添加默认约束 alter table 表名 modify column 列名 int default 18;

  3. 添加主键约束

  • alter table 表名 modify column 列名 int primary key;
  • alter table 表名 add primary key(列名);
  1. 添加唯一键
  • alter table 表名 modify column 列名 int UNIQUE;
  • alter table 表名 add UNIQUE(列名);
  1. 添加外键 alter table 表名 add foreign key(列名) reference 主表(列名);

三、修改表时删除约束

  • alter table 表名 modify column 列名 类型;
  • alter table 表名 drop primary key;
  1. 删除唯一键 alter table 表名 drop index 列名;