数据库 张 上机实验点评及参考答案2014
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上机实验三——基本表的建立和修改
三、实习内容:
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=”李勇”);