数据库原理 实验2解答
- 格式:doc
- 大小:58.50 KB
- 文档页数:7
实验二SQL Server 2000 查询分析器的使用1.建立数据库文件2.在数据库文件中建立表、修改表(主码、完整性约束的使用)3.查询操作(2)实验数据及具体要求1.对于教学数据库的三个基本表学生关系Student(SNO,SNAME,SSEX,SAGE,SDEPT)学习关系SC(SNO,CNO,GRADE)创建数据库文件create database jxgl创建学生关系Student(SNO,SNAME,SSEX,SAGE,SDEPT)use jxglCREATE TABLE Student(Sno CHAR(5) PRIMARY KEY,Sname CHAR(20) ,Ssex CHAR(2) check (ssex='男' or ssex='女'),Sage INT check(sage between 15 and 35),Sdept CHAR(15) check (sdept in ('CS','IS','MA','PH')));在student表中插入记录insert into studentvalues('95001','李勇','男',20,'CS')创建学习关系SC(SNO,CNO,GRADE)CREATE TABLE SC(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT check(Grade between 0 and 100),PRIMARY KEY (Sno,Cno),/* 主码由两个属性构成,必须作为表级完整性进行定义*/ FOREIGN KEY (Sno) REFERENCES Student(Sno),/* 表级完整性约束条件,Sno是外码,被参照表是Student */ FOREIGN KEY (Cno) REFERENCES Course(Cno)/* 表级完整性约束条件, Cno是外码,被参照表是Course*/ );试用 SQL 的查询语句表达下列查询:1.使用查询分析器建立三个表并输入数据;2.查询选修了课程的学生人数;Select count(distinct sno) from sc /* 加distinct 去掉重复值后计数 */3.给CS系的学生开设5号课程,建立选课信息(成绩暂空)INSERT INTO scSELECT student.sno, o, NULL AS Expr1FROM student CROSS JOINcourseWHERE (student.sdept = 'CS') AND (o = '5')4.将95001学生选修3号课程的成绩改为该课的平均成绩UPDATE scSET grade =(SELECT AVG(grade)FROM scWHERE cno = '3')WHERE (sno = '95001')5.查询计算机系(CS)选修了两门及以上课程的学生的学号,姓名Select sno,snameFrom studentWhere sdept='CS' and sno in (select snofrom scwhere student.sno=sc.snoGroup by sc.sno having count(*)>=2)6.查询student表与sc表基于学号sno的等值连接/自然连接select *from student,scwhere student.sno=sc.sno或SELECT *FROM student INNER JOINsc ON student.sno = sc.sno7.查询课程之先修课的先修课(自身连接)SELECT o, second.cpnoFROM course first INNER JOINcourse second ON first.cpno = o8.查询学生及其选修课程、成绩等情况(不管是否选修均需列出学生信息)select student.sno,sname,ssex,sage,sdept,cno,gradefrom student,scwhere student.sno *=sc.sno或SELECT student.sno, student.sname, student.ssex, student.sage, student.sdept, o,sc.gradeFROM student LEFT OUTER JOINsc ON student.sno = sc.sno9.查询性别为男、课程成绩及格的学生信息及课程号、成绩select student.*,cno,gradefrom student,scwhere ssex='男' and student.sno=sc.sno and grade>=60SELECT student.*, o AS Expr1, sc.grade AS Expr2FROM student INNER JOINsc ON student.sno = sc.snoWHERE (student.ssex = '男') AND (sc.grade >= 60)10.查询与’张立’在同一个系学习的学生信息SELECT *FROM studentWHERE (sdept IN(SELECT sdeptFROM studentWHERE sname = '张立')) AND (sname <> '张立')或SELECT s1.*FROM student s1 , student s2WHERE (s2.sname = '张立') AND (s1.sname <> '张立') and (s1.sdept = s2.sdept)或SELECT s1.*FROM student s1 INNER JOINstudent s2 ON s1.sdept = s2.sdeptWHERE (s2.sname = '张立') AND (s1.sname <> '张立')11.查询选修了课程名为“数据库”的学生学号、姓名和所在系SELECT sno, sname, sdeptFROM studentWHERE (sno IN(SELECT snoFROM scWHERE cno IN(SELECT cnoFROM courseWHERE cname = '数据库')))或SELECT student.sno, student.sname, student.sdeptFROM student,sc,courseWHERE (ame = '数据库') and ( student.sno = sc.sno ) and (o = o)或SELECT student.sno, student.sname, student.sdeptFROM student INNER JOINsc ON student.sno = sc.sno INNER JOINcourse ON o = oWHERE (ame = '数据库')12.查询哪些课程只有女生选修SELECT DISTINCT cnameFROM courseWHERE ('女' = ALL(SELECT ssexFROM sc, studentWHERE (sc.sno = student.sno AND o = o)))或SELECT DISTINCT cnameFROM courseWHERE (NOT EXISTS(SELECT *FROM sc, studentWHERE (sc.sno = student.sno AND o = o AND student.ssex = '男')))13.查询所有未选修1号课程的学生姓名SELECT snameFROM studentWHERE (NOT EXISTS(SELECT *FROM SCWHERE Sno = Student.Sno AND Cno = '1'))14.查询平均成绩大于85分的学号、姓名、平均成绩SELECT student.sno, student.sname, AVG(sc.grade) AS Expr1FROM student,scwhere (student.sno = sc.sno)GROUP BY student.sno, student.snameHAVING (AVG(sc.grade) > 85)或SELECT student.sno, student.sname, AVG(sc.grade) AS Expr1FROM student INNER JOINsc ON student.sno = sc.snoGROUP BY student.sno, student.snameHAVING (AVG(sc.grade) > 85)。
《数据库原理与应用》课程实验指导书苏州工业职业技术学院信息工程系2008.1目录目录 (Ⅰ)前言………………………………………………………………………………………实验一初识SQL Server 2000…………………………………………………实验二数据库的创建和管理…………………………………………………实验三表的创建、管理及数据操作……………………………………………实验四单表查询……………………………………………………………实验五连接查询…………………………………………………………实验六嵌套查询……………………………………………………实验七视图的创建和管理……………………………………………………实验八游标的使用……………………………………………………实验九T-SQL语言编程基础…………………………………………………实验十函数…………………………………………………………………………实验十一索引、默认值约束和默认值对象………………………………实验十二数据完整性的实现…………………………………………………实验十三存储过程…………………………………………………实验十四触发器…………………………………………………实验十五系统安全管理…………………………………………………实验十六数据备份、恢复和导入导出………………………………………实验十七综合训练…………………………………………………前言数据库技术是计算机学科中的一个重要分支,发展迅速、应用非常广泛,几乎涉及了所有应用领域。
例如,办公系统、生产管理、财务管理、人事管理、工业管理等,都广泛应用了数据库技术。
本实验指导书是《数据库原理与应用》课程的配套实验资料。
通过安排实验及布置的任务,让学生熟练掌握使用关系数据库管理系统SQL Server 2000进行数据库及表的创建和管理、查询、Transact—SQL程序设计、各类约束的创建及使用、视图及索引的创建与管理、SQL Server 的存储过程的创建和管理、SQL Server 的触发器创建和管理、SQL Server的安全性管理、数据库的备份及恢复。
数据库原理及应用实验答案1. 数据库原理数据库原理指的是数据库系统的内部机制和运行原理。
以下是数据库原理的相关内容:- 数据库模型:定义数据的组织方式和约束条件,包括层次模型、网状模型、关系模型、面向对象模型等。
- 数据库结构:描述数据库中数据组织的方式,包括表、视图、索引、存储过程等。
- 数据操作:定义对数据库中数据进行操作的方式,包括增删改查等。
- 数据库事务:保证数据库操作的一致性和完整性的机制,包括ACID(原子性、一致性、隔离性、持久性)属性等。
- 数据库并发控制:处理多个用户同时访问数据库产生的冲突问题,包括加锁、事务隔离级别等。
- 数据库恢复与备份:保证数据库数据不丢失和可恢复的机制,包括日志、回滚、快照等。
2. 数据库应用实验答案以下是数据库应用实验中的相关问题和答案:问题1:什么是数据库?答案:数据库是存储、管理和操作结构化数据的系统。
它提供了数据的组织方式和数据操作的接口,用户可以通过数据库来存储和访问数据。
问题2:数据库的优点是什么?答案:数据库的优点包括:数据共享性高,数据冗余度低,数据一致性好,数据安全性高,数据的集中管理和维护方便等。
问题3:什么是关系数据库?答案:关系数据库是基于关系模型的数据库系统。
它使用表描述数据之间的关系,在关系数据库中,数据以行和列的形式存储,并通过主键和外键来建立关联关系。
问题4:什么是SQL语言?答案:SQL(Structured Query Language)是用于访问和操作关系数据库的标准语言。
它包括数据查询语言(SELECT)、数据定义语言(CREATE、ALTER、DROP)、数据操作语言(INSERT、UPDATE、DELETE)和数据控制语言(GRANT、REVOKE)等。
问题5:什么是数据库调优?答案:数据库调优是指对数据库系统进行性能优化的过程。
它包括优化数据库结构、调整数据库参数、优化查询语句、优化索引和表分区、优化物理存储等方法,以提高数据库的性能和响应速度。
数据库原理及应用实验指导书 - 答案实验一:数据库管理系统的安装与配置问题一数据库管理系统(DBMS)是一种软件,用于管理和组织数据库。
它允许用户创建,读取,更新和删除数据库中的数据。
常见的数据库管理系统有MySQL,Oracle,SQL Server等。
问题二在实验室环境中,我们将使用MySQL作为我们的数据库管理系统。
以下是MySQL的一些常见特点: - 开源免费 - 跨平台支持 - 可扩展性强 - 有大型的用户社区和丰富的资源支持问题三MySQL的安装步骤如下: 1. 下载MySQL安装文件,可以从MySQL官方网站或者其他可信的下载源获取。
2. 运行安装程序,按照向导的指示进行安装。
3. 选择是否要安装MySQL 服务器和MySQL工具。
4. 设置密码以保护数据库的安全。
5. 完成安装程序并启动MySQL服务。
数据库是一个组织和存储数据的容器。
在关系型数据库中,数据以表的形式存储,每个表包含多个行和列。
每行代表一个记录,每列代表一个字段。
问题五关系型数据库管理系统(RDBMS)是一种DBMS,它使用结构化查询语言(SQL)来操作和处理数据。
常见的关系型数据库管理系统有MySQL,Oracle,SQL Server等。
问题六开放数据库连接(ODBC)是一种标准的数据库访问方法,它允许不同的应用程序通过统一的接口访问不同的数据库管理系统。
ODBC驱动程序充当应用程序和数据库之间的翻译器。
问题七在Windows系统中,ODBC数据源可以通过控制面板的“管理工具”来配置。
在数据源配置对话框中,可以添加,编辑和删除ODBC数据源。
在Windows系统中,可以使用ODBC接口库和ODBC驱动程序来连接和操作数据库。
具体步骤如下: 1. 加载ODBC接口库。
2. 初始化ODBC环境。
3. 建立数据库连接。
4. 执行SQL语句。
5. 关闭数据库连接。
6. 释放ODBC环境。
问题九ODBC接口库是一组API函数,用于连接和操作数据库。
实验任务书(实验一、实验二)课程名称:数据库原理与技术实验报告要求:1.列出所有的SQL语句和源代码;2.程序要求有适当的注释;3.对数据完整性约束实施要求给出相应的测试用例。
4.实验报告提交电子档。
实验内容:一:创建表、更新表和实施数据完整性1.运行给定的SQL Script,建立数据库GlobalToyz。
2.了解表的结构,建立所有表的关系图。
3.利用系统定义的存储过程sp_helpdb查看数据库的相关信息,例如所有者、大小、创建日期等。
4.查看所有表中出现的约束(包括Primary key, Foreign key, check constraint, default, unique)5.把价格在$20以上的所有玩具的信息拷贝到称为PremiumToys的新表中。
SELECT*INTO PremiumToysFROM ToysWHERE Toys.mToyRate>20;6.对表Toys实施下面数据完整性规则:(1)玩具的现有数量应在0到200之间;(2)玩具适宜的最低年龄缺省为1。
ALTER TABLE ToysADD CONSTRAINT C1CHECK (siToyQoh BETWEEN 0 AND 200);ALTER TABLE ToysADD CONSTRAINT C2default(1)for siLowerAge;7.给id为‘000001’玩具的价格增加$1。
update Toys set mToyRate=mToyRate+1 where cToyId='000001';8. 列出表PickofMonth中的所有记录,并显示中文列标题。
SELECT cToyId[玩具编号],siMonth[生产月份],iYear[生产年份],iTotalSold [销售总量]FROM PickofMonth;二:查询数据库1.显示属于California和Illinoi州的顾客的名、姓和emailID。
数据库实验二作业及答案实验2 SQL Server 数据库的管理一、实验目的1.了解SQL Server数据库的逻辑结构和物理结构的特点。
2.学会使用企业管理器对数据库进行管理。
3.学会使用Transact-SQL语句对数据库进行管理。
二、实验准备1.确定能够创建数据库的用户是系统管理员,或是被授权使用CREATE DATABASE语句的用户。
2.确定要创建的数据库名、所有者(即创建数据库的用户)、数据库大小(最初的大小、最大的大小、是否允许增长即增长的方式)和存储数据的文件。
3.了解常用的创建数据库方法。
三、实验内容及步骤1.在企业管理器中创建studentsdb数据库。
(1)运行SQL Server管理器,启动企业管理器,展开服务器“(LOCAL)(Windows NT)”。
(2)右击“数据库”项,在快捷菜单中选择“新建数据库”菜单项。
在新建数据库对话框的名称文本框中输入学生管理数据库名studentsdb。
2.选择studentsdb数据库,在其快捷菜单中选择“属性”菜单项,查看“常规”、“数据文件”、“事务日志”、“文件组”、“选项”和“权限”页面。
3.打开studentsdb数据库的“属性”对话框,在“数据文件”选项卡中修改studentsdb数据文件的“分配空间”大小为2MB。
指定“最大文件大小”为5MB.在“事务日志”选项卡中修改studentsdb数据库的日志文件的大小在每次填满时自动递增5%。
4.启动查询分析器,在查询分析器中使用Transact-SQL语句CREATE DATABASE创建studb数据库。
然后通过系统存储过程sp_helpdb查看系统中的数据库信息。
CREATEdatabase studbON(NAME=studb,FILENAME='C:\database')exec sp_helpdb5.在查询分析器中使用Transact-SQL语句ALTER DATABASE修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小文1MB。
第1周(第五章:函数依赖、推理规则、闭包)二、研讨课:1. 假设员工关系EMP(员工号,,部门,部门,部门负责人,家庭住址,家庭成员,成员关系)如下表所示。
如果一个部门可以有多名员工,一个员工可以有多个家庭成员,那么关系EMP属于数据冗余问题;为了解决这一问题,应该将员工关系EMP分解为(员工号,,部门,家庭地址,家庭成员,成员关系)(部门,部门负责人,部门) ,画出ER图(上学期学过了,很简单,懒得画),主外键(主键:员工号,外键:部门)(主2. 判断F={A->BC,B->A,AD->E}和G={A->BC,B->A,BD->E}是等价的因为B->A,所以BD->AD,因为AD->E,所以BD->E,所以。
3. 设关系模式R具有n个属性,在模式R上可能成立的函数依赖有(1)个?其中平凡的FD有(2)个?非平凡的FD有(3)个?以上3点都需说明为什么三、作业:1. 设函数依赖集 F={AB->E,AC->G,AD->BG,B->C,C->D},试证AC->G是冗余的。
AD->BG,C->D,所以AC->BG,所以AC->G,所以冗余2.课本Page124:习题5.3(1)X->ø永远满足。
(2)ø->Y,则属性Y对于各元组的值相同。
(3)ø->ø为平凡的函数依赖,永远满足。
3. 课本Page124:习题5.8证明:(反证法)假设存在A→B那么 A→AB,关系模式R的候选码即为A,不是全码∴假设不存在,R不满足A→B同理:R不满足 B→A第2周(第五章:、关键码、最小函数依赖集)二、研讨课:2.设有函数依赖集:F={AB->C,C->A,BC->D,ACD->B,D->EG,BE->C,CG->BD,CE->AG},计算其等价的最小依赖集。
实验四多表查询1 实验目的与要求(1) 熟练掌握SQL语句的使用。
(2) 熟练使用SQL语句进行连接操作。
2 实验内容1)实验题目:(1) 找出同一天进入公司服务的员工。
(2) 查找与“陈诗杰”在同一个单位工作的员工姓名、性别、部门和职务。
(3) 在Employee表中查询薪水超过员工平均薪水的员工信息。
(4) 查找有销售记录的客户编号、名称和订单总额。
(5) 查询没有订购商品的客户编号和客户名称。
(6) 使用子查询查找32M DRAM的销售情况,要求显示相应的销售员的姓名、性别,销售日期、销售数量和金额,其中性别用“男”、“女”表示。
(7) 查询OrderMaster表中订单金额最高的订单号及订单金额。
(8) 在订单主表中查询订单金额大于“E2005002业务员在2008-1-9这天所接的任一张订单的金额”的所有订单信息。
(9) 查询单价高于400元的商品编号、商品名称、订货数量和订货单价。
(10) 分别使用左外连接、右外连接、完整外部连接查询单价高于400元的商品编号、商品名称、订货数量和订货单价,并分析比较检索的结果。
(11) 使用左外连接查找每个客户的客户编号、名称、订货日期、订单金额,其中订货日期不要显示时间,日期格式为“yyyy-mm-dd”,按客户编号排序,同一客户再按订单金额降序排序输出。
(12) 查找每个员工的销售记录,要求显示销售员的编号、姓名、性别、商品名称、数量、单价、金额和销售日期,其中性别使用“男”和“女”表示,日期使用“yyyy-mm-dd”格式显示。
(13) 查找16M DRAM的销售情况,要求显示相应的销售员的姓名、性别,销售日期、销售数量和金额,其中性别用“男”、“女”表示。
(14) 找出公司男业务员所接且订单金额超过2000元的订单号及订单金额。
(15) 查询每种商品的总销售数量及总销售金额,要求显示出商品编号、商品名称、总数量及总金额,并按商品号从小到大排列。
实验二以图形界面方式进行数据库和表的创建实验目的:掌握使用图形界面的方式进行库和表的创建,以及数据的插入方法。
实验内容及要求:1、利用图形界面方式创建数据库;2、利用图形界面方式创建一个模式;3、利用图形界面方式在模式中创建表;4、利用图形界面方式在表中插入数据。
实验工具:企业管理器——可以运行在多种操作系统平台上的图形界面总控管理平台。
它允许用户、程序员和管理员进行管理和配置数据库服务器、管理各种数据库对象、管理数据安全、监视数据库服务活动、诊断修改和优化数据库等操作。
企业管理器的总的设计思想是记录下用户通过图形方式进行的操作,并转换成相应的SQL语句。
实验过程及步骤:一、创建TEST数据库创建步骤:打开企业管理器→在企业管理器的【数据库】节点,点击鼠标右键→点击【新建数据库】→弹出【新建数据库窗口】,在该窗口中的“数据库名称”后面输入要创建的数据库名,其他选项默认即可→点击【确定】。
图1 新建数据库二、在TEST数据库中创建SCOT模式实验一中已将TEST数据库创建完成,接下来需要在该数据库中创建SCOT 模式。
模式(Schema)实际上是一个名字空间,它包含命名对象(表,视图,存储过程,函数和序列)。
创建步骤:打开企业管理器→在企业管理器的【模式】节点,点击鼠标右键→点击【新建模式】→弹出【新建模式窗口】,在该窗口中的“模式名”后面输入要创建的模式名,点击【确定】。
图2 新建模式三、创建表在SCOT模式中创建三张表,分别为DEPT部门表、EMP员工表和SALGRADE工资等级表。
其中各表的结构为:DEPT表结构EMP表结构SALGRADE表结构创建步骤:打开企业管理器→在企业管理器的【表】节点,点击鼠标右键→点击【新建表】→弹出【新建表窗口】,在该窗口中的设置列名、数据类型、主键、精度等,点击【保存】,在窗口中输入表名。
图3 创建表四、在表中插入数据DEPT表数据EMP表数据SALGRADE表数据创建步骤:打开企业管理器→在企业管理器的【表】节点中找到插入数据的表名→点击鼠标右键→点击【打开表】下的【返回所有行】→弹出【打开表窗口】,在该窗口中的输入具体数据。
(1)查询性别为“男”的所有学生的名称并按学号升序排列。
SELECT SnameFROM StudentsWHERE Ssex='男'ORDER BY Sno(2)查询学生的选课成绩合格的课程成绩,并把成绩换算为积分。
积分的计算公式为:[1+(考试成绩-60)*0.1]*Ccredit。
考试成绩>=60 否则=0SELECT Sno, Tno, o, Score, 'Point of Score',CONVERT(FLOAT(1), (Score-60)*0.1*Ccredit+Ccredit)FROM Courses, ReportsWHERE Score>=60 AND o=oUNIONSELECT Sno, Tno, o, Score, 'Point of Score', 0FROM Courses, ReportsWHERE o=o AND (Score < 60 OR Score ISNULL)(3)查询学分是3或4的课程的名称。
SELECT CnameFROM CoursesWHERE Ccredit IN('3','4')(4)查询所有课程名称中含有“算法”的课程编号。
SELECT CnameFROM CoursesWHERE Cname LIKE '%算法%'/*查询得到算法分析与设计、数据结构与算法分析*/(5)查询所有选课记录的课程号(不重复显示)。
SELECT DISTINCT Cno FROM Reports(6)统计所有老师的平均工资。
SELECT A VG(Tsalary) FROM Teachers(7)查询所有教师的编号及选修其课程的学生的平均成绩,按平均成绩降序排列。
SELECT Tno,A VG(Score)FROM ReportsGROUP BY TnoORDER BY A VG(Score) DESC(8)统计各个课程的选课人数和平均成绩。
SELECT Cno,COUNT(Sno),A VG(Score)FROM ReportsGROUP BY Cno(9)查询至少选修了三门课程的学生编号和姓名。
SELECT Sno,SnameFROM StudentsWHERE Sno IN(SELECT SnoFROM ReportsGROUP BY SnoHA VING COUNT(*)>=3)(10)查询编号S26的学生所选的全部课程的课程名和成绩。
SELECT ame,Reports.ScoreFROM Courses,ReportsWHERE Reports.Sno='S26' AND o=o(11)查询所有选了“数据库原理及其应用”课程的学生编号和姓名。
SELECT Sno,SnameFROM StudentsWHERE Sno IN(SELECT Reports.SnoFROM Reports,CoursesWHERE o=o AND ame='数据库原理及其应用')(12)求出至少被两名学生选修的课程编号。
SELECT DISTINCT oFROM Reports X,Reports YWHERE o=o AND X.Sno<Y.Sno(13)查询选修了编号S26的学生所选的某个课程的学生编号。
SELECT Y.SnoFROM Reports X,Reports YWHERE o=o AND X.Sno='S26'/*注:在本题中,如果要求是“查询选修了编号S26的学生所选的某个课程的其他学生编号”时,也就是不包含编号S26学生自身的情况时,在查询条件WHERE中,还需要加上条件X.Sno<Y.Sno*/(14)查询学生的基本信息及选修课程编号和成绩。
SELECTStudents.Sno,Students.Sname,Students.Semail,Students.Scredit,Students.Ssex,o,Reports.ScoreFROM Students JOIN Reports ON Students.Sno=Reports.Sno(15)查询学号S52的学生的姓名和选修的课程名称及成绩。
SELECT Students.Sname,ame,Reports.ScoreFROM Students,Courses,ReportsWHERE Students.Sno=Reports.Sno AND o=oAND Students.Sno='S52'(16)查询和学号S52的学生同性别的所有学生资料。
SELECT *FROM StudentsWHERE Ssex=(SELECT SsexFROM StudentsWHERE Sno='S52')(17)查询所有选课的学生的详细信息。
SELECT *FROM StudentsWHERE Sno IN(SELECT SnoFROM Reports)(18)查询没有学生选的课程的编号和名称。
SELECT Cno,CnameFROM CoursesWHERE Cno NOT IN(SELECT CnoFROM Reports)(19)查询选修了课程名为C++的学生学号和姓名。
SELECT Sno,SnameFROM StudentsWHERE Sno IN(SELECT SnoFROM ReportsWHERE Cno IN(SELECT CnoFROM CoursesWHERE Cname='C++'))(20)找出选修课程UML或者课程C++的学生学号和姓名。
SELECT Sno,SnameFROM StudentsWHERE Sno IN(SELECT SnoFROM ReportsWHERE Cno IN(SELECT CnoFROM CoursesWHERE Cname='C++' OR Cname='UML'))(21)找出和课程UML或课程C++的学分一样课程名称。
SELECT CnameFROM CoursesWHERE Ccredit=SOME(SELECT CcreditFROM CoursesWHERE Cname='UML' OR Cname='C++')/*注:在本题中,将=SOME换成=ANY或IN都可行。
*/ (22)查询所有选修编号C01的课程的学生的姓名。
SELECT SnameFROM StudentsWHERE EXISTS(SELECT *FROM ReportsWHERE o='C01' AND Reports.Sno=Students.Sno)(23)查询选修了所有课程的学生姓名。
SELECT SnameFROM StudentsWHERE NOT EXISTS(SELECT *FROM Reports XWHERE NOT EXISTS(SELECT *FROM Reports YWHERE Y.Sno=Students.Sno AND o=o))(24)利用集合查询方式,查询选修课程C++或选择课程JA V A的学生的编号、姓名和积分。
SELECT Sno,Sname,ScreditFROM StudentsWHERE Sno IN(SELECT SnoFROM ReportsWHERE o=(SELECT oFROM CoursesWHERE ame='C++'))UNIONSELECT Sno,Sname,ScreditFROM StudentsWHERE Sno IN(SELECT SnoFROM ReportsWHERE o=(SELECT oFROM CoursesWHERE ame='JA V A'))(25)实现集合交运算,查询既选修课程C++又选修课程JA V A的学生的编号、姓名和积分。
SELECT Sno,Sname,ScreditFROM StudentsWHERE Sno IN(SELECT X.SnoFROM Reports X,Reports YWHERE(o=(SELECT CnoFROM CoursesWHERE Cname='C++')AND o=(SELECT CnoFROM CoursesWHERE Cname='JA V A'))AND X.Sno=Y.Sno)(26)实现集合减运算,查询选修课程C++而没有选修课程JA V A的学生的编号。
基本的语句模式如下:SELECT Sno FROM ReportsWHERE Cno='C01'AND Sno NOT IN(SELECT Sno FROM Reports WHERECno='C03')本题具体的SQL语句SELECT * FROM StudentsWHERE Sno IN( SELECT Sno FROM ReportsWHERE Cno=(SELECT Cno FROM Courses WHERE Cname='C++')AND Sno NOT IN (SELECT Sno FROM Reports WHERECno=(SELECT Cno FROM Courses WHERE Cname='JA V A'))) (28)求平均成绩在75分以上的课程名select ame,avg(Score) as pjcjfrom COURSE, Reportswhere om= ogroup by ohaving avg(Score)>75(29) 检索“张三”同学不学的课程的课程号SELECT distinct cnofrom Courseswhere cno not in (select ofrom Students, Reportswhere Students.sno= Reports.snoand Students.sname='张三' )。