目錄
1.使用查詢語句完成以下任務(每一個查詢都要給出SQL語句,並且列出查詢結果)。
2.使用數據操縱完成以下任務(每一個任務都要給出SQL語句,並且列出查詢結果)。
3.根據學生作業管理數據庫以及其中的學生表、課程表和學生作業表,進行以下操作。
一、實驗目的
1.掌握各種查詢的使用方法。
2.掌握數據操縱的使用方法。
3. 掌握視圖的使用方法。
二、實驗軟硬件要求
1、SQL Server 2008
三、實驗預習
表連接、表更新、視圖操作等SQL語句。
四、實驗內容(實驗步驟、測試數據等)
根據SQL實踐(一)實驗中創建的學生作業管理數據庫以及其中的學生表、課程表和學生作業表,進行以下操作。
1.使用查詢語句完成以下任務(每一個查詢都要給出SQL語句,並且列出查詢結果)。
(1)查詢與“張志國”同一班級的學生信息(使用連接查詢和子查詢方式)。
(2)查詢比“計算機應用基礎”學時多的課程信息(使用連接查詢和子查詢方式)。
(3)查詢選修課程號為K002的學生的學號、姓名(使用連接查詢、普通子查詢、相關子查詢、使用exists關鍵字的相關子查詢)。
(4)查詢沒有選修K001和M001課程的學號、課程號和三次成績(使用子查詢)。
2.使用數據操縱完成以下任務(每一個任務都要給出SQL語句,並且列出查詢結果)。
(1)在學生表中添加一條學生記錄,其中,學號為0593,姓名為張樂,性別為男,專業班級為電子05。
(2)將所有課程的學分數變為原來的兩倍。
(3)刪除張樂的信息。
3.根據學生作業管理數據庫以及其中的學生表、課程表和學生作業表,進行以下操作。
(1)創建一個電子05的學生視圖(包括學號、姓名、性別、專業班級、出生日期)。
(2)創建一個生物05的學生作業情況視圖(包括學號、姓名、課程名、作業1成績、作業2成績、作業3成績)。
(3)創建一個學生作業平均成績視圖(包括學號、作業1平均成績、作業2平均成績、作業3平均成績)。
(4)修改第2題中生物05的學生作業情況視圖,將作業2成績和作業3成績去掉。
(5)向電子05的學生視圖中添加一條記錄,其中學號為0596,姓名為趙亦,性別為男,專業班級為電子05,出生日期為1986-6-8(除了電子05的學生視圖發生變化之外,看看學生表中發生了什么變化?)。
(6)將電子05的學生視圖中趙亦的性別改為“女”(除了電子05的學生視圖發生變化之外,看看學生表中發生了什么變化?)。
(7)刪除電子05的學生視圖中趙亦的記錄。
(8)刪除電子05的學生視圖(給出SQL語句即可)。
運行結果:
1.使用查詢語句完成以下任務(每一個查詢都要給出SQL語句,並且列出查詢結果)。
(1)查詢與“張志國”同一班級的學生信息(使用連接查詢和子查詢方式)。
連接查詢
select *
from S Student1,S Student2
where Student1.Sclass=Student2.Sclass
and Student2.Sname='張志國';
子查詢
select *
from S
where Sclass in(
select Sclass
from S
where Sname='張志國'
);

(2)查詢比“計算機應用基礎”學時多的課程信息(使用連接查詢和子查詢方式)。
連接查詢
select C2.Ccredit,C2.Chour,C2.Cname,C2.Cno,C2.Cteacher
from C C1,C C2
where C1.Cname='計算機應用基礎'
and C1.Chour<C2.Chour;
子查詢
select C2.Ccredit,C2.Chour,C2.Cname,C2.Cno,C2.Cteacher
from C C2
where C2.Chour>(
select C1.Chour
from C C1
where C1.Cname='計算機應用基礎');

(3)查詢選修課程號為K002的學生的學號、姓名(使用連接查詢、普通子查詢、相關子查詢、使用exists關鍵字的相關子查詢)。
連接查詢
select S.Sno,S.Sname
from S,W
where S.Sno=W.Sno
and W.Cno='K002';
普通子查詢
select S.Sno,S.Sname
from S
where S.Sno in(
select Sno
from W
where W.Cno='K002');
相關子查詢
select x.Sno,x.Sname
from S x
where x.Sno in(
select Sno
from W y
where y.Cno='K002' and
x.Sno=y.Sno);
使用exists關鍵字的相關子查詢
select x.Sno,x.Sname
from S x
where exists(
select Sno
from W y
where y.Cno='K002' and
x.Sno=y.Sno);

(4)查詢沒有選修K001和M001課程的學號、課程號和三次成績(使用子查詢)。
select x.Sno,x.Cno,x.Wn1,x.Wn2,x.Wn3
from W x
where not exists(
select Sno
from W y
where y.Cno='K001'
and x.Sno=y.Sno
or y.Cno='M001'
and x.Sno=y.Sno);
select x.Sno,x.Cno,x.Wn1,x.Wn2,x.Wn3
from W x
where x.Sno not in(
select y.Sno
from W y
where y.Cno in('K001','M001'));

2.使用數據操縱完成以下任務(每一個任務都要給出SQL語句,並且列出查詢結果)。
(1)在學生表中添加一條學生記錄,其中,學號為0593,姓名為張樂,性別為男,專業班級為電子05。
insert
into S(Sno,Sname,Ssex,Sclass)
values( '0593','張樂','男','電子05');

(2)將所有課程的學分數變為原來的兩倍。
update C
set Ccredit=Ccredit*2;

(3)刪除張樂的信息。
delete
from S
where Sname='張樂';

3.根據學生作業管理數據庫以及其中的學生表、課程表和學生作業表,進行以下操作。
(1)創建一個電子05的學生視圖(包括學號、姓名、性別、專業班級、出生日期)。
create view 電子05
as
select S.Sno,S.Sname,S.Ssex,S.Sclass,S.Sbirth
from S
where S.Sclass='電子05';

(2)創建一個生物05的學生作業情況視圖(包括學號、姓名、課程名、作業1成績、作業2成績、作業3成績)。
create view 生物05
as
select S.Sno,S.Sname,C.Cname,W.Wn1,W.Wn2,W.Wn3
from S,W,C
where S.Sclass='生物05'
and S.Sno=W.Sno
and W.Cno=C.Cno;

(3)創建一個學生作業平均成績視圖(包括學號、作業1平均成績、作業2平均成績、作業3平均成績)。
create view 學生作業平均成績
as
select W.Sno,avg(W.Wn1) as Wn1平均成績,avg(W.Wn2) as Wn2平均成績,avg(W.Wn3) as Wn3平均成績
from W
group by W.Sno;

(4)修改第2題中生物05的學生作業情況視圖,將作業2成績和作業3成績去掉。
alter view 生物05
as
select S.Sno,S.Sname,C.Cname,W.Wn1
from S,W,C
where S.Sclass='生物05'
and S.Sno=W.Sno
and W.Cno=C.Cno;

(5)向電子05的學生視圖中添加一條記錄,其中學號為0596,姓名為趙亦,性別為男,專業班級為電子05,出生日期為1986-6-8(除了電子05的學生視圖發生變化之外,看看學生表中發生了什么變化?)。
insert
into 電子05(Sno,Sname,Ssex,Sclass,Sbirth)
values('0596','趙亦','男','電子05','1986-6-8')

(6)將電子05的學生視圖中趙亦的性別改為“女”(除了電子05的學生視圖發生變化之外,看看學生表中發生了什么變化?)。
update 電子05
set Ssex='女'
where Sname='趙亦';

(7)刪除電子05的學生視圖中趙亦的記錄。
delete
from 電子05
where Sname='趙亦';

(8)刪除電子05的學生視圖(給出SQL語句即可)。
drop view 電子05;
五、實驗體會
操作不夠熟練,需要加強練習。
