数据库约束命令

发布于:2024-06-02 ⋅ 阅读:(73) ⋅ 点赞:(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;


网站公告

今日签到

点亮在社区的每一天
去签到