- 1.多表查询分类
- 1. 查询最高工资是是多少钱
## 2. 查询出最高工资的是谁.
## 3. 合并成一条. - 内连接操作步骤
# 1. 先确定从哪些表中查询数据
# 2. 给定查询的条件
# 3. 最后找出查询的字段即可; - ">查询所有员工信息,如果员工有部门,则查询部门名称,没有部门,则不显示部门名称;
- 创建部门表department
DROP TABLE IF EXISTS department;
CREATE TABLE department(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(32) NOT NULL
); - 插入一些数据
INSERT INTO department(name) VALUES
(“市场部”), (“研发部”), (“公关部”); - 创建员工表 employee
DROP TABLE IF EXISTS employee;
CREATE TABLE employee(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(32) NOT NULL,
gender CHAR(1) NOT NULL, — 性别
salary DOUBLE NOT NULL, — 工资
create_date DATE, — 入职日期
dept_id INT NOT NULL, — 外键字段
FOREIGN KEY(dept_id) REFERENCES department(id) — 添加外键, 关联department表中的主键
); - 添加一些数据
INSERT INTO employee(NAME,gender,salary,create_date,dept_id) VALUES(‘张无忌’,’男’,7200,’2013-02-24’,1);
INSERT INTO employee(NAME,gender,salary,create_date,dept_id) VALUES(‘张三丰’,’男’,3600,’2010-12-02’,2);
INSERT INTO employee(NAME,gender,salary,create_date,dept_id) VALUES(‘赵敏’,’女’,9000,’2008-08-08’,2);
INSERT INTO employee(NAME,gender,salary,create_date,dept_id) VALUES(‘周芷若’,’女’,5000,’2015-10-07’,3);
INSERT INTO employee(NAME,gender,salary,create_date,dept_id) VALUES(‘唐三’,’男’,4020,’2017-03-14’,1);
INSERT INTO employee(NAME,gender,salary,create_date,dept_id) VALUES(‘唐舞麟’,’男’,4530,’2016-04-14’,1);
INSERT INTO employee(NAME,gender,salary,create_date,dept_id) VALUES(‘唐舞桐’,’女’,5700,’2014-08-14’,3);
INSERT INTO employee(NAME,gender,salary,create_date,dept_id) VALUES(‘古月’,’女’,5100,’2016-03-12’,3);
INSERT INTO employee(NAME,gender,salary,create_date,dept_id) VALUES(‘伍六七’,’男’,6300,’2014-04-15’,2);
INSERT INTO employee(NAME,gender,salary,create_date,dept_id) VALUES(‘云韵’,’女’,7500,’2011-03-16’,1);
INSERT INTO employee(NAME,gender,salary,create_date,dept_id) VALUES(‘美杜莎’,’女’,2500,’2010-03-14’,2);
INSERT INTO employee(NAME,gender,salary,create_date,dept_id) VALUES(‘孙悟空’,’男’,9500,’2020-05-14’,2);
INSERT INTO employee(NAME,gender,salary,create_date,dept_id) VALUES(‘朱八戒’,’男’,5500,’2019-03-11’,1);
INSERT INTO employee(NAME,gender,salary,create_date,dept_id) VALUES(‘西门吹雪’,’男’,2500,’2013-03-14’,3);
INSERT INTO employee(NAME,gender,salary,create_date,dept_id) VALUES(‘天山童姥’,’女’,4300,’2011-05-14’,1); - 查看数据
SELECT * FROM employee;
1.多表查询分类
- 内连接查询
- 隐式内连接
- 显示内连接
- 外连接查询
- 左外连接查询
- 右外连接查询
- 子查询
- 查询中嵌套查询,称嵌套查询为子查询。
1. 查询最高工资是是多少钱
## 2. 查询出最高工资的是谁.
## 3. 合并成一条.
2. 内连接查询 - 隐式内连接
- 使用where条件消除无用数据
— 查询所有员工的信息和对应部门的信息;
— 查询员工的姓名,性别和部门名称3. 内连接查询 - 显示内连接
语法格式select 字段列表 from 表名1 [inner] join 表名2 on 查询条件;
内连接操作步骤
# 1. 先确定从哪些表中查询数据
# 2. 给定查询的条件
# 3. 最后找出查询的字段即可;例:
— 查询所有员工的信息和对应部门的信息;
— 查询员工的姓名,性别和部门名称4. 外连接查询 - 左外连接查询
语法格式# 1. 左外连接
# 语法: SELECT 字段列表 FROM 表1 LEFT [outer] JOIN 表2 on 条件;
# 查询结果是: 左边的所有数据 + 与连接表交集的部分;
— 例: 查询所有员工信息,如果员工有部门,则查询部门名称,没有部门,则不显示部门名称;
5. 外连接查询 - 右外连接查询
- 语法格式# 2. 右外连接
# 语法: SELECT 字段列表 FROM 表1 RIGHT [outer] JOIN 表2 on 条件;
# 查询结果是: 右边的所有数据 + 与连接表交集的部分;
查询所有员工信息,如果员工有部门,则查询部门名称,没有部门,则不显示部门名称;
6. 子查询 - 结果是单行单列
- 子查询可以作为条件,使用运算符去判断。 运算符: > >= < <= =
-
7. 子查询 - 结果是多行单列
子查询可以作为条件,使用运算符in来判断
-
8. 子查询 - 结果是多行多列
子查询可以作为一张虚拟表参与查询
- — 查询员工入职日期是2013—03-14日之后的员工信息和部门信息
9. 示例数据准备
SHOW TABLES;