JAVA Web学习笔记---约束

1.约束的概念

  • 约束是作用于表中列上的规则,用于限制加入表的数据
  • 约束是作用于表中列上的规则,用于限制加入表的数据

2.约束的分类
在这里插入图片描述

Tips: MySQL不支持检查约束
auto_ increment:当列是数字类型并且唯一约束

drop table if EXISTS emp;
 
create table emp(
	id int PRIMARY key auto_increment,-- 员工id,主键且自增长
	ename varchar(50) not null unique,-- 员工姓名,非空且唯一
	joindate date not null,
	salary double (7,2) not null,
	bonus double(7,2) default 0-- 奖金,没有则默认为0
);

insert  into emp(id,ename,joindate,salary,bonus) values (1,'张三','1999-11-11',8800,5000);

select * from emp;

 

在这里插入图片描述

 

外键约束

1.概念

外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性
在这里插入图片描述先创建主表,再创建外键的表
先添加主表信息,再添加外键表的信息
外键没有删除之前,主键的那个表不能删除

drop table if EXISTS emp;
drop table if EXISTS dept; 

create table dept(
	id int primary key auto_increment,
	dep_name varchar(20),
	addr varchar(20)
);

create table emp(
	id int primary key auto_increment,
	name varchar(20),
	age int,
	dep_id int,
	
	-- 添加外键 dep_id 关联dept表的主键id
	CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id)
	
)

-- 添加2个部门
insert into dept (dep_name, addr) values ('研发部','广州'), ('销售部','深圳');

-- 添加员工,dep_ id表示员工所在的部门]
INSERT INTO emp (NAME, age, dep_id) VALUES ('张三',20,1),('李四',20,1),('王五',20,1),('赵六',20,2),('孙七',22,2),('周八',18,2);

select * from emp;

select * from dept;

 

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

尝试删除表dept中的一条数据:

 

 


CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id)
报错了:原因是dept是表emp的dep_id这一列的主表,必须先删除外键dep_id才能删除主表内容。

 

 

点击表——>点击视图——>选中这两个表——>右键选择逆向表到模型

 

这个连线就是外键的意思。

删除外键

-- 删除外键
alter table emp drop FOREIGN key fk_emp_dept;

 

 

 

 

这样就是独立的两张表了。

建完表之后添加外键

 

-- 建完表之后添加外键
alter table emp add CONSTRAINT fk_emp_dept FOREIGN key(dep_id) REFERENCES dept(id);

 

posted @ 2022-11-01 16:40  一统天下。  阅读(59)  评论(0编辑  收藏  举报