SQL Server 2008 實驗報告 - 第五次實驗報告
阿新 • • 發佈:2018-11-03
實驗五
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。
CREATE DATABASE stuinfo_2
ON
PRIMARY
(
Name = stuinfo_2_1,
Filename = 'D:\SQLDATA\MF.mdf'),
FILEGROUP G1
(
Name = stuinfo_2_2,
Filename = 'D:\SQLDATA\F1.ndf'),
(
Name = stuinfo_2_3,
Filename = 'D:\SQLDATA\F2.ndf')
LOG ON
(
Name = stuinfo_2_Log_1,
Filename = 'D:\SQLDATA\L1.ldf'),
(
Name = stuinfo_2_Log_2,
Filename = 'D:\SQLDATA\L2.ldf')
2.使用T-SQL語句修改資料庫
向資料庫stuinfo_2中新增一個檔案組G2,再向該檔案組中新增一個數據檔案F3.ndf,檔案的屬性自定義
ALTER DATABASE stuinfo_2 ADD FILEGROUP G2;
ALTER DATABASE stuinfo_2 ADD FILE
(
Name = stuinfo_2_4,
Filename = 'D:\SQLDATA\F3.ndf')
TO FILEGROUP G2;
```sql USE stuinfo; CREATE TABLE student_2 ([sno] [CHAR](5) CONSTRAINT pk_sno PRIMARY KEY, [sname] [CHAR](10) CONSTRAINT uq_sname UNIQUE, [ssex] [CHAR](2) CONSTRAINT def_ssex DEFAULT '男', [sbirthday] [datetime], [sclass] [char](10) ); sp_help student_2; # 檢視新建表的結構 ```
USE stuinfo;
ALTER TABLE course ADD CONSTRAINT pr_cno PRIMARY KEY (cno); # 需要先對 course 表進行修改
CREATE TABLE score_2 ([sno] [CHAR](5),
[cno] [CHAR](6),
[degree] [float](8),
CONSTRAINT pk_sno_cno PRIMARY KEY(sno, cno),
CHECK(degree >= 0 AND degree <= 100),
FOREIGN KEY (sno) REFERENCES student(sno),
FOREIGN KEY (cno) REFERENCES course(cno)
)
sp_help student_2; # 檢視新建表的結構
ALTER TABLE teacher ADD communist BIT;
sp_help teacher; # 檢視修改後表的結構
ALTER TABLE course ADD cpno CHAR(6) FOREIGN KEY REFERENCES course(cno);
ALTER TABLE course ADD CONSTRAINT un_cname UNIQUE (cname);
sp_help course; # 檢視修改後表的結構
(3)刪除teacher表的communist列。
ALTER TABLE teacher DROP COLUMN communist; # 不附截圖
5.使用T-SQL語句操作表中資料
(1)向student表中新增一條記錄(’111’,’李強’,default,’1998-01-01’,’95031’)。
(2)將score表的101號學生的3-105課程的成績改為80。
(3)刪除student表中姓名是“李強”的學生。
INSERT INTO student VALUES ('111', '李強', default, '1998-01-01', '95031');
UPDATE score SET degree = '80' WHERE sno = '101' AND cno = '3-105';
# 檢視修改後結果
SELECT * FROM student WHERE sno = '111';
SELECT degree FROM score WHERE sno = '101' AND cno = '3-105';
# 刪除‘李強’
DELETE FROM student WHERE sname = '李強'; # 刪除不附截圖
6.使用T-SQL語句建立檢視
(1)建立“95031”班學生的檢視V-student-95031_2。
CREATE VIEW V_student_95031_2 AS
SELECT * FROM student WHERE sclass = '95031'; # 不附截圖
(2)建立“95031”班學生的選課檢視V-score-95031_2,包括的列為:學號、姓名、課程名、成績,並使用漢字做列名。
CREATE VIEW V_score_95031_2 AS
SELECT sno AS '學號', sname AS '姓名', cname AS '課程名', degree AS '成績' FROM student, score, course WHERE sclass = '95031' AND student.sno = score.sno AND score.cno = course.cno;
sp_help V_score_95031_2; # 檢視
CREATE VIEW V_score_6_166_2 AS
SELECT course.cno AS '課程號', cname AS '課程名', student.sno AS '學號', sname AS '姓名', degree AS '成績' FROM student, score, course WHERE score.cno = '6-166' AND student.sno = score.sno AND score.cno = course.cno;
sp_help V_score_6_166_2; # 檢視
CREATE VIEW VS_avgdegree_1_2 AS
SELECT sclass AS '班級', student.sno AS '學號', sname AS '姓名', AVG(degree) AS '平均成績' FROM student, score WHERE student.sno = score.sno GROUP BY student.sno, sclass, sname;
sp_help VS_avgdegree_1_2; # 檢視
CREATE VIEW VS_avgdegree_2_2 AS
SELECT sclass AS '班級', student.sno AS '學號', sname AS '姓名', AVG(degree) AS '平均成績' FROM student, score WHERE student.sno = score.sno GROUP BY student.sno, sclass, sname HAVING AVG(degree) > '80';
sp_help VS_avgdegree_2_2; # 檢視
CREATE VIEW VS_avgdegree_2 AS
SELECT course.cno AS '課程號', course.cname AS '課程名', AVG(degree) AS '平均成績' FROM score, course WHERE course.cno = score.cno GROUP BY course.cno, course.cname;
sp_help VS_avgdegree_2; # 檢視
CREATE VIEW V_student_absent_2 AS
SELECT student.sno AS '學號', sname AS '姓名', course.cno AS '課程號', course.cname AS '課程名' FROM score, course, student WHERE degree is null AND course.cno = score.cno AND student.sno = score.sno;
sp_help V_student_absent_2; # 檢視
UPDATE V_score_6_166_2 SET '成績' = '成績' - '5';
SELECT * FROM V_score_6_166_2; # 顯示修改後的結果