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基础之常见约束的主要内容,如果未能解决你的问题,请参考以下文章