数据库约束命令

数据库约束命令

码农世界 2024-06-05 前端 122 次浏览 0个评论

mysql中:

id中存在auto_increment

CREATE TABLE u_user(
 id int PRIMARY KEY auto_increment,
 u_name VARCHAR(10) NOT NULL UNIQUE,
 age int CHECK(age>0 && age<=120),
 u_status char(1) DEFAULT(1),
 gender char(1)
);
INSERT into u_user(u_name,age,u_status,gender)VALUES("李明",20,"1","男"),("王丽",18,"1","女");

外键约束:

-- 创建主表(班级表)
create table class(
	c_id int(4) primary key auto_increment,
	c_name varchar(10)
);
-- 班级表添加数据
insert into class values(NULL, 'xg1901'), (NULL, 'xg1902');
-- 创建从表(学生表)
create table stu_table(
	s_id int PRIMARY key auto_increment,
	s_name varchar(10) not null,
	s_sex char(1) check(s_sex = '男' or s_sex = '女'),
	s_age int(3) check(s_age > 0 and s_age < 100),
	c_id int(4),
	
	-- 创建时添加表级外键约束
	constraint fk_c_id  foreign key (c_id) references class(c_id)
);
-- 创建从表(学生表)
create table stu_table(
	s_id int PRIMARY key auto_increment,
	s_name varchar(10) not null,
	s_sex char(1) check(s_sex = '男' or s_sex = '女'),
	s_age int(3) check(s_age > 0 and s_age < 100),
	c_id int(4) 
	
	#创建时添加外键
	CONSTRAINT fk_c_id FOREIGN KEY(c_id) REFERENCES class(c_id)
);
-- 学生表中插入数据
insert into stu_table values (NULL, '香菱', '女', 18, 1);
insert into stu_table values (NULL, '行秋', '男', 18, 2);
insert into stu_table values (NULL, '胡桃', '女', 16, 2);
insert into stu_table values (NULL, '班尼特', '男', 18, 1);

不能删除外键:

删除外键语句:

ALTER TABLE stu_table drop foreign key fk_c_id;

删除或更新外键(级联操作)

使用cascade,当父表删除或更新对象记录时,首先检查该记录是否有对应外键,若有,则也删除或更新外键在子表中的记录。

set null:当父表删除或更新对象记录时,首先检查该记录是否有对应外键,若有,则设置子表中该外键的值为null。

父表/主表:含有被依赖的字段的表。

子表/从表:使用外键约束的表。

原始表:

使用语句:

#删除或更新外键
ALTER TABLE stu_table ADD CONSTRAINT fk_c_id FOREIGN KEY(c_id) REFERENCES class(c_id) ON UPDATE CASCADE ON DELETE CASCADE;

转载请注明来自码农世界,本文标题:《数据库约束命令》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,122人围观)参与讨论

还没有评论,来说两句吧...

Top