一、SQL 操作题
1、现有关系数据库如下:
部门(部门编号,部门名称,电话)
员工(员工编号,姓名,性别,部门编号,职务)
项目(项目编号,项目名称,预算)
施工(员工编号,项目编号,工时)
用 SQL 语言实现下列小题:
(1)查询每个员工的姓名,并按职称降序排列;
(2)查询总工时在 480 小时以上(含 480 小时)的员工编号和总工时;
(3)检索职称为“高级工程师”,同时至少参加了一预算在 100 万以上的项目的员
工的姓名和部门名称;
(4)定义一个工作量视图,包含的属性有员工编号、姓名、项目名称和工时。
(5)对项目名称为“高教新区项目”的施工工时增加 50 小时;
(1)SELECT 姓名 FROM 员工 ORDER BY 职称 DESC
(2)SELECT 员工编号,SUM(工时) FROM 施工
GROUP BY 员工编号 HAVING SUM(工时)>=480
(3) SELECT 姓名,部门名称
FROM 员工,部门,项目,施工
WHERE 部门.部门编号=员工.部门编号 AND 员工.员工编号=施工.员工
编号
AND 施工.项目编号=项目.项目编号 AND 职称=‘高级工程师’ AND 预
算>1000000
(4) CREATE VIEW 工作量( 员工编号,姓名,项目名称,工时)
AS SELECT 员工.员工编号,姓名,项目名称,工时
FROM 员工,项目,施工
WHERE 员工.员工编号=施工.员工编号 AND 施工.项目编号=项目
项目编号
(5)UPDATE 施工
SET 工时=工时+50
WHERE 项目编号 IN
(SELECT 项目编号
FROM 项目
WHERE 项目名称=‘高教新区项目’)
2、学生选课数据库有三个表即学生表 S、课程表 C 和学生选课表 SC,它们的
结构如下所示,请根据所给的每种功能写出相应的查询语句。(每小题 5 分,
共 20 分)
S(S# ,SN ,SEX ,AGE ,DEPT)
C(C# ,CN)
SC(S# ,C# ,GRADE)
其中:S#为学号,SN 为姓名,SEX 为性别,AGE 为年龄,DEPT 为系
别,C#为课程号,CN 为课程名,GRADE 为成绩。
(1)统计学生选课数据库中学生的总人数。
(2)查询学生姓名及其所选修课程的课程号和成绩。