MySQLMySQL常见约束

本文详细介绍了数据库中的约束类型,包括非空、默认、主键、唯一、外键及检查约束,阐述了它们的作用、区别及添加时机。强调了主键与唯一约束的异同,并提供了创建和修改表时添加约束的SQL语法示例,同时讨论了外键在表间关系中的重要性。
摘要由CSDN通过智能技术生成

常见约束

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

not null:非空,用于保证该字段值不能为空,比如姓名,学号等

default:默认,用于保证该字段有默认值,比如性别

primary key:主键,用于保证该字段的值具有唯一性,并且非空,比如学号,员工编号

unique:唯一,用于保证该字段的值具有唯一性,可以为空.比如座位号

check:检查约束,[mysql中不支持].比如年龄,性别

foreign key:外键,用于限制两张表的关系,用于保证该字段值必须来自于主表关联列的值
	在从表添加外键约束,用于引用主表中某列的值,
    比如学生表的专业编号,员工表的部门编号,员工表的工种编号

添加约束的时机:

1.创建表时
2.修改表时

约束的添加分类:

列级约束:
	六大约束语法上都支持,但外键约束没有效果
表级约束:
	除了非空,默认,其他的都支持

主键和唯一的大对比:

		 保证唯一性	是否允许为空		一个表中可以有多少个  	是否允许组合
主键	√			    ×				      最多1个					    √,但不推荐
唯一	√			    √(只能有一个)  可以有多个				     √,但不推荐

外键:

1.要求在从表设置外键关系
2.从表外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求
3.主表的关联列必须是一个key(一般是主键,唯一)
4.插入数据时,先插入主表,再插入从表,删除数据时,先删除从表,再删除主表

一.创建表时添加约束

1.添加列级约束

语法:
直接在字段名和类型后面追加 约束类型即可
只支持:
默认,非空,主键,唯一

create database students;
use students;
drop table if exists stuinfo;
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 references major(id) # 外键
);
drop table if exists major;
create table major(
	id int primary key,
	majorName varchar(20)
);
desc stuinfo;
show index from stuinfo; # 查看stuinfo表中所有的索引,包括主键

2.添加表级约束

语法:

在各个字段的最下面
[constraint 约束名] 约束类型(字段名)
12
use students;
drop table if exists stuinfo;
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='男' or gender='女'), # 检查约束 在mysql没有用
	constraint fk_stuinfo_major foreign key(majorid) references major(id) # 外键
);
show index from stuinfo;

通用的写法:

drop table if exists stuinfo;
create table if not exists stuinfo(
	id int primary key,
	stuname varchar(20) not null,
	sex char(1),
	age int default 18,
	seat int unique,
	majorid int,
	constraint fk_stuinfo_major foreign key(majorid) references major(id)
);

二.修改表时添加约束

1.添加列级约束
alter table 表名 modify column 字段名 字段类型 新约束;
2.添加表级约束
alter table 表名 add [constraint 约束名] 约束类型(字段名) [外键引用];

1.添加非空约束

drop table if exists stuinfo;
create table if not exists stuinfo(
	id int,
	stuname varchar(20),
	gender char(1),
	age int default 18,
	seat int,
	majorid int
);
desc stuinfo;

在这里插入图片描述
在这里插入图片描述

2.删除约束

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值