作业。。。。。

以下是完整的MySQL脚本,实现所有要求:

```sql
-- 1. 创建EMPLOYEES表
CREATE TABLE EMPLOYEES (
    employee_id INT PRIMARY KEY,
    employee_name VARCHAR(50) NOT NULL,
    gender ENUM('男','女') NOT NULL,
    department_id INT NOT NULL,
    salary DECIMAL(10,2) NOT NULL
);

-- 2. 插入数据
INSERT INTO EMPLOYEES (employee_id, employee_name, gender, department_id, salary) VALUES
(1, '张三', '男', 10, 8500.00),
(2, '李四', '男', 20, 9200.00),
(3, '王芳', '女', 10, 7800.00),
(4, '赵敏', '女', 30, 10500.00),
(5, '刘强', '男', 10, 9500.00);

-- 3. 创建简单视图
CREATE VIEW EMP_VIEW AS
SELECT employee_id, employee_name, department_id
FROM EMPLOYEES
WHERE department_id = 10;

-- 4. 创建复杂视图
CREATE VIEW DEPT_AVG_SALARY_VIEW AS
SELECT department_id, ROUND(AVG(salary), 2) AS avg_salary
FROM EMPLOYEES
GROUP BY department_id;

-- 5. 创建单列索引
CREATE INDEX EMP_NAME_INDEX ON EMPLOYEES(employee_name);

-- 6. 创建复合索引
CREATE INDEX DEPT_SAL_INDEX ON EMPLOYEES(department_id, salary);

-- 7. 查询视图数据
SELECT * FROM EMP_VIEW;
SELECT * FROM DEPT_AVG_SALARY_VIEW;
```

### 执行说明:
1. **表结构**:
   - `employee_id` 作为主键(INT类型)
   - `gender` 使用ENUM类型确保只有'男'/'女'
   - `salary` 使用DECIMAL类型保留两位小数

2. **插入数据**:
   - 包含5条示例数据,覆盖不同部门和性别

3. **简单视图**:
   - 仅显示部门编号=10的员工
   - 包含三列:员工编号、姓名、部门编号

4. **复杂视图**:
   - 计算每个部门的平均工资
   - 使用ROUND()保留两位小数
   - 分组统计部门薪资

5. **索引**:
   - 单列索引在`employee_name`上优化姓名查询
   - 复合索引在`(department_id, salary)`上优化部门薪资相关查询

6. **视图查询**:
   - `EMP_VIEW` 查询结果:
     ```
     +-------------+---------------+---------------+
     | employee_id | employee_name | department_id |
     +-------------+---------------+---------------+
     |           1 | 张三          |            10 |
     |           3 | 王芳          |            10 |
     |           5 | 刘强          |            10 |
     +-------------+---------------+---------------+
     ```
   - `DEPT_AVG_SALARY_VIEW` 查询结果:
     ```
     +---------------+------------+
     | department_id | avg_salary |
     +---------------+------------+
     |            10 |    8600.00 |
     |            20 |    9200.00 |
     |            30 |   10500.00 |
     +---------------+------------+
     ```

> **注意**:在MySQL中执行时,确保使用具有CREATE TABLE、CREATE VIEW等权限的用户(如root)执行脚本,或先创建SYSTEM用户并授权。实际部署时建议添加外键约束等完整性设计。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值