v1.0 可编辑可修改 1.设有4个关系模式:
供应商关系:S(SNO,SNAME,CITY),属性依次是供应商号、供应商名称和所在城市 零件关系:P(PNO,PNAME,COLOR),属性依次是是产品号、品名和颜色 工程关系:J(JNO,JNAME,CITY),属性依次是是工程号、工程名和所在城市
供应关系:SPJ(SNO,PNO,JNO,QTY),属性依次是供应商号、产品号、工程号和数量 试用关系代数完成下列操作: (])J1工程零件的所有供应商号i (2)求供应J1工程P1零件的供应商号; (3)求供应J1工程红色零件的供应商号;
(4)求没有使用天津供应商生产的红色零件的工程号; (5)求S1供应商供应零件的所有工程号。 2.设有3个关系模式: 学生(学号,姓名,性别,专业) 课程(课程号,课程名称,学分) 成绩(学号,课程号,分数) 试用关系代数表达式完成下列操作:
(1)所有学生成绩获得满分(100分)的课程号、课程名称;
(2)检索至少有一门课程的分数达到95分以上的学生信息,包括学号、姓名和专业 (3)检索没有任何一门课程成绩在80分以下的学生的信息,包括学号、姓名和专业 (4)检索”英语”专业学生所学课程的信息,包括学号、姓名 、课程名称和分数; (5)检索“数据库原理“课程分数高于90分的所有学生的学号、姓名、专业和分数; (6)检索没有不及格分数的学生的信息,包括学号、姓名和专业; (7)检索“国际贸易”专业选修“数据库原理”课程的学号和姓名。 答案:
(1)所有学生成绩获得满分(100分)的课程号、课程名称; π课程号,课程名称(σ分数=100(成绩)|×| 课程)
(2)检索至少有一门课程的分数达到95分以上的学生信息,包括学号、姓名和专业 6
v1.0 可编辑可修改 π学号,姓名,专业(σ分数>=95(成绩)|×| 学生)
(3)检索没有任何一门课程成绩在80分以下的学生的信息,包括学号、姓名和专业 π学号,姓名,专业(学生)-π学号,姓名,专业(σ分数<80(成绩)|×| 学生) (4)检索”英语”专业学生所学课程的信息,包括学号、姓名 、课程名称和分数; π学号,姓名,课程名称,分数(课程|×| 成绩|×| σ专业=‘英语’(学生)) (5)检索“数据库原理“课程分数高于90分的所有学生的学号、姓名、专业和分数; π学号,姓名,专业,分数(σ课程名称=‘数据库原理’(课程)|×| σ分数>90( 成绩)|×|学生)
(6)检索没有不及格分数的学生的信息,包括学号、姓名和专业; π学号,姓名,专业(学生)-π学号,姓名,专业(σ分数<60(成绩)|×| 学生)
(7)检索“国际贸易”专业选修“数据库原理”课程的学号和姓名。(三表连接,投影) π学号,姓名,专业(σ课程名称=‘数据库原理’(课程)|×| 成绩|×| σ专业=‘国际贸易’(学生))
3、设有3个关系模式:
员工(职工姓名,街道,城市) 工作(职工姓名,公司名称,工资) 公司(公司名称,城市) 用关系代数表达式来表达下列问题: (1)列出泰斗公司所有员工的姓名;
(2)列出泰斗公司所有员工的姓名和居住的城市;
(3)列出泰斗公司所有年收入在10万元以上的员工姓名、居住的街道和城市 (4)列出所有居住地与工作的公司在同一城市的员工姓名; (5)列出不在泰斗公司的所有员工的姓名 答案:
(1)列出泰斗公司所有员工的姓名;
π职工姓名(σ公司名称=‘泰斗公司’(工作)) (2)列出泰斗公司所有员工的姓名和居住的城市; 7
v1.0 可编辑可修改 π职工姓名,城市(σ公司名称=‘泰斗公司’(员工|×|工作)
(3)列出泰斗公司所有年收入在10万元以上的员工姓名、居住的街道和城市
π职工姓名,街道,城市(σ公司名称=‘泰斗公司’AND 工资>100000(员工|×|工作) (4)列出所有居住地与工作的公司在同一城市的员工姓名; π职工姓名 (σ员工.城市=公司.城市(员工|×|工作|×|公司) (5)列出不在泰斗公司的所有员工的姓名
π职工姓名(员工)- π职工姓名(σ公司名称=‘泰斗公司’(员工|×|工作|))
习题三
一、单项选择题 1.SQL语言是
A、高级语言 B、宿主语言 C、汇编语言 D、非过程化语言 2.在SQL语言查询语句中,SELECT子句实现关系代数的 A、投影运算 B、选择运算 C、连接运算 D、交运算 3.在SQL语言查询语句中,WHERE子句实现关系代数的 A、投影运算 B、选择运算 C、连接运算 D、交运算 4.为在查询结果中去掉重复元组.应该使用保留字 A、UNIQUE B、UNION C、COUNT D、DISTINCT
5.当关系R和S做自然连接时,能够保留R中不满足连接条件元组的操作是 A、左外连接 B、右外连接 C、内部连接 D、全外连接 6.SQL语言中,更新表结构的的命令是 A、UPDATE TABLE B、MODIFY TABLE C、ALTER TABLE D、CHANGE TABLE 7.下列聚合函数中不忽略空值(NULL)的是
A、SUM(列名) B、MAX(列名) C、AVG(列名) D、COUNT(*)
8
v1.0 可编辑可修改 8.SQL语言中,下列涉及空值操作的短语,不正确的是(VFP全部正确, SQL SERVER中C错)
A、AGE IS NULL B、AGE IS NOT NULL C、AGE=NULL D、NOT (AGE IS NULL) 9.SQL语言中,删除一个表的命令是 A、CLEAR TABLE C、DROP TABLE
C、DELETE TABLE D、REMOVE TABLE
10.设有一个关系:DEPT(DNO,DNANE).如果要找出倒数第三个字母为W.并且至少包含4个字母的DNAME,则查询条件子句应写成WHERE DNANC LIKE 01”03”02”
务员姓名 FROM 业务员,订单,客户 WHERE 业务员.业务员编号=订单.业务员编号 AND 订单.客户编号=客户.客户编号 AND 客户.客户姓名=‘王明’
SELECT 业务员.业务员姓名 FROM 业务员 inner join 订单 inner join 客户 on 业务员.业务员编号=订单.业务员编号 on 订单.客户编号=客户.客户编号 where 客户.客户姓名=‘王明’
SELECT 业务员姓名 FROM 业务员 WHERE 业务员.业务员编号 IN(SELECT 业务员编号 FROM 订单 WHERE 客户编号 IN(SELECT 客户编号 FROM 客户 WHERE 客户姓名=‘王明’)) (7)统计每个业务员签定500元以上订单的数目;
SELECT 业务员编号,COUNT(*) 订单数目 FROM 订单 where 金额>500 GROUP BY 业务员编号 (8)检索签定2个以上订单的业务员姓名;
SELECT 业务员姓名 FROM 业务员 WHERE 业务员编号 IN(SELECT 业务员编号 FROM 订单 GROUP BY 业务员编号 HAVING COUNT(*)>2)
9
v1.0 可编辑可修改 (9)将所有业务员的月薪增加10%; UPDATE 业务员 SET 月薪=月薪* (10)将业务员关悦的月薪改为3500元;
UPDATE 业务员 SET 月薪=3500 WHERE业务员姓名=‘关悦’ (11)检索超过平均月薪的业务员姓名和年龄;
SELECT 业务员姓名, 年龄 FROM 业务员 WHERE月薪>(SELECT AVG(月薪) FROM 业务员 ) (12)将签定订单总金额超过2万元的月薪增加5%。
UPDATE 业务员 SET 月薪=月薪* WHERE 业务员编号 IN(SELECT 业务员编号 FROM 业务员 GROUP BY 业务员编号 HAVING SUM(金额) >20000)
2.设有3个关系模式:
学生(学号,姓名,性别,专业,籍贯) 课程(课程号,课程名,学时,性质) 成绩(学号,课程号,分数) 回答下列(1)-(10)题。
(1)检索所有女同学的姓名。试写出实现该查询的关系代数表达式;
(2)检索选修“数据库”课程的学生姓名。要求写出关系代数表达式和实现这个查询的SQL语句;
(3)检索课程号等于“C101”,且分数90分以上(含90分)学生的姓名。要求写出关系代数表达式和实现这个查询的SQL语句;
(4)写出SQL语句,检索学习“Cl01”课程中分数最高的学生姓名; (5)写出SQL语句,检索所有未选修“Cl01”课程的学生姓名;
(6)写出SQL语句,在成绩表中增加“学分”列,并根据学分=学时/18的算法,填上每门课程的学分;
(7)写出SQL语句,实现关系代数表达式:成绩-分数>=60(成绩); (8)写出SQL语句,检索选修5门以上课程的学生姓名;
(9)创建一个查询成绩的视图VSK,其属性有姓名、课程名和分数; 10