5.9学习内容总结

发布时间 2023-05-09 11:36:46作者: 封织云

DROP TABLE IF EXISTS emp;

CREATE TABLE emp (
id INT PRIMARY KEY auto_increment, -- 员工,主键且自增长
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;

-- ==========演示主键约束:非空且唯一,主键一个表只有一个
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);-- 已有1,不能重复添加

INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES(2,'李四','1999-11-11',8800,5000);

INSERT INTO emp(id,ename,joindate,salary) VALUES(3,'王五','1999-11-11',8800);

SELECT * FROM emp;

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

INSERT INTO emp(ename,joindate,salary) VALUES('王五','1999-11-11',8800);

INSERT INTO emp(id,ename,joindate,salary) VALUES(NULL,'王五2','1999-11-11',8800);

===========================

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表的主键,外键名称一般以fk_开头,随便
-- 注意,有外键,先创建主表,随后从表,添加数据同上
CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id)

);

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

-- 添加员工,
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中的某一项记录

-- 删除外键
ALTER TABLE emp DROP FOREIGN KEY fk_emp_dept;

-- 建完表后添加外键
ALTER TABLE emp add CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id);