Mysql-约束

image

image

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,'张三','1990-11-11',8800,5000);

-- 演示主键约束:非空且唯一
insert into emp(id,ename,joindate,salary,bonus)values(null,'张三','1990-11-11',8800,5000);

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

insert into emp(id,ename,joindate,salary,bonus)values(2,'李四','1990-11-11',8800,5000);

-- 演示非空约束:
insert into emp(id,ename,joindate,salary,bonus)values(3,null,'1990-11-11',8800,5000);

-- 演示唯一约束:
insert into emp(id,ename,joindate,salary,bonus)values(4,'李四','1990-11-11',8800,5000);

-- 演示默认值约束:
insert into emp(id,ename,joindate,salary)values(3,'王五','1990-11-11',8800);

insert into emp(id,ename,joindate,salary,bonus)values(4,'赵六','1990-11-11',8800,null);

-- 演示自动增长:auto_increment :当列是数字类型,并且他是唯一约束

insert into emp(ename,joindate,salary,bonus)values('赵六','1990-11-11',8800,null);
insert into emp(id,ename,joindate,salary,bonus)values(null,'赵六3','1990-11-11',8800,null);

SELECT * from emp;

还可以通过 alter table 表名 alter 列名 drop 约束 去删除约束

外键约束

image

image

--删除表
drop table if EXISTS dept;
drop table if EXISTS emp;

-- 部门表
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('研发部','广州'),('销售部','深圳');

-- 添加员工,dept_id 表示员工所在部门
insert into emp(name,age,dep_id)VALUES
('张三',20,1),
('李四',20,1),
('王五',20,1),	
('赵六',20,2),	
('孙七',22,2),	
('周八',18,2);


SELECT * from dept
	
SELECT * from emp

-- 删除外键
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-22 22:53  NiceTwocu  阅读(17)  评论(0编辑  收藏  举报