数据库系统原理作业(实验五、六)

实验内容:


实验五

验证习题三第13、14题中的各项操作的SQL语句。


习题三 第13题:

  • 找出与李勇在同一个班级的学生信息;
  • 找出与李勇有相同选修课程的学生信息;
  • 找出年龄介于学生李勇和25岁之间的学生信息(已知李勇年龄小于25岁);
  • 找出选修了课程操作系统的学生学号和姓名;
  • 找出所有没有选修1号课程的学生姓名;
  • 找出选修了全部课程的学生姓名。

习题三第14题:

  • 查询选修了3号课程的学生学号及其成绩,并按成绩的降序排列;
  • 查询全体学生信息,要求查询结果按班级号升序排列,同一班级学生按年龄降序排列;
  • 求每个课程号及相应的选课人数;
  • 查询选修了3门以上课程的学生学号。

实验六

验证习题三第15题中的各项操作的SQL语句;


  • 将01311班的全体学生的成绩置零;
  • 删除01311班全体学生的选课记录;
  • 学生李勇已退学,从数据库中删除有关他的记录;
  • 对每个班,求学生的平均年龄,并把结果存入数据库。
  • 把所有工程师的基本工资(Basepay)增加100,试一试以下的UPDATE语句对不对:
UPDATE salary
SET basepay=basepay+100
WHERE eno in 
	(SELECT eno
	 FROM employee
WHERE title=’工程师’

代码如下

很可能有错的,还请多多包涵b( ̄▽ ̄)d

实验五

USE grademanager

--1.找出和李勇在同一个班级的学生信息
SELECT * FROM Student 
WHERE Sname <> '李勇' and Clno in
(SELECT Clno FROM Student 
WHERE Sname = '李勇');

--2.找出所有与学生李勇有相同选修课程的学生信息
SELECT * FROM Student
WHERE Sname <> '李勇' and exists
(SELECT * FROM Grade 
WHERE Student.Sno = Grade.Sno and Grade.Cno in
(SELECT Cno FROM Grade
WHERE Sno in
(SELECT Sno FROM Student
WHERE Sname = '李勇')));

--3.找出年龄介于学生李勇和25岁之间的学生信息
SELECT * FROM Student
WHERE Student.Sage < 25 and Student.Sage >
(SELECT Sage FROM Student
WHERE Sname = '李勇');

--4.找出选修了课程是操作系统的学生学号和姓名
SELECT Sno,Sname FROM Student
WHERE Sno in  
(SELECT Sno FROM Grade
WHERE Cno in
(SELECT Cno FROM Course
WHERE Cname = '操作系统'));

--5.找出没有选修1号课程的所有学生姓名
SELECT Sname FROM Student
WHERE not exists
(SELECT * FROM Grade
WHERE Student.Sno = Grade.Sno and Cno = 1);

--SELECT * FROM Grade,Student
--WHERE Student.Sno = Grade.Sno and Cno = 1

--6.找出选修了全部课程的学生姓名
SELECT Sname FROM Student
WHERE not exists
(SELECT Cno FROM Course 
EXCEPT SELECT Cno FROM Grade
WHERE Student.Sno = Grade.Sno);


/*SELECT Cno FROM Course except
SELECT Cno FROM Grade,Student
WHERE Student.Sno = Grade.Sno*/

--1.查询选修了3号课程的学生学号及成绩,并按成绩的降序排列
SELECT Sno,Gmark FROM Grade
WHERE Cno = 3
ORDER BY Gmark DESC

--2.查询全体学生信息,要求查询结果按班级号升序排列,
--同一班级学生按年龄降序排列;
SELECT * FROM Student 
ORDER BY Clno ASC, Sage DESC

--3.求每个课程号及相应的选课人数
SELECT Grade.Cno AS '课程号',COUNT(Grade.Cno) AS '选课人数'
FROM Grade FULL outer join Course 
ON Grade.Cno = Course.Cno
GROUP BY Grade.Cno 
--课程号7显示为null
/*SELECT Cno AS '课程号',COUNT(Cno) AS '选课人数'
FROM Grade GROUP BY Cno*/
--

--4.查询选修了3门以上课程的学生学号
SELECT Sno FROM Grade 
GROUP BY Sno 
HAVING COUNT(Sno) > 3;
 

实验六

--1.将01311班的全体学生的成绩置零
UPDATE Grade
SET Gmark = 0
WHERE Sno in
(SELECT Sno FROM Student
WHERE Clno = '01311');
 
 --2.删除2001级计算机软件的全体学生的选课记录
 DELETE  FROM Grade
 WHERE Sno in
 (SELECT Sno FROM Student
 WHERE Clno in
 (SELECT Clno FROM Class
 WHERE Speciality = '计算机软件'));

 --3.学生李勇已退学,从数据库重中删除他的有关记录
 DELETE FROM Grade
 WHERE Sno in
 (SELECT Sno FROM Student
 WHERE Sname = '李勇');

 UPDATE Class
 SET Number = Number - 1
 WHERE Clno in 
 (SELECT Clno FROM Student
 WHERE Sname = '李勇');

 UPDATE Class 
 SET Monitor = CASE
 WHEN Monitor =(
                  SELECT Sno FROM Student 
                  WHERE Sname = '李勇')
 THEN ''
 END
 FROM Class
 WHERE Clno in
 (SELECT Clno FROM Student
 WHERE Sname = '李勇') 

 DELETE FROM Student
 WHERE Sname = '李勇';


 --对每个班,求学生的平均年龄,并把结果存入数据库
 ALTER TABLE Class
 ADD Avgage Smallint null

 UPDATE Class
 SET Avgage = CASE
 WHEN Clno = '00311' 
 THEN (SELECT AVG(Sage)
        FROM Student
		WHERE Clno = '00311')
 WHEN Clno = '00312'
 THEN (SELECT AVG(Sage)
        FROM Student
		WHERE Clno = '00312')
 WHEN Clno = '01311'
 THEN (SELECT AVG(Sage)
        FROM Student
		WHERE Clno = '01311')
END
FROM Class

相关资料

SQL的各种连接Join详解

等老师讲完作业后会更新/(ㄒoㄒ)/~~

  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库系统原理上机实验 实验1数据库系统及数据库基础操作 1、实验目的 1) 熟练掌握SQL Server的使用方法。 2) 理解和掌握数据库DDL语言,能够熟练地使用SQL DDL语句创建、修改和删除数据库、模式和基本表。 2、实验主要内容 1) 安装SQL Server集成环境。 2) 理解和掌握SQL DDL语句的语法,特别是各种参数的具体含义和使用方法;使用SQL语句创建、 修改和删除数据库和基本表。掌握SQL语句常见语法错误的调试方法。 3、设备要求 1) PC一台 实验2 SQL语言—SELECT查询操作 1、实验目的要求 1) 掌握SQL序设计基本规范,熟练运用SQL语言实现数据基本查询,包括单表查询 、分组统计查询和连接查询。 2) 掌握SQL嵌套查询和集合查询等各种高级查询的设计方法等。 2、实验主要内容 1) 针对SQL Server数据库设计各种单表查询语句、分组统计查询语句;设计单个表针对自 身的连接查询,设计多个表的连接查询。理解和掌握SQL查询语句各个子句的 特点和作用,按照SQL序设计规范写出具体的SQL查询语句,并调试通过。 2) 针对SQL Server数据库,正确分析用户查询要求,设计各种嵌套查询和集合查询。 3、实验仪器设备 1) 学生每个一台PC机 2) 已安装SQL Server环境 实验3 SQL语言—更新操作、视图、索引等操作 1、实验目的要求 1) 熟悉数据库的数据更新操作,能够使用SQL语句对数据库进行数据的插入、修改 、删除操作。 2) 熟悉SQL语言有关视图的操作,能够熟练使用SQL语句来创建需要的视图,定义数 据库外模式,并能使用所创建的视图实现数据管理。 3) 掌握索引设计原则和技巧,能够创建合适的索引以提高数据库查询。 2、实验主要内容 1) 针对SQL Server数据库设计单元组插入、批量数据插入、修改数据和删除数据等SQL语 句。理解和掌握INSERT、UPDATE和DELETE语法结构的各个组成成分,结合嵌套 SQL子查询,分别设计几种不同形式的插入、修改和删除数据的语句,并调试 成功。 2) 针对给定的数据库模式,以及相应的应用需求,创建视图、创建带WITH CHECK OPTION的视图,并验证视图WITH CHECK OPTION选项的有效性。理解和掌握视图消解执行原理,掌握可更新视图和不可 更新视图的区别 对视图的操作: a) 创建由地点在上海的供应商组成的可更新视图SS_View; b) 创建一个包括各个工项目及其使用的各种零件总数量的不可更新视图JP Num_View; c) 利用SQL语句对上述a)中视图进行更新操作; d) 利用SQL语句对上述a)、b)中视图进行更新操作; e) 利用Management Studio创建和删除视图。 对索引的操作: 同上 3) 针对给定的数据库模式和具体应用需求,创建唯一索引、函数索引、复合索引等 ;修改索引;删除索引。设计相应的SQL查询验证索引有效性。 3、实验仪器设备 1) 学生每个一台PC机 2) 已安装SQL Server环境 实验4数据库的安全性、完整性 1、实验目的要求 1) 掌握自主存取控制权限的定义和维护方法; 2) 掌握实体完整性的定义和维护方法; 3) 掌握参照完整性的定义和维护方法; 4) 掌握用户自定义完整性的定义和维护方法。 2、实验主要内容 1) 定义用户、角色,分配权限给用户、角色,回收权限,以相应的用户名登录数据 库验证权限分配是否正确。选择一个应用场景,使用自主存取控制机制设计权 限分配。可以采用两种方案。方案一:采用sa超级用户登录数据库,完成所有 权限分配工作,然后用相应用户名登陆数据库以验证权限分配正确性;方案二 :采用sa用户登陆数据库创建三个部门经理用户,并分配相应的权限,然后分 别用三个经理用户名登陆数据库,创建相应部门的USER, ROLE,并分配相应权限。验证权限分配之前,请备份好数据库;针对不同用户 所具有的权限,分别设计相应的SQL语句加以验证。 2) 定义实体完整性,删除实体完整性。能够写出两种方式定义实体完整性的SQL语 句:创建表时定义实体完整性、创建表后定义实体完整性。设计SQL语句验证 完整性约束是否起作用。 3) 定义参照完整性,定义参照完整性的违约处理,删除参照完整性。写出两种方式 定义参照完整性的SQL语句:创建表时定义参照完整性、创建表后定义参照完 整性。 4) 针对具体应用语义,选择NULL/NOT NULL、DEFAULT,UNIQUE、CHECK等,定义属性上的约束条件。 3、实验仪器设备 1) 学生每个一台PC机 2) 已安装SQL Server环境 实验5数据库设计与应用开发大作业 1、实验目的要求 1) 掌握数据库设计

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值