《SQL实验的题目和答案全解》由会员分享,可在线阅读,更多相关《SQL实验的题目和答案全解(21页珍藏版)》请在金锄头文库上搜索。
1、 数据库实验总汇二、使用SQL Server 工具在管理数据库系统和运行SQL查询的两个主要工具是企业管理器和查询分析器三、实验目的 1 熟悉数据库的交互式SQL工具。 2 熟悉通过SQL对数据库进行操作。 3 完成上机练习。四、实验内容 (打为选做题)Part A1使用CREATE语句创建数据库2. 使用CREATE语句创建基本表3更改基本表的定义,增加列,修改列的数据类型。4创建表的索引,取消表的索引1、数据库的建立 使用SQL 语句建立关系数据库schooldemo2、基本表的建立在数据库schooldemo下,使用SQL 语句建立关系数据库表:人员表PERSON(Pno,Pname,
2、Page),房间表ROOM(Rno,Rname,Rarea),表PR(Pno,Rno,Date).其中,表PERSON :Pno(CHAR(8),主码,非空,唯一),Pname(CHAR(20),非空),Page(INT);表ROOM:Rno(CHAR(8),主码,非空,唯一),Rname(CHAR(20),Rarea(FLOAT(10);表PR:Pno(CHAR(8),非空,唯一),Rno(CHAR(8),非空,唯一),Date(DATETIME);(三个表之间有联系)3、更改基本表的定义,增加列,删除列,修改列的数据类型。更改表PERSON,增加属性Ptype(类型是CHAR ,长度为10
3、),把表ROOM中的属性Rname的数据类型改为长度为40。4、创建表的索引,取消表的索引为ROOM表创建按Rno降序排列的索引创建PERSON表按Pname升序排列的唯一性索引取消PERSON表Pname升序索引5、删除表ROOM实验过程(1.a)1、数据库的建立 使用SQL 语句建立关系数据库schooldemocreate database schooldemoon(name=schooldemo,filename=e:123school_data.mdf,size=5mb,maxsize=15mb,filegrowth=10%)log on (name=schooldemo_log,f
4、ilename=e:123schooldemo.ldf,size=5mb,maxsize=15mb,filegrowth=4mb)2、基本表的建立在数据库schooldemo下,使用SQL 语句建立关系数据库表:人员表PERSON(Pno,Pname, Page),房间表ROOM(Rno,Rname,Rarea),表PR(Pno,Rno,Date).其中,表PERSON :Pno(CHAR(8),主码,非空,唯一),Pname(CHAR(20),非空),Page(INT);表ROOM:Rno(CHAR(8),主码,非空,唯一),Rname(CHAR(20),Rarea(FLOAT(10);表P
5、R:Pno(CHAR(8),非空,唯一),Rno(CHAR(8),非空,唯一),Date(DATETIME);(三个表之间有联系)create table person(pno char (8)primary key,pname char (20),page int);create table room(rno char (8) primary key,rname char(20),rarea float(10);create table pr(pno char (8),rno char (8),date datetime,primary key(pno,rno),foreign key(pn
6、o) references person(pno),foreign key(rno) references room(rno);3、更改基本表的定义,增加列,删除列,修改列的数据类型。更改表PERSON,增加属性Ptype(类型是CHAR ,长度为10),把表ROOM中的属性Rname的数据类型改为长度为40。alter table person add ptype char(10);alter table room alter column rname char (40);4、创建表的索引,取消表的索引为ROOM表创建按Rno降序排列的索引创建PERSON表按Pname升序排列的唯一性索引取
7、消PERSON表Pname升序索引create index rorno on room(rno desc);create unique index pepname on person(pname asc);drop index person.pepname5、删除表ROOMdrop table room(要先删约束条件)Part B对School 数据库为例,在该数据库中存在四张表格,分别为:l 表STUDENTS(sid,sname,email,grade);l 表TEACHERS(tid,tname,email,salary);l 表COURSES(cid,cname,hour);l 表C
8、HOICES(no,sid,tid,cid,score)。在数据库中,存在这样的关系:学生可以选择课程。在表CHOICES中保存学生的选课记录。要求对数据库进行查询操作:(1) 查询年级为2001的所有学生的名称并按照编号升序排列(2) 查询学生的选课成绩合格的课程的成绩,并把成绩换算成为积点(60分对应积点为1分,每增加1分,积点增加0.1)(3) 查询课时是48或64的课程的名称(4) 查询所有课程记录中含有data的课程编号(5) 查询所有选课记录的课程号(要求不重复显示)(6) 统计所有老师的平均工资(7) 查询所有教师的编号及选修其课程的学生的平均成绩,按平均成绩降序排列(8) 统计
9、各个课程的选课人数和平均成绩(9) 查询至少选修了三门课程的学生编号(10)查询编号800009026的学生所选的全部课程的课程名和成绩(11)查询所有选了database的学生的编号(12)求出至少被两个学生选修的课程编号(13)查询选修了编号800009026的学生所选的某个课程的学生编号(14)查询学生的基本信息及选修课程编号和成绩(15)查询学号850955252的学生的姓名和选修的课程名称及成绩(16)查询与学号850955252的学生同年级的所有学生资料(17)查询所有有选课的学生的详细信息(18)查询没有学生选的课程的编号(19)查询选修了课程名为C+的学生学号和姓名(20)找出
10、选修课程成绩最好的选课记录。(21)找出和课程UML或课程C的课时一样的课程名称(22)查询所有选修编号10001的课程的学生的姓名(23)查询选修了所有课程的学生姓名(24)利用集合运算,查询选修课程C+或课程Java的学生的学号(25)利用集合交运算,查询既选修课程C+又选修课程Java的学生的学号(26)利用集合减运算,查询选修课程C+而没有选修课程Java的学生的学号实验过程(1.b)(1)查询年级为2001的所有学生的名称并按照编号升序排列Select snamefrom studentswhere grade=2001order by sid;(2)查询学生的选课成绩合格的课程的成
11、绩,并把成绩换算成为积点(60分对应积点为1分,每增加1分,积点增加0.1)Select cid,score,1+0.1*(score-60) jidianfrom choiceswhere score=60;(3)查询课时是48或64的课程的名称select cnamefrom courseswhere hour=48or hour=64;(4)查询所有课程记录中含有data的课程编号select cidfrom courseswhere cname like%data%;(5)查询所有选课记录的课程号(要求不重复显示)select distinct cidfrom choices;(6)统
12、计所有老师的平均工资select avg(salary)from teachers;(7)查询所有教师的编号及选修其课程的学生的平均成绩,按平均成绩降序排列 答案:(241917)select tid,avg(score)from choicesGROUP BY tid ,cidorder by avg(score) desc;(8)统计各个课程的选课人数和平均成绩select cid,count(distinct sid),avg(score)from choicesgroup by cid;(9)查询至少选修了三门课程的学生编号select sidfrom choicesgroup by
13、sidhaving count(cid)=3;或having count(*)2;(10)查询编号800009026的学生所选的全部课程的课程名和成绩select distinct cname ,scorefrom courses,choiceswhere sid=800009026and courses.cid=choices.cid;(11)查询所有选了database的学生的编号select sidfrom choices ,courseswhere cname=databaseand choices.cid=courses.cid;(12)求出至少被两个学生选修的课程编号select
14、cidfrom choicesgroup by cidhaving count(distinct sid)=2;(13)查询选修了编号800009026的学生所选的某个课程的学生编号 答 案:(16481)select distinct sidfrom choices where cid in (select cidfrom choiceswhere sid=800009026)and sid800009026;(14)查询学生的基本信息及选修课程编号和成绩select students.sid,sname,email,grade,cid,scorefrom students,choiceswhere students.sid=choices.sid;(15)查询学号850955252的学生的姓名和选修的课程名称及成绩select sname,cname,scorefrom students,courses,choiceswhere choices.sid=850955252and students.sid=choices.sid andcourses.cid