Mysql 常见约束

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

分类:六大约束

1.not null 非空,保证该字段的只不能为空

2.default 默认,用于保证该字段有默认值

3.primary key 主键,用于保证该字段的值唯一,且非空

4.unique 唯一,用于保证该字段的值唯一,但可以为空

5.check 检查约束(mysql中不支持)

6.foreign key 外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值

添加的时机

1.创建表时

2.修改表时

 

约束的添加分类:

列级约束

六大约束语法均可,但外键约束没有效果

表级约束

除了非空和默认,其他的都支持

 

一、创建表时添加约束

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
        
) 

直接在字段名和类型名追加约束类型即可,check和外键不支持

2.添加表级约束

create table 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....)
        constraint fk_stufnfo_major foreign key(majorId) references major(id)#外键
        
) 

语法:在各个字段的最小码

【constraint 约束名】 约束类型(字段名)【】内容可以省略

 

主键和唯一键的比较

 保证唯一性是否允许为空一个表可以有多少个是否允许组合
主键可以不可以至多有一个可以,但不推荐
唯一可以可以可以有多个可以,但不推荐

外键的要求:

1.要求从表设置外键关系

2.从表的外键列的类型和主表的关联列的类型要求一致,名称无要求

3.主表的关联列必须是一个键(主键或唯一键)

4.插入数据时,先插入主表,再插入从表,删除数据时,先删除从表,再删除主表

 

二、修改表时添加约束

1.添加列级约束

alter table 表名 modify column 列名 类型 约束名

2.添加表级别约束

alter table 表名 add unique(列名)

三、修改表时删除约束

alter table 表名 modify column 列名 类型

或者

alter table 表名 drop 约束名

删除唯一

alter table 表名 drop index 列名

删除外键

alter table 表名 drop foreign key 外键名

删除主键

alter table 表名 drop primary key

注意 删除主键外键唯一只能用 drop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值