MySQL基础之常见约束

MySQL基础之常见约束

常见约束,其实就是一种限制,为了保证表中数据的准确性和可靠性。

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,
    varchar(20) not null,
    gender char(1) check(gender = '男' or gender = '女'),
    seat int unique,
    age int default 17);

2.添加表级别约束
constraint 约束名 约束类型(字段名)
其中constraint 约束名可以省略

 drop table if exists stuinfo ;
 create table stuinfo(
    id int ,
    stuName int ,
    gender char(1) ,
    seat int ,
    majorId int ,
    primary key(id),
    foreign key(majorId) references major(id));

通用写法:

 drop table if exists stuinfo ;
 create table stuinfo(
    id int primary key,
    stuName varchar(20) not null,
    gender char(1),
    seat int unique,
    age int default 17,
    majorId int,
    constraint pk_stuinfo_major foreign key(majorId) references major(id));

primary key 和 unique对比分析
主键唯一且非空,unique唯一但是可以为空,一个表中至多有一个主键,但是可以有多个unique。

外键(foreign key):
1-要求在从表设置外键信息
2-从表的外键列的类型和主表关联列的类型要保持一致且兼容
3-主表中被引用的一般是主键
4-插入数据时候,先插入主表,删除数据时候,先删除从表

二、修改表的时候

1-修改表时添加约束
语法:
(1)添加列级约束
alter table 表名 modify column 字段名 字段类型 新约束;

(2)添加列级约束
alter table 表名 add 约束类型 字段名 ;

添加非空约束:

alter table stuinfo 
modify column stuName varchar(20) not null ;

添加默认约束:

alter table stuinfo 
modify column age int default 19;

添加主键约束:

alter table stuinfo
 modify column id int primary key ;

添加唯一约束:

alter table stuinfo 
modify column seat int unique;

添加外键约束:

alter table stuinfo 
add foreign key(majorId) references major(id) ;

2-修改表时删除约束

删除非空约束:

alter table stuinfo 
modify column stuName varchar(20)  null ;

删除默认约束:

alter table stuinfo 
modify column age int;

删除主键约束:

alter table stuinfo 
drop primary key;

删除唯一约束:

alter table stuinfo 
drop index seat;

删除外键约束:

alter table stuinfo 
drop foreign key pk_stuinfo_major;

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nuist__NJUPT

给个鼓励吧,谢谢你

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值