《数据库原理与应用》实验报告
11.从选修’0511’课程的同学中,选出成绩高于’ 艾 添’的学生的学号和成绩。
select Stu_id,grade from StudentGrade
where Course_id='0511' and grade >( select grade from StudentGrade where Course_id='0511' and Stu_id=( select Stu_id from Student
where Stu_name='艾添') )
12.查询选修了'0511'课程但没有选修'0506'课程的学生学号。
select Stu_id from StudentGrade
where Course_id='0511' and Stu_id not in( select Stu_id from StudentGrade where Course_id='0506' )
13. 查询同时选修了'0511'课程和选修'0506'课程的学生学号。
select Stu_id from StudentGrade
where Course_id='0511' and Stu_id in( select Stu_id from StudentGrade where Course_id='0506' )
或者
select DISTINCT A.Stu_id
from StudentGrade A,StudentGrade B
where A.Stu_id=B.Stu_id AND A.Course_id='0511' AND B.Course_id='0506'
三、实验小结
1.思考简单查询、连接查询与嵌套查询有什么不同?连接查询与嵌套查询有何区别与联系?
2.此次实验中得到的哪些经验教训、疑难问题?有什么心得或总结?
四、作业
15
《数据库原理与应用》实验报告
1、试述SQL的特点。
2、设有一个SPJ数据库,包含S、P、J、SPJ4个关系模式: S(SNO,SNAME,STATUS.CITY)、P(PNO,PNAME,COLOR,WEIGHT)、J(JNO,JNAME,CITY)、SPJ(SNO,PNO, JNO,QTY),具体表内容如教材P75面所示。请用sql完成下列查询:
WHERE B.SNO=’S1’AND 1) 求供应工程J1零件的供应商号码SNO;
SELECT SNO NOT EXISTS FROM SPJ (SELECT * WHERE JNO=’J1’ FROM SPJ C WHERE A.JNO=C.JNO AND B.PNO=C.PNO)) 2) 求供应工程J1零件P1的供应商号码SNO; 6) 求使用了红色零件带没有使用蓝色零件的工SELECT SNO 程号; FROM SPJ SELECT JNO WHERE JNO=’J1’ AND PNO=’P1’ FROM SPJ ,P WHERE SPJ .PNO=P.PNO AND P.COLOR=’红’
AND JNO NOT IN( 3) 求供应工程J1零件为红色的供应商号码SNO;
SELECT SNO SELECT JNO FROM SPJ,P FROM SPJ ,P WHERE SPJ.PNO=P.PNO AND JNO=’J1’ AND WHERE SPJ .PNO=P.PNO AND P.COLOR=’蓝’ )
COLOR =’红’
4) 求没有使用天津供应商生产的红色零件的工7) 求供应了蓝色零件工程项目在北京的供应商
程号JNO; 的姓名和所在城市。 SELECT JNO SELECT S.SNAME,S.CITY FROM SPJ FROM SPJ ,P,J,S WHERE PNO NOT IN( WHERE SPJ .PNO=P.PNO AND SPJ.JNO=J.JNO SELECT PNO AND SPJ.SNO=S.SNO AND P.COLOR=’蓝’ AND FROM P J.CITY=’北京’ WHERE COLOR=’ 红’) AND SNO NOT IN( 8) 检索至少使用了两种零件的工程号。 SELECT SNO SELECT DISTINCT JNO FROM S FROM SPJ A,SPJ B
WHERE A.JNO=B.JNO AND A.PNO!=B.PNO WHERE CITY =’ 天津’)
5) 求至少使用了供应商S1所供应的全部零件的9) 检索J1号工程不使用的零件号。
SELECT PNO 程号JNO;
SELECT A.JNO FROM P FROM SPJ SPJ A WHERE PNO NOT IN ( WHERE NOT EXISTS SELECT PNO (SELECT * FROM SPJ FROM SPJ B WHERE JNO=’J1’)
4、选择题
1.有关系S(S#,SNAME,SAGE),C(C#,CNAME),SC(S#,C#,GRADE)。其中S#是学生号,SNAME是学生姓名,SAGE是学生年龄, C#是课程号,CNAME是课程名称。要查询选修“ACCESS”
16
《数据库原理与应用》实验报告
课的年龄不小于20的全体学生姓名的SQL语句是 SELECT SNAME FROM S,C,SC WHERE 子句。 这里的WHERE子句的内容是(A )。
A.S.S# = SC.S# and C.C# = SC.C# and SAGE>=20 and CNAME=‘ACCESS’ B.S.S# = SC.S# and C.C# = SC.C# and SAGE in>=20 and CNAME in ‘ACCESS’ C.SAGE in>=20 and CNAME in ‘ACCESS’ D.SAGE>=20 and CNAME=’ ACCESS’ 2.在SQL语言中,子查询是(D ) 。 A.返回单表中数据子集的查询语言 C.选取单表中字段子集的查询语句
B.选取多表中字段子集的查询语句 D.嵌入到另一个查询语句之中的查询语句
3.有关系S(S#,SNAME,SEX),C(C#,CNAME),SC(S#,C#,GRADE)。其中S#是学生号,SNAME是学生姓名,SEX是性别, C#是课程号,CNAME是课程名称。要查询选修“数据库”课的全体男生姓名的SQL语句是SELECT SNAME FROM S,C,SC WHERE子句。这里的WHERE子句的内容是(A )。
A. S.S# = SC.S# and C.C# = SC.C# and SEX=’男’ and CNAME=’数据库’ B. S.S# = SC.S# and C.C# = SC.C# and SEX in’男’and CNAME in’数据库’ C. SEX ’男’ and CNAME ’ 数据库’ D. S.SEX=’男’ and CNAME=’ 数据库’
4.假设学生关系S(S#,SNAME,SEX),课程关系C(C#,CNAME),学生选课关系SC(S#,C#,GRADE)。要查询选修“Computer”课的男生姓名,将涉及到关系(D )。 A.S
B.S,SC C.C,SC D.S,C,SC
17
《数据库原理与应用》实验报告
实验七 数据的插入、修改、删除
一、实验目的
1、学会在企业管理器中对数据库表进行插入、修改和删除数据操作。
2、学会使用T-SQL语句对数据库表进行单个数据插入、成批数据插入、修改和删除数据操作,掌握删除表的方法。
3、掌握在子查询的基础上创建新表。 4、了解数据更新操作时要注意数据完整性。
二、实验内容及要求
用SQL语句完成下列功能。使用数据库为SCHOOL数据库。
l、新开设一门课程,名叫网络安全与防火墙,学时40,编号为0118,主要介绍网络的安全与主要的防火墙软件。
2、先建立monitor表,其结构与student表大致一样.包含student表的学号、姓名、性别和班级编号,然后把班级编号为“0101”的学生的相应资料插入到monitor表中。
3、更新所有职称为“助教”的教师职称为“助理教师”。
4、在所有经济系班级的名称前加上“经济系”三个字。
5、学号为980101005的学生的数据结构课程成绩改为80分。
18
调试通过 调试通过 调试通过 调试通过 《数据库原理与应用》实验报告
6、删除studentgrade表中所有成续不及格的记录。
7、删除studentgrade表中学号以99开头的学生选修课程的记录。
8、删除课程名为“计算机导论”的课程信息和所有这门课的选课信息。
调试通过 调试通过 调试通过
9、将学号尾数为‘4’的同学成绩加2。
10、删除成绩为空的选课记录。
调试通过 调试通过
三、实验小结
1.有没有发现在更新或者删除的时候报告错误,但是你的指令没有错误的,请记录,并分析原因。若没有,请把“000503001”同学的选课表中的学号设为空值,看能否成功,为什么?
19
调试通过