MySQL基础之常见约束

Posted nuist__NJUPT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

以上是关于MySQL基础之常见约束的主要内容,如果未能解决你的问题,请参考以下文章

MySQL之字段约束与权限管理

MySQL之字段约束与权限管理

MySQL-约束

MySQL 基础教程-09 常见查询示例

MySQL基础之?表连接约束外键分组分页排序唯一索引

MySQL基础之 AUTO_INCREMENT