约束
-- 员工表
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);
-- 演示主键约束: 非空且唯一
INSERT into emp(id,ename,joindate,salary,bonus) VALUES(null,'张三','1999-11-11',8800,5000);
INSERT into emp(id,ename,joindate,salary,bonus) VALUES(1,'张三','1999-11-11',8800,5000);
INSERT into emp(id,ename,joindate,salary,bonus) VALUES(2,'李四','1999-11-11',8800,5000);
-- 演示非空约束
INSERT into emp(id,ename,joindate,salary,bonus) VALUES(3,null,'1999-11-11',8800,5000);
-- 演示唯一约束
INSERT into emp(id,ename,joindate,salary,bonus) VALUES(3,'李四','1999-11-11',8800,5000);
-- 默认约束
INSERT into emp(id,ename,joindate,salary) VALUES(3,'王五','1999-11-11',8800);
INSERT into emp(id,ename,joindate,salary,bonus) VALUES(4,'赵六','1999-11-11',8800,null);
-- 演示自动增长: auto_increment: 当列是数字类型并且唯一约束
INSERT into emp(ename,joindate,salary,bonus) VALUES('赵六','1999-11-11',8800,null);
INSERT into emp(id,ename,joindate,salary,bonus) VALUES(null,'赵六2','1999-11-11',8800,null);
INSERT into emp(id,ename,joindate,salary,bonus) VALUES(null,'赵六3','1999-11-11',8800,null);
SELECT * FROM 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
('研发部','广州'),('销售部', '深圳');
-- 添加员工,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;
-- 删除外键
ALTER TABLE emp drop FOREIGN key fk_emp_dept
-- 建完表后 , 添加外键
ALTER TABLE emp add CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id);