mysql 优化
导入数据库: mysql -u root -p -t < employees.sql
字段 | 类型 | 长度 | 备注 |
---|---|---|---|
dept_no | char | 4 | 部门编号 |
dept_name | varchar | 40 | 部门名称 |
字段 | 类型 | 长度 | 备注 |
---|---|---|---|
emp_no | int | 11 | 主键-编号 |
birth_date | date | 0 | 员工生日 |
first_name | varchar | 14 | 名字 |
last_name | varchar | 16 | 姓名 |
gender | enum | 0 | 性别 |
hire_date | date | 0 | 入职时间 |
字段 | 类型 | 长度 | 备注 |
---|---|---|---|
emp_no | int | 11 | 员工表-employees.emp_no |
salary | int | 11 | 工资 |
from_date | date | 0 | 开始时间 |
to_date | date | 0 | 结束时间 |
Tip:9999-01-01的意思就是仍在职
字段 | 类型 | 长度 | 备注 |
---|---|---|---|
emp_no | int | 11 | 员工表-employees.emp_no |
title | varchar | 50 | 职称标题 |
from_date | date | 0 | 开始时间(开始担任职称) |
to_date | date | 0 | 结束时间(结束担任职称) |
字段 | 类型 | 长度 | 备注 |
---|---|---|---|
dept_no | char | 4 | 部门编号-departments.dept_no |
emp_no | int | 11 | 人员表-employees.emp_no |
from_date | date | 0 | 开始时间(进入该部门时间) |
to_date | date | 0 | 结束时间(离开该部门时间) |
字段 | 类型 | 长度 | 备注 |
---|---|---|---|
emp_no | char | 4 | 人员表-departments.emp_no |
dept_no | int | 11 | 部门编号-employees.dept_no |
from_date | date | 0 | 开始时间(进入该部门时间) |
to_date | date | 0 | 结束时间(离开该部门时间) |
-
列表查询 员工名字、所属部门、职称、性别、入职时间
-
求每个部门中薪资最高的员工
-
统计各部门曾经拥有的员工数量
-
统计每个月每个部门总的支出
-
每个月每个部门平均薪资
-
按工资降序排序, 若工资相同, 按入职日期升序排序.
-
求每个部门的平均薪水, 只显示平均薪水大于5000的
-
求每个部门的平均薪水, 只显示平均薪水大于5000的,部门id为空的除外
-
查询每个工种的平均薪水, 只显示平均薪水大于5000的
-
求每年入职的人数, 年份按照降序排序
-
求每个部门薪水的最大值, 降序排序, 取前三名
-
求人数最多的那个部门的部门名称
-
笛卡尔积(多表查询没写链接条件)
-
查找last_name以K开头的雇员信息
-
查找名字以字母K开头,以i结尾,并且第三个字母为o的雇员名字(First_name)、职位和所在部门号
-
查找哪些雇员的职位名不以Se开头
-
查询出employees表中的最低工资的员工信息
-
计算出每个部门的平均工资、最高工资和最低工资
-
查询薪水发放时间在1986-06-26 ~ 1987-06-25薪水高于46145号雇员并且工种与他相同的雇员情况
-
查询出在薪水发放时间在1986-06-26 ~ 1987-06-25的员工信息
-
超过经理收入的员工
-
视图是存储在数据库服务端的一张虚拟的表,视图只有结构,没有数据所有的数据都是存储在表
-
视图如何创建
-
索引如何创建
功能实现
- 员工列表 筛选条件 离职/在职 ���排序� 生日/入职时间
- 分页功能
- 部门列表
- 员工详情 员工基本信息 所属部门及部门领导、职称及职称变化、工资发放记录
concat concat(e.last_name,' ',e.first_name)
group_concat group_concat(dep.dept_name)
str_to_date('1986','%Y-%m-%d')
NOW()
YEAR
MONTH
WEEK
DAY
Mysql-数据查询 Tip: 表的结构不一样