设某工厂数据库中有两个基本表: 车间基本表:DEPT(DNO,DNAME,MGR_ENO),其属性分别表示车间编号、车间名 和车间主任的职工号。 职工基本表:ERP(ENO,ENAME,AGE,SEX,SALARY,DNO),其属性分别表示职工号、 姓名、年龄、性别、工资和所在车间的编号。 根据上述关系,完成下面的操作: (1)写出创建基本表 ERP 的 SQL 语句,要求数据类型合理,职工姓名不能为空, 工资要求保留 2 位小数,创建合理的主码和外码; (2)建立一个有关女车间主任的职工号和姓名的视图,视图名为 FEMale_MGR; (3)在基本表 ERP 中,将“李艳”的年龄改为 25 岁。查询“01”号车间的所有职工信息,结果按照年龄降序,年龄同按职工号升序 排列; (2)查询每个车间的车间名、主任职工号和人数; (3)查询平均工资在 5000 以上的车间的车间号、车间名和主任职工号
时间: 2024-03-14 17:45:24 浏览: 221
创建基本表 ERP 的 SQL 语句如下:
```
CREATE TABLE ERP (
ENO INT PRIMARY KEY,
ENAME VARCHAR(20) NOT NULL,
AGE INT,
SEX VARCHAR(10),
SALARY DECIMAL(10,2),
DNO INT,
FOREIGN KEY (DNO) REFERENCES DEPT(DNO)
);
```
建立有关女车间主任的职工号和姓名的视图 FEMale_MGR 的 SQL 语句如下:
```
CREATE VIEW FEMale_MGR AS
SELECT ENO, ENAME
FROM ERP e
JOIN DEPT d ON e.DNO = d.DNO
WHERE d.MGR_ENO = e.ENO AND e.SEX = '女';
```
将“李艳”的年龄改为 25 岁,并查询“01”号车间的所有职工信息,结果按照年龄降序,年龄同按职工号升序排列的 SQL 语句如下:
```
UPDATE ERP SET AGE = 25 WHERE ENAME = '李艳';
SELECT * FROM ERP WHERE DNO = '01' ORDER BY AGE DESC, ENO ASC;
```
查询每个车间的车间名、主任职工号和人数的 SQL 语句如下:
```
SELECT d.DNAME, d.MGR_ENO, COUNT(*) AS NUM
FROM ERP e
JOIN DEPT d ON e.DNO = d.DNO
GROUP BY d.DNAME, d.MGR_ENO;
```
查询平均工资在 5000 以上的车间的车间号、车间名和主任职工号的 SQL 语句如下:
```
SELECT d.DNO, d.DNAME, d.MGR_ENO
FROM ERP e
JOIN DEPT d ON e.DNO = d.DNO
GROUP BY d.DNO, d.DNAME, d.MGR_ENO
HAVING AVG(e.SALARY) > 5000;
```
阅读全文