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);