常见约束

#常见约束
/*
六大约束
1 not null:非空约束 用于保证该字段不为空
2 default :默认 用于保证该字段有默认值
3 primary key 主键 用于保证该字段的唯一性,并且非空
4 UNIQUE :唯一 保证该字段的唯一性 可以为空
5 cheak :检查约束(mysql不支持)
6 FOREIGN key: 限制两个表之间的关系

添加约束的时机
1 创建表时
2 修改表时

约束的添加分类
		列级约束:
					六大约束语法上都支持
		表级约束
					除了非空 默认  其他都支持

*/

use students

CREATE table stuinfo (
id int PRIMARY key ,
studentName VARCHAR(20) not null,
gender char(1) CHECK(gender=‘男’ or gender=‘女’),
seat int UNIQUE,
age int DEFAULT 18,
majorId int REFERENCES major(id) #外键
)
desc stuinfo
#查看表中的索引
show index from stuinfo
CREATE table major(
id int PRIMARY key,
majorName VARCHAR(20)

)

drop table if EXISTS stuinfo

CREATE table stuinfo (
id int,
stuname VARCHAR(20),
gender enum(‘man’,‘woman’),
seat int,
age int ,
majorid int,

	#表级约束
	CONSTRAINT pk PRIMARY key(id) ,#主键
	CONSTRAINT uk UNIQUE(seat), #唯一键
	CONSTRAINT ck CHECK(gender in ('man','woman')),
	CONSTRAINT fk FOREIGN key  (majorid)  REFERENCES major(id)

)

CREATE table stuinfo (
id int,
stuname VARCHAR(20),
gender VARCHAR(5),
seat int,
age int ,
majorid int,

	#表级约束
	CONSTRAINT pk PRIMARY key(id) ,#主键
	CONSTRAINT uk UNIQUE(seat), #唯一键
	CONSTRAINT ck CHECK(gender in ('man','woman')),
	CONSTRAINT fk FOREIGN key  (majorid)  REFERENCES major(id)

)

desc stuinfo

INSERT into stuinfo values(1,‘ljj’,‘man’,12,21,164)

INSERT into major VALUES(164,‘飞逸’)

INSERT into stuinfo values(2,‘ljj’,‘m’,13,21,164)

#通用写法
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)
)

CREATE table if not EXISTS stuinfo(
id int ,
stuname VARCHAR(20),
sex char(1),
age int,
seat int,
majorid int
)

#添加约束
#1 添加非空约束
alter table stuinfo MODIFY COLUMN stuname VARCHAR(20) not null

#添加默认值
alter table stuinfo MODIFY COLUMN age int DEFAULT 18

#添加主键
##表级约束
alter table stuinfo add primary key(id)
##列级约束
alter table stuinfo MODIFY COLUMN id int PRIMARY key

#唯一约束
##列级约束
alter table stuinfo MODIFY COLUMN seat int UNIQUE
##表级约束
alter table stuinfo add UNIQUE(seat)

##5 添加外键
alter table stuinfo add CONSTRAINT fk_stuinfo_major /可以省略/ FOREIGN key(majorid) REFERENCES major(id)

#修改表删除约束

desc stuinfo

#1 删除非空约束
alter table stuinfo MODIFY COLUMN stuname VARCHAR(20) null
#2删除默认约束
alter table stuinfo MODIFY COLUMN age int
#3 删除主键
alter table stuinfo MODIFY COLUMN id int ##好像不行 mysql 8.0

alter table stuinfo drop PRIMARY key

#4删除唯一键
alter table stuinfo drop index seat

show INDEX from stuinfo

#5 删除外键约束
alter table stuinfo drop FOREIGN key fk_stuinfo_major

desc stuinfo

show index from stuinfo

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值