MySQL多表查询
多表查询就是从多张表查询数据
- 若不加限制条件,直接使用select语句进行多表查询,将会产生笛卡尔积
- 笛卡尔积就是把所有集合元素的所有组合都列举出来,即A的元素个数乘上B的元素个数
-- 删除表
DROP TABLE IF EXISTS emp;
DROP TABLE IF EXISTS dept;
-- 部门表
CREATE TABLE dept
(
id INT PRIMARY KEY auto_increment, -- 部门编号,主键自增
dep_name VARCHAR(20) NOT NULL UNIQUE -- 部门名称
);
-- 员工表
create table emp
(
id int auto_increment comment '编号'
primary key,
name varchar(20) not null comment '姓名',
age int check ( age > 0 && age <= 120 ) comment '年龄',
gender char(1) not null default '男' comment '性别',
salary double not null default 5000 comment '薪资',
join_date date null comment '入职时间',
dep_id int null comment '所属部门编号',
constraint name
unique (name),
constraint fk_emp_dept
foreign key (dep_id) references dept (id)
);
-- ALTER TABLE emp DROP FOREIGN KEY fk_emp_dept;-- 建完表之后再添加外键
-- ALTER TABLE emp ADD CONSTRAINT fk_emp_dept FOREIGN KEY emp ( dep_id ) REFERENCES dept ( id );
INSERT INTO dept (dep_name)
VALUES ('市场部'),
('销售部'),
('清洁部'),
('研发部'),
('行政部'),
('人力资源部'),
('财务部');
INSERT INTO emp(name, age, gender, salary, join_date, dep_id)
VALUES ('张三丰', 20, '男', 8000, '2002-01-01', 1),
('风清扬', 21, '男', 8800,