上机实验三——基本表的建立和修改
三、实习内容:
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