实验实验  实验一实验一
熟悉SQL SERVER2000 1.在“程序”菜单中寻“Microsoft SQL Server”菜单项。菜单项。
2.如果“Microsoft SQL Server”菜单项下有“服务管理器”,则启动服务管理器,在其界面中启动SQL SERVER 服务。服务。
3.在“Microsoft SQL Server”菜单项下打开“企业管理器”。
4.点击工具栏上的
图标,注册一个SQL SERVER 服务器。服务器。
5.在注册向导的“可用服务器”中选择一个服务器添加到“添加的服务器”中,点击下一步。中,点击下一步。
6.选择“系统管理员分配的SQL Server 登录信息”。
7.填写登录名和密码。填写登录名和密码。
8.不改变默认选项,添加到现有组中。不改变默认选项,添加到现有组中。  9.完成SQL Server 注册。注册。
10.熟悉SQL Server 的使用环境,可以完成简单的建库、建表操作,可查看联机帮助。的使用环境,可以完成简单的建库、建表操作,可查看联机帮助。  11.打开“工具”菜单下的“查询分析器”,可以完成SQL 语句的执行操作。语句的执行操作。
实验二实验二
实验要求:用sql 语句建立如下的表结构并输入数据:语句建立如下的表结构并输入数据:  学生表:student (主键Sno )                    课程表:Course (主键Cno )
学号学号  Sno 姓名姓名  Sname 性别性别  Ssex 年龄年龄  Sage 所在系所在系  Sdept 95001 李勇 男 20 CS  95002 刘晨 女 21 IS  95003 王敏 女 18 MA  95004 张力 男
19
IS
选课表:SC (主键Sno,Cno ,外部键Sno ,Cno ) 学号学号  Sno 课程表课程表  Cno 成绩成绩  Grade 95001 1 92 95001 2 85 95001 3 88 95002 2 90 95002
3
85
6.查询选修了3号课程的学生姓名及成绩,并按成绩降序排序。号课程的学生姓名及成绩,并按成绩降序排序。
实验三实验三
用SQL 语句完成以下的要求(键表及插入数据的SQL 语句见下面): create table student(
Sno char(5) primary key,  Sname char(10),
课程号课程号  Cno 课程名课程名  Cname 先行课先行课  Cpno 学分学分
Ccredit 1 数据库 5 4 2 数学
2 3 信息系统 1 4 4
操作系统 6 3 5 数据结构 7 4 6 数据处理  2 7
PASCAL
语言
6
4
Ssex char(2),  Sage int,
Sdept char(2)); create table Course(
Cno char(1) primary key,  Cname char(20),  Cpno char(1),  Ccredit int); create table SC(  Sno char(5),  Cno char(1),
Grade int,
primary key (sno,cno));
insert into student values('95001','李勇李勇','','','男男',20,'CS'); insert into student values('95002','刘晨刘晨','','','女女',21,'IS'); insert into student values('95003','王敏王敏','','','女女',18,'MA'); insert into student values('95004','张力张力','','','男男',19,'IS'); insert into Course values('1','数据库数据库','5',4); ','5',4); insert into Course values('2','数学数学',NULL,2); ',NULL,2); insert into Course values('3','信息系统信息系统','1',4); ','1',4); insert into Course values('4','操作系统操作系统','6',3); ','6',3); insert into Cour
se values('5','数据结构数据结构','7',4); ','7',4); insert into Course values('6','数据处理数据处理',NULL,2); ',NULL,2); insert into Course values('7','PASCAL 语言语言','6',4); ','6',4); insert into SC values('95001','1',92); insert into SC values('95001','2',85); insert into SC values('95001','3',88); insert into SC values('95002','2',90); insert into SC values('95003','3',85); 1.查询信息系(IS )的所有学生信息)的所有学生信息
select  *
from  Student where    Sdept Sdept ='IS';
2.查询选修了“数学”课的所有学生名单课的所有学生名单
select  * from  Student ,Course ,SC
where  Student .Sno =SC .Sno  And  Course .Cno =SC .Cno  And  Course .Cname ='
数学';
3.查询至少选修了一门其直接先行课为5号课程的学生的姓名。号课程的学生的姓名。sql触发器级联删除
select  Student .Sname from  Student ,Course ,SC
where Student Sno=SC Sno And Course Cno=SC Cno And Course.Cpno='5'
4.查询全体学生的姓名和出生年份。
查询全体学生的姓名和出生年份。
2013--Student.Sage
select sname,2013
from Student
5.查询所有姓王的学生。
查询所有姓王的学生。
select *
from Student
where Sname like '王%';
6.查询选修了3号课程的学生姓名及成绩,并按成绩降序排序。
号课程的学生姓名及成绩,并按成绩降序排序。
select Student.Sname,SC.Grade
from Student,Course,SC
where Student.Sno=SC.Sno and Course.Cno=Sco and courseo='3'
order ade desc
7.查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。
select *
from student
order by sdept, sage desc
8.计算2号课程的平均成绩。
号课程的平均成绩。
select AVG(grade)
from SC
where cno='2';
9.查询选修了2号课程的学生的最高成绩。
号课程的学生的最高成绩。
select MAX(grade)
from SC
where cno='2';
10.求各个课程号及相应的选课人数。
求各个课程号及相应的选课人数。
select cno,COUNT(distinct sno)
from SC
group by cno
11.查询至少选修了3门课程以上的学生序号。
门课程以上的学生序号。
select sno
from SC
group by sno
having COUNT(*)>=3;
12.查询“数据库”的间接先行课。
的间接先行课。
select second.cpno
from Course as first,Course as second
where first cpno=second Cno And first Cname='数据库';
13.查询其他系中比信息系某一学生年龄小的学生的姓名和年龄。
查询其他系中比信息系某一学生年龄小的学生的姓名和年龄。
select distinct first.sname,first.sage
from Student as first, Student as second
where first.Sage<second.Sage and second.Sdept='IS' and first.Sdept!='IS';
14.查询出成绩最低学号最大的学生学号。
查询出成绩最低学号最大的学生学号。
select max(sno)
from SC
where Grade=(
select min(grade)
from SC);
15.查询成绩高于学生平均成绩的记录。
查询成绩高于学生平均成绩的记录。
select first.Grade
from SC as first, SC as second
group by first.Grade
having first.Grade> AVG(second.Grade);
16.查询至少选修了1号课程和3号课程的学生学号。
号课程的学生学号。
(select sno
from SC
where Cno='1')
intersect
(select sno
from SC
where Cno='3');
17.查询只选修了1号课程和3号课程的学生学号。
号课程的学生学号。
select sno
from SC
where Cno='1'and Sno in(
select Sno
from SC
where Cno='2'and Sno in(
select Sno
from SC
group by Sno
having COUNT(sno)=2));
18.查询没有选修1号课程的学生姓名。
号课程的学生姓名。
select sname
from student
where sno in((select sno
from SC)
except  (select  sno from  SC where  Cno ='1'));
19.查询选修了全部课程的学生姓名。查询选修了全部课程的学生姓名。
select  sname from  student where  student .sno  in  (
select  sno from  sc  as  one
where  not  exists (select  * from  SC  as  two where  not  exists (select  * from  SC  as  three where  three .Sno =one .Sno  and  three .Cno =two .Cno )));
20.查询至少选修了95002所选修的全部课程的学生学号。所选修的全部课程的学生学号。
select  distinct  sno from  sc  as  one
where  not  exists (select  * from  SC  as  two where  two .sno ='95002' and  not  exists (select  * from  SC  as  three
where  three Sno =one Sno  and  three Cno =two Cno ));
21.建立信息系学生视图,并从视图中查询年龄最大的学生记录。建立信息系学生视图,并从视图中查询年龄最大的学生记录。
create  view  IS_student 创建视图 as  select  * from  Student where  Sdept ='IS';  select  sno 查询信息 from  IS_student where  sage  in (select  MAX (sage ) from  IS_student );
实验四实验四
实验要求:实验要求:下实验课后交一份实验报告,下实验课后交一份实验报告,下实验课后交一份实验报告,写明本次实验所用的写明本次实验所用的SQL 语句,并给出执行结果。 1.用SQL 语句定义表student(sno,sname,ssex,sage),并加入如下约束:,并加入如下约束:  主键:sno ;sname 有唯一约束;sname,ssex,sage 都不允许空;都不允许空;