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 擴展存儲過程