1. SQL Server 实用教程(第3版)课后实验答案 郑阿奇主编的 邮箱[email protected]
--查询全体学生的学号和姓名.
select Sno,Sname from Student
--查询全体学生的详细记录.
select * from Student
--查询所有选修课程的学生学号.
select distinct Sno from SC
--查询考试有不及格的学生学号.
select distinct Sno from SC where Grade<60
--查询不是信息系(is)、计算机系(cs)的学生性别、年龄、系别。
select Ssex,Sage,Sdept from Student where Sdept not in('is','cs')
--查询选修了4号课的学生学号和成绩,结果按成绩降序排列.
select Student.Sno,Grade from Student,SC where Cno='004' order by Grade desc
--查询每个课程号和相应的选课人数.
select Cno,count(Sno)选课人数 from SC group by Cno
--查询计算机系(cs)的学生姓名、年龄、系别。
select Sno,Sage,Sdept from Student where Sdept in('cs')
--查询年龄18~20岁的学生学号、姓名、系别、年龄。
select Sno,Sname,Sdept,Sage from Student where Sage between 18 and 20
--查询姓刘的学生的情况.
select * from Student where Sname like '刘%'
--查询既选修1号课程,又选修2号课程的学生学号.
select Sno from SC where Cno='001' and Cno='002'
select sno from SC where Cno='001' and Sno in (select Sno from SC where Cno='002')
select sno from SC where Cno='001' intersect select Sno from SC where Cno='002'
--查询学生的姓名和出生年份(今年2008年)
select Sname,2008-Sage as 出生年份 from student
--查询没有成绩的学生学号和课程号。
select Sno,Cno from sc where grade is null
--查询总成绩大于200分的学生学号。
select Sno from sc group by sno having sum(grade)>200
--查询每门课程不及格学生人数。
select cno,count(sno) 不及格人数 from sc where grade<60 group by cno
--查询不及格课程超过3门的学生学号。
select Sno from sc where grade<60 group by sno having count(grade)>3
--查询年龄为10~19岁的学生信息。
select * from student where Sage between 10 and 19
--查询全体学生情况,按所在系升序排列,同一个系的学生按年龄降序排列。
select * from student order by sdept, sage desc
--查询选了1号课程的学生平均成绩。
select avg(grade) from sc where cno='001'
--查询选了3号课程的学生的最高分。
select max(grade) from sc where cno='003'
--查询每个同学的总成绩。
select sno,sum(grade) 总成绩 from sc group by sno
---实验五
--查询每个学生及其选课情况。
select student.*,sc.*,course.* from student,sc,course where student.sno=sc.sno and sc.cno=course.cno
--select * from sc,student,course
--查询每门课程的间接选修课。
select first.cno,second.cpno from course first,course second where first.cpno=second.cno;
--将STUDENT,SC进行右连接。
select * from student,sc
select student.*,sc.* from student right join sc on student.sno=sc.sno
--查询有不及格学生的姓名和所在系。
select Sname,Sdept from student,sc where grade<60 and student.sno=sc.sno
--查询所有成绩为优秀(大于90)的学生姓名。
select Sname from student where sno in (select sno from sc group by sno having min(grade)>90)and sno not in (select sno from sc where grade is null) --错误
select sname from student,sc where student.sno=sc.sno and student.sno not in(select sno from sc where grade is null) group by sname having min(grade)>=90
--查询既选修了2号课程又选修了3号课程的学生姓名、学号。
select distinct Sname,Sc.Sno from student,sc where student.sno=sc.sno and sc.sno in(select sno from sc where cno='002' and sno in (select sno from sc where cno='003'))
--查询和刘晨同一年龄的学生。
select Sno,sname from student where sage=(select sage from student where sname='刘晨')
--选修了课程名为“数据库”的学生姓名和年龄。
select Sname,Sage from student where sno in(select sno from sc where cno=(select cno from course where cname='数据库'))
--查询其他系比IS系任一学生年龄小的学生名单。
select sname from student where sdept!='is'and sage<(select max(sage) from student where sdept='is')
--查询其他系中比IS系所有学生年龄都小的学生名单。
select Sname from student where sdept!='is' and sage<(select min(sage) from student where sdept='is')
--查询选修了全部课程的学生姓名.
select sname from student where not exists(select * from course where not exists(select * from sc where sno=student.sno and cno=course.cno)) --正确
--查询计算机系学生及其性别是男的学生.
select * from student where sdept='is' or ssex='男'
--查询选修课程1的学生集合和选修2号课程学生集合的差集。
select sc.sno from student,sc where student.sno=sc.sno and cno='001'
except
select sc.sno from student,sc where student.sno=sc.sno and cno='002'
--或者
select sno from sc where cno='001' and sno not in (select sno from sc where cno='002')
--查询李丽同学不学的课程的课程号.
select distinct cno from sc where cno not in (select cno from student,sc where sname='李丽'and student.sno=sc.sno)
--查询选修了3号课程的学生平均年龄.
select avg(sage) from student where sno in(select sno from sc where cno='003')
--求每门课程学生的平均成绩.
select cno,avg(grade) from sc group by cno
--统计每门课程的学生选修人数(超过3人的人统计)。要求输出课程号和选修人数,结果按人数降序排列,若人数相同,按课程号升序排列。
--查询学号比刘晨大,而年龄比他小的学生姓名。
select sname from student where sno>(select sno from student where sname='刘晨')and sage<(select sage from student where sname='刘晨')
--求年龄大于女同学平均年龄的男同学的姓名和年龄。
select sname,sage from student where sage>(select avg(sage) from student where ssex='女')and ssex='男'
--求年龄大于所有女同学年龄的男同学姓名和年龄。
select sname,sage from student where sage>(select max(sage) from student where ssex='女')and ssex='男'
--查询至少选修了08002选修的全部课程的学生号码。
--select cno from sc where sno='08002'
--select sno from sc where cno IN (select cno from sc where sno='08002')
--select * from sc A,sc B where A.SNO=B.SNO
--select * from (select distinct* from sc A,sc B where A.SNO=B.SNO)as e
select distinct sno from sc sc1 where not exists (select * from sc sc2 where sc2.sno='08002' and not exists (select * from sc sc3 where sc3.sno=sc1.sno and sc3.cno=sc2.cno))
--查询08001和08002两个学生都选修的课程的信息。
select course.* from course,sc where sno='08001' and course.cno=sc.cno intersect select course.* from course,sc where sno='08002' and course.cno=sc.cno
--查询跟'08001'同学同姓的学生信息
select * from student where sname like(select left(sname,1) from student where sno='08001')+'%'
2. SQL Server实用教程的目录
第1章 数据库基本概念和SQL Server 2000环境
1.1 数据库基本概念
1.2 SQL Server 2000的安装
1.3 SQL Server 2000服务器组件
1.4 SQL Server 2000主要的管理工具
1.5 注册服务器
1.6 SQL Server 2000应用过程
习题
第2章 数据库和表创建
2.1 SQL Server基本概念
2.2 界面创建数据库和表
2.3 使用命令方式创建数据库和表
习题
第3章 表数据操作
3.1 界面操作表数据
3.2 命令操作表数据
习题
第4章 数据库的查询和视图
4.1 连接、选择和投影
4.2 数据库的查询
4.3 视图
4.4 游标
习题
第5章 T-SQL语言
第6章 索引与数据完整性
第7章 存储过程和触发器蚂镇段
第8章 备份恢复与导入/导出
第9章 系统安全管理
第10章 其他
第11章 VB/SQL Server开发与编程
第12章 PB/SQL Server开发与编程
第13章 Delphi/SQL Server开发与编程
第14章 ASP/SQL Server开发与编程
第15章 ASP.NET/SQL Server开发与编程 实验1 SQL Server 2000管理工具的使用
实验2 创建数据库和表
实验3 表数据插入、修改和删除
实验4 数据库的查询
实验5 T-SQL编程
实验6 索引和数据完整性的使用
实验7 存储过程和触发器的使用
实验8 数据库的安全性
实验8.1 数据库用户权限的设置
实验8.2 服务器角色的应用
实验8.3 数据库角色的应用
实验9 备份恢复与导入/导出
实验9.1 数据库的备份
实验9.2 数据库的恢复
实验9.3 数据库的导入/导出 实习1 VB/SQL Server学生成绩管理系统
项目1 VB连接SQL Server 2000数据库
项目2 学生信息查询
项目3 学生信息修改
项目4 学生成绩的录入
实习2 PB/SQL Server学生成绩管理系统
项目1 创建SQL Server 2000数闷誉据库与 PB 的连接
项目2 主应用程序和主窗体
项目3 插入记录窗体
项目4 查询记录窗体
项目5 修改记录旅如窗体
项目6 删除记录窗体
项目7 插入学生成绩窗体
实习3 Delphi/SQL Server学生成绩管理系统
项目1 创建与 SQL Server 2000数据库的连接
项目2 主窗体
项目3 插入记录窗体
项目4 查询记录窗体
项目5 修改记录窗体
项目6 删除记录窗体
项目7 插入学生成绩窗体
实习4 ASP/SQL Server学生成绩管理系统
项目1 综合应用准备
项目2 系统登录和进入系统
项目3 学生信息录入
项目4 学生成绩录入
项目5 学生信息查询
项目6 课程信息查询
实习5 ASP.NET/SQL Server学生成绩管理系统
项目1 连接数据库和主程序
项目2 学生信息数据查询
项目3 学生信息的加、改、删
项目4 学生成绩录入 附录A 学生成绩数据库(库名XSCJ)表结构
附录B 常用语句
附录C 常用函数
附录D @@类函数
附录E 系统存储过程
附录F 扩展存储过程