习题:
1. 职工科研管理系统情况如下:
部门:包括部门号,部门名,办公室。每个部门有多名职工。 职工:包括职工号,姓名,性别,年龄,职称,专业,简历。 简历:包括开始时间,终止时间,工作单位,担任职务。
项目:包括项目编号,项目名称,项目经费,项目来源,负责人。 每名职工可参加多个项目,每个项目可多名职工参加。要求:
? 画出表达此问题的实体关联图
2. 已知:表S表示学生,表SC表示选课。SQL语句如下: SELECT S. 姓名
FROM S. SC X, SC Y
WHERE S.学号=X.学号AND X.课程号='C2' AND S.学号=Y.学号 AND Y.课程号='C3'
? 解释此组语句表达的查询含义。 3. 对于教学数据库的三个基本表
S(SID,SNAME,AGE,SEX) SC(SID,CID,GRADE) C(CID,CNAME,TEACHER)
试用SQL的查询语句表达下列查询:
? 检索LIU老师所授课程的课程号和课程名。 ? 检索年龄大于23岁的男学生的学号和姓名。 ? 检索学号为S3学生所学课程的课程名与任课教师名。 ? 检索至少选修LIU老师所授课程中一门课程的女学生姓名。 ? 检索WANG同学不学的课程的课程号。 ? 检索至少选修两门课程的学生学号。 ? 检索全部学生都选修的课程的课程号与课程名。 ? 检索选修课程包含LIU老师所授课程的学生学号。 ? 在表C中统计开设课程的教师人数。 ? 求选修C4课程的女学生的平均年龄。 ? 求LIU老师所授课程的每门课程的平均成绩。 ? 统计每个学生选修课程的门数(超过5门的学生才统计)。要求输出学生学号和选修
门数,查询结果按门数降序排列,若门数相同,按学号升序排列。 ? 检索学号比WANG同学大,而年龄比他小的学生姓名。 ? Select a.sname from s a , s b ? Where b.sname=”wang” ? And b.sid>a.sid ? And b.age 求年龄大于所有女同学年龄的男学生姓名和年龄。 往关系C中插一个课程元组('C8','VC++','BAO')。 检索所授每门课程平均成绩均大于80分的教师姓名,并把检索到的值送往另一个已存在的表FACULTY(TNAME)。 ? 在SC中删除尚无成绩的选课元组。 ? 把选修LIU老师课程的女同学选课元组全部删去。 ? 把MATHS课不及格的成绩全改为60分。 ? 把低于所有课程总平均成绩的女同学成绩提高5%。 4、设数据库中有三个关系: 职工表EMP(EID,ENAME,AGE,SEX,ECITY), 其属性分别表示职工工号、姓名、年龄、性别和籍贯。 工作表WORKS(EID,CID,SALARY), 其属性分别表示职工工号、工作的公司编号和工资。 公司表COMP(CID,CNAME,CITY), 其属性分别表示公司编号、公司名称和公司所在城市。 试用SQL语句写出下列操作: ? 用CREATE TABLE语句创建上述三个表。 ? 检索超过50岁的男职工的工号和姓名。 ? 假设每个职工只能在一个公司工作,检索工资超过1000元的男性职工工号和姓名。 ? 假设每个职工可在多个公司工作,检索在编号为C4和C8公司兼职的职工工号和姓名。 ? 检索在“联华公司”工作、工资超过1000元的男性职工的工号和姓名。 ? 假设每个职工可在多个公司工作,检索每个职工的兼职公司数目和工资总数. ? 显示(EID,NUM,SUM_SALARY),分别表示工号、公司数目和工资总数。 ? 工号为E6的职工在多个公司工作,试检索至少在E6职工兼职的所有公司工作的职工工号。 ? 检索联华公司中低于本公司平均工资的职工工号和姓名。 ? 在每一公司中为50岁以上职工加薪100元(若职工为多个公司工作,可重复加) ? ? ?