MySql从零开始学习笔记(三)

MySql约束

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

分类:六大约束

  1.NOT NULL :非空,用于保证该字段的值不能为空。

  2.DEFAULT:默认值,用于保证该字段有默认值。

  3.PRIMARY KEY:主键,用于保证该字段的值具有唯一性并且非空。

  4.UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空。

  5.CHECK:检查约束(MySql不支持),检查字段的值是否为指定的值。

  6.FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值,在从表添加外键约束,用于引用主表中某些的值。

创建约束:

①建表时创建

列级

create table if not exists t_stuinfo(
    id int primary key,    #主键
    stuName varchar(20) not null,    #非空
    gender char(1) check(gender='男' or gender='女'),    #检查约束,MySql没有效果但不报错
    seat int unique,    #唯一约束
    age int default 18,    #默认(值)约束
    majorId int references major(id) #外键约束,MySql没有效果,但不报错
    );

表级

create table if not exists t_stuinfo(
    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='男' or gender='女'),    #检查约束,MySql不支持此约束,不报错但不生效
    constraint fk_stuinfo_major foreign key(majorId) references major(id)    #外键约束
    );

  

②修改表时创建

      1.添加非空约束

1 alter table 表名称 modify column 列名 列类型 not null;

  2.添加默认约束

1 alter table 表名称 modify column 列名 列类型 default 默认值;

  3.添加主键

    ①列级约束方式

1 alter table 表名称 modify column 列名 列类型 primary key;

    ②表级约束方式

1 alter table 表名称 add primary key(id);

  4.添加唯一

    ①列级约束

1 alter table 表名称 modify column 列名 列类型 unique;

    ②表级约束

1 alter table 表名称 add unique(列名称);

  5,添加外键(列级写法可行,但无效果)

1 alter table 表名称 add constraint fk_stuinfo_magor foreign key(magorId) references major(id);

 

删除约束:

      1.删除非空约束

1 alter table 表名称 modify column 列名 列类型 [null];

  2.删除默认约束

1 alter table 表名称 modify column 列名 列类型;

  3.删除主键

    ①

1 alter table 表名称 modify column id int;

    ②

1 alter table 表名称 drop primary key;

  4.删除唯一

1 alter table 表名称 drop index(索引名) 设置唯一时的名称;

  5.删除外键

1 alter table 表名称 drop foreign key(索引名) 设置外键时的名称;
posted @ 2020-09-07 22:36  搬砖的老王  阅读(142)  评论(0编辑  收藏  举报