实验五 使用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

你可能感兴趣的:(实验五 使用T-SQL语句定义数据、操纵数据)