数据库 张 上机实验点评及参考答案2014 下载本文

上机实验三——基本表的建立和修改

三、实习内容:

1. 启动MSSQL Server服务,打开Enterprise Manager和Query Analyzer。

2. 在Query Analyzer中用CREATE TABLE命令在实验二创建的GradeManager数据

库中定义基本表:学生表(Student)、课程表(Course),利用Enterprise Manager的图形化功能建立班级表(Class)以及成绩表(Grade)。

create table Student ( Sno char(7) primary key , Sname varchar(20) not null , Ssex char(2) not null, Sage Smallint , Clno char(5)not null);

create table Class ( Clno char(5) primary key, Speciality varchar(20) not null, Inyear char(4) not null, Number integer , Monitor char(7) );

create table Course (Cno char(1) primary key, Cname varchar(20) not null, Credit Smallint );

create table Grade

(Sno char(7) references student(sno), Cno char(1) references course(cno), Gmark numeric, Primary key(sno,cno));

四、针对以上四个表,用SQL语言完成以下各项操作。

① 给学生表增加一属性Nation(民族),数据类型为Varchar(20); ② 删除学生表中新增的属性Nation;

③ 向成绩表中插入记录(”2001110”,”3”,80); ④ 修改学号为”2001110”的学生的成绩为70分; ⑤ 删除学号为”2001110”的学生的成绩记录; ⑥ 为学生表创建一个名为IX_Class的索引。 1.

ALTER TABLE Student ADD Nation varchar(20); 2.

ALTER TABLE Student DROP COLUMN Nation; 3.

Insert into grade(sno,cno,gmark) values(‘2001110’,’3’,80)

点评:该语句没有语法错误,但好多同学在执行时出现了问题,是对的。但同学们要知道为什么会出现这个问题。 4.

UPDATE Grade SET Gmark=70 WHERE Sno='2001110'; 5.

DELETE FROM Grade

WHERE Sno='2001110'; 6.

CREATE INDEX IX_Class ON Student(Clno Asc); 7.

DROP INDEX Student.IX_Class; 五、思考题

在定义基本表语句时,NOT NULL参数的使用有何作用?

答:Not Null参数,可以保证在插入数据时,该属性列的取值不为空。

上机实验四——SELECT语句的使用(一)

三、实习内容:

完成以下各项操作的SQL语句: ① 找出所有被学生选修了的课程号; select distinct cno from grade;

该语句实现的路径应该是Grade表, Course表中可能有某门课,一个学生都没有选修的。所以不能是查询Course表的Cno。

② 找出01311班女学生的个人信息; select * from student

where Ssex = '女' and clno = '01311' ;

③ 找出01311班、01312班的学生姓名、性别、出生年份; select Sname,Ssex,2012- Sage as birth from student

where clno = '01311' or clno = '01312'; OR:

select Sname,Ssex,2012- Sage as birth from student

where clno in('01311', '01312'); OR:(在T-SQL中,超大纲了,呵呵)

Select sname,sex,year(getdate())-sage

From student

Where clno in (‘01311’,’01312’);

④ 找出所有姓李的学生的个人信息; select * from student where Sname like '李%';

⑤ 找出学生李勇所在班级的学生人数;

Select count(*) from student

Where clno in (Select clno from student

Where sname=”李勇”);

Or: Select number from class

Where clno in (Select clno from student

Where sname=”李勇”);

Or: Select number from class,student

Where sname=’李勇’ and class.clno=student.clno;

⑥ 找出课程名为操作系统的平均成绩、最高分、最低分;

Select avg(gmark),Max(gmark),Min(gmark) From grade,course

Where cname=”操作系统” and grade.cno=course.cno; Or: Select avg(gmark),Max(gmark),Min(gmark) From grade Where cno=

(Select cno from course where cname=”操作系统”); ⑦ 找出选修了课程的学生人数; select count(distinct Sno) from grade;

⑧ 找出选修了课程操作系统的学生人数。 Select count(sno) From grade Where cno=

(Select cno from course Where cname=”操作系统” );

Or: Select count(sno) From grade,course

Where grade.cno=course.cno and cname=”操作系统”;

(9)找出2000级计算机软件班的成绩为空的学生姓名。

select Sname from Student where Clno in (select Clno from Class