實驗五 使用T-SQL語句定義數據、操縱數據

�一.實驗目的:

\1. 掌握使用T-SQL語句創建、修改、打開和刪除數據庫。

\2. 掌握使用T-SQL語句創建、修改和刪除表。

\3. 掌握使用T-SQL語句對錶中的數據進行增刪改。

\4. 掌握使用T-SQL語句創建、修改和刪除視圖。

二.實驗內容:(將所有題寫到實驗報告中)

1.使用T-SQL語句創建數據庫

創建數據庫stuinfo_2,要求:

(1)包含三個數據文件(MF.mdf、F1.ndf、F2.ndf)和兩個日誌文件(L1.ldf、L2.ldf),文件的其他屬性自定義。

(2)F1.ndf和F2.ndf放到自定義的文件組G1中。

(3)數據庫文件存儲到D:\SQLDATA。

2.使用T-SQL語句修改數據庫

   向數據庫stuinfo_2中添加一個文件組G2,再向該文件組中添加一個數據文件F3.ndf,文件的屬性自定義。

3.使用T-SQL語句創建表及約束

(1)在stuinfo庫中創建student_2表,字段及數據類型同student表,另外要求:

①sno列爲主鍵;

②sname取值唯一且可以爲空;

③ssex列的默認值設爲“男”;。

(2)在stuinfo創建score_2表,字段及數據類型同score表,另外要求:

①sno列和cno列的組合爲主鍵;

②degree列的取值在0到100之間;

③sno列爲外鍵,參照student表的sno列;

④cno列爲外鍵,參照course表的cno列。

4.使用T-SQL語句修改表

(1)修改teacher表,向該表中添加一列communist(是否黨員),類型爲邏輯型(bit)。

   (2)修改course表,添加一列cpno(先行課),類型爲char(6),設該列爲外鍵,參照自身表的cno列,添加cname列的值唯一約束。

   (3)刪除teacher表的communist列。

5.使用T-SQL語句操作表中數據

(1)向student表中添加一條記錄s。

(2)將score表的101號學生的3-105課程的成績改爲80。

   (3)刪除student表中姓名是“李強”的學生。

\6. 使用T-SQL語句創建視圖

   (1)創建“95031”班學生的視圖V-student-95031_2。

(2)創建“95031”班學生的選課視圖V-score-95031_2,包括的列爲:學號、姓名、課程名、成績,並使用漢字做列名。

   (3)創建“6-166”課的選課視圖V-score-6-166_2,包括的列爲:課程號、課程名、學號、姓名、成績,並使用漢字做列名。

   (4)創建每個學生平均成績的視圖VS-avgdegree-1_2,包括的列爲:班級、學號、姓名、平均成績,並使用漢字做列名。

(5)創建其平均成績高於等於80分的學生視圖VS-avgdegree-2_2,包括的列爲:班級、學號、姓名、平均成績,並使用漢字做列名。

   (6)創建各門課平均成績的視圖VC-avgdegree_2,包括的列爲:課程號、課程名、平均成績,並使用漢字做列名。

   (7)創建缺考學生的視圖V-student-absent_2,包括的列爲:學號、姓名、課程號、課程名,並使用漢字做列名。

(8)將視圖V-score-6-166_2中的成績都減去5分。

實驗一

create database stuinfo_2 

on primary

(name='MF',

filename='E:\SQLDATA\MF.mdf'

),

filegroup G1

(name='F1',

filename='E:\SQLDATA\F1.ndf'

),

(name='F2',

filename='E:\SQLDATA\F2.ndf'

)

 

log on

(name='L1',

filename='E:\SQLDATA\L1.ldf'

),

(name='L2',

filename='E:\SQLDATA\L2.ldf'

)


GO
實驗二

alter database stuinfo_2

ADD FILEGROUP G2

alter database stuinfo_2

add file

(name='F3',

filename='E:\SQLDATA\F3.ndf'

)

to filegroup G2

go
實驗三

USE stuinfo

create table student_2 

(sno char(5) primary key, 

sname char(10) not null, 

ssex char(2) default '男',

sbirthday nchar(20) not null, sclass char(10) not null,

monitor char(5)  constraint fk_student references student(sno) )

create table score_2 (

Sno char(5) ,

Cno char(6) ,

PRIMARY KEY(Sno,Cno),

FOREIGN KEY(Sno)REFERENCES student(Sno),

FOREIGN KEY(Cno)REFERENCES course(Cno),

degree char (10)check(degree between 0 and 100))

實驗四

alter table teacher

add communist bit null

ALTER TABLE Course ADD cpno char(6)  

ALTER TABLE Course ADD CONSTRAINT cname UNIQUE(cno)

ALTER TABLE Course    

WITH CHECK 

ADD FOREIGN KEY(cpno)

REFERENCES Course(cno)

ALTER table teacher

drop column communist
實驗五

use stuinfo

insert into student (sno,sname,ssex,sbirthday,sclass) values ('111','李強',default,'1998-01-01','95031')

update score set degree=80 where cno='3-105' and sno='101'

delete from student where sname='李強'

7)

create view "V-student-absent_2"

as

select score.sno as '學號', student.sname as '姓名', score.cno as '課程號', course.cname as '課程名'

from score, student, course

where score.degree is null and student.sno = score.sno and score.cno = course.cno

8)

update [V-score-6-166_2] set 成績 = 成績 - 5
實驗六

1)

create view V_student_95031_2 as select * from student

2)

create view "V-score-95031_2" as

select score.sno as '學號',student.sname as '姓名',course.cname as '課程名', score.degree as '成績' 

from score, student, course

where score.sno = student.sno and score.cno = course.cno

3)

create view "V-score-6-166_2" as

select course.cno as '課程號', course.cname as '課程名', student.sno as '學號', student.sname as '姓名', score.degree as '成績'

FROM course, student, score

WHERE dbo.course.cno = '6-166' and course.cno = score.cno and student.sno = score.sno

4)

create view "VS-avgdegree-1_2" as

SELECT dbo.student.sclass AS '班級', dbo.student.sno AS '學號', dbo.student.sname AS '姓名', AVG(dbo.score.degree) AS '平均成績'

FROM dbo.student INNER JOIN

dbo.score ON dbo.student.sno = dbo.score.sno

GROUP BY dbo.student.sclass, dbo.student.sno, dbo.student.sname

5)

create view "VS-avgdegree-2_2" as

SELECT dbo.student.sclass AS 班級, dbo.student.sno AS 學號, dbo.student.sname AS 姓名, AVG(dbo.score.degree) AS 平均成績  FROM   dbo.student INNER JOIN

dbo.score ON dbo.student.sno = dbo.score.sno

GROUP BY dbo.student.sclass, dbo.student.sno, dbo.student.sname

HAVING      (AVG(dbo.score.degree) >= 80)

6) create view "VC-avgdegree_2"  as

SELECT  dbo.course.cno AS 課程號, dbo.course.cname AS 課程名, AVG(dbo.score.degree) AS 平均成績 FROM  dbo.course INNER JOIN dbo.score ON dbo.course.cno = dbo.score.cno

GROUP BY dbo.course.cno, dbo.course.cname
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章