《实验交互式SQL实验报告.pdf》由会员分享,可在线阅读,更多相关《实验交互式SQL实验报告.pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品文档 试验一交互式 SQL 一实验目的 1 熟悉数据库的交互式 SQL 工具。2熟悉通过 SQL 对数据库进行操作。3完成作业的上机练习。二 实验工具 SQL Server 2005 利用 SQL Server 2005及其交互式查询来熟悉 SQL 语句 三实验内容和要求 1.在 SQLServer 2005 中建立一个数据库,进行实验所要求的各种操作,所 有的SQL 操作均在建立的新库里进行;2.根据以下要求认真填写实验报告,记录所有的实验用例的 SQL 语言;3.1 数据定义(1)熟悉基本表的创建、修改及删除。(2)熟悉索引的创建和删除。3.2 数据操作(1)完成各类查询操作(单表查询
2、,连接查询,嵌套查询)等;(2)完成各类更新操作(插入数据,修改数据,删除数据);3.3 视图的操作 视图的定义(创建和删除),查询,更新(注意更新的条件)。3.4 具体操作内容 在 MS SQL Server中创建学生课程数据库,要求有学生表(Studen)课程 表(Course 和选课表(SC),向三个表中分别插入相关数据,再用 SQL 语句完成一 下要求的查询。1使用 SQL 语言创建下面的三个表 表一:学生信息表(Student)列名 说明 数据类型 约束 Sno 学号 字符串,长度为 10 非空 Sn ame 姓名 字符串,长度为 20 非空 Ssex 性别 字符串,长度为 10 非
3、空 Sage 年龄 字符串,长度为 10 非空 Sdept 所在系 字符串,长度为 10 非空 表二:课程信息表(Course)列名 说明 数据类型 约束 Cno 课程号 整形 非空 Cn ame 课程名 字符串,长度为 20 非空 Cpno 先行课 整型 允许为空 Ccredit 学分 整型 非空 精品文档 表三:学生选课信息表(SC)精品文档 列名 说明 数据类型 约束 Sno 学号 r 字符串,长度为 10 主码,引用 Student 的外码 Cno 课程号 整型 主码,引用 Course 的外码 Grade 成绩 r 字符串,长度为 10 取值 0100 2在以上的三个表中,分别插入下
4、面的数据;表一:学生信息表(Student)Sno Sn ame Ssex Sage Sdept 200215121 李勇 男 20 CS 200215122 刘晨 女 19 CS 200215123 王敏 女 18 MA 200215125 张立 男 19 IS 表二:课程信息表(Course)Cno Cn ame Cpno Ccredit 1 数据库 5 4 2 数学 2 3 信息系统 1 4 4 操作系统 6 3 5 数据结构 7 4 6 数据处理 2 7 PASCAl 语言 6 4 表三:学生选课信息表(SC)Sno Cno Grade 200215121 1 92 200215121
5、 2 85 200215121 3 88 200215122 2 90 200215122 3 80 3.根据上面的三种表,写出完成如下查询功能的 SQL 语句:(1)查 询 全 体 学 生 的 姓 名、出 生 年 份 和 所 在 的 院 系,要 求 用 小 写 字 母 表 示 所 有 系 名(2)查询选修了课程的学生学号(3)查 询 年 龄 在 2 0 2 3 岁(包 括 2 0 岁 和 2 3 岁)之 间 的 学 生 的 姓 名、系 别、年 龄(4)查 询 计 算 机 科 学 系(C S)、数 学 系(M A)和 信 息 系(I S)学 生 的 姓 名 和 性 别(5)查 询 以“D B
6、_”开 头,且 倒 数 第 3个 字 符 为i的 课 程 的 详 细 情 况(6)查询全体学生情况,查询结果按所在系的系号升序排列,同 一 系 中 的 学 生 按 年 龄 降 序 排 列(7)查询选修 1 号课程的学生最高分数、最低分数、平均分数(8)查询选修了 3 门课程的学生学号(9)查询每一门课的间接先修课(即先修课的先修课)(10)查询选修 2 号课程且成绩大于等于 90 分的所有学生(11)查询与刘晨在同一个系学习的学生(12)查询其他系中比计算机科学系所有学生年龄都小的学生姓名及年龄 精品文档 (13)将一个新学生元组(学号:200215128;姓名:陈冬;性别:男;所在系:IS;
7、年龄:18 岁)插入到 Student 表中(14)将学生 200215121 的年龄改为 22 岁(15)删除学号为 200215128 的学生记录(16)建立信息系学生的视图(17)在信息系学生的视图中找出年龄小于 20 岁的学生(18)将信息系学生视图 is_Student 中学号为 200215122 的学生姓名改为“刘辰”四实验报告 4.1 实验环境:Win dows XP Microsoft SQL server Man ageme nt Studio 2005 4.2 实验内容与完成情况:(1)查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示所有系名 SELECT S
8、name NAME,Year of Birth:BIRTH,2004-Sage BIRTHDAY,LOWER Sdept)DEPARTMENT FROM Stude nt;NAME BIRTH BIRTHDAY DEPARTMENT 1 Year of Birth:.E 1984 CS 2 刘晨 Year of Birth:1%5 cs 3 王魏 Year of Birth:19BG ma 张立 Year of Birth:1385 is (2)查询选修了课程的学生学号 SELECT DISTINCT Sno FROM SC;Sho 1 200 21_5121_ I 2 200215122(3
9、)查询年龄在 2023 岁(包括 20 岁和 23 岁)之间的学生的姓名、系别、年龄 SELECT Sname,Sdept,Sage FROM Student WHERE Sage BETWEEN 20 AND 23 Sname Sdept Sage 1 i李勇ECS 20 (4)查询计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名和性别 SELECT Sname,Ssex FROM Student WHERE Sdept IN(CS,MA,IS);Ssex.1 淳勇*h n H vi ra rm n ra is Ilf 2 刘晨 女 3 王敏 女 4 张立 第 (5)查询以“D
10、B_”开头,且倒数第 3 个字符为 i 的课程的详细情况 精品文档 select from Sc Sno,Sname,Ssex,Sage,Sdept from Student where Cno=2 and grade=90);where Sno=(select Sno SELECT*FROM Course WHERE Cname LIKE DB_%_ ESCAPE、;Cno Cname Cpno Cciedit(6)查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列 SELECT*FROM Student ORDER BY Sdept,Sage DESC;Sno
11、Shame Ssex Sage Sdept 1 200215121|李勇 男 20 CS 2 200215122 刘晨 女 19 cs 3 200215125 张立 19 IS 4 200215123 王敏 18 MA 查询选修1 号课程的学生最高分数、最低分数、平均分数 SELECT MAX(Grade)MAX,MIN(Grade)MIN,AVG(Grade)AVG FROM SC WHERECno=1 MAX M.AVG 1 适S2 92(8)查询选修了 3 门课程的学生学号 SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*)3;Sno(8)查询
12、每个学生及其选修课程的情况 SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROMStudent,SC WHEREStudent.Sno=SC.Sno;Sno Sname Ssex Sage Sdept Cno Grade 1;200215121|李更 20 CS 1 92 2 200215121 李奧 20 CS 2 85 3 200215121 男 20 cs 3 B8 4 200215122 刘晨 女 19 cs 2 30 5 200215122 刘晨 女 19 cs 3 80 (9)查询每一门课的间接先修课(即先修课的先修课)SE
13、LECT first.Cno,second.Cpno FROM Course first,Course second WHEREfirst.Cpno=second.Cno;查询每一门课的间接先修课(即先修课的先修课)(消除有空的行)SELECT first.Cno,seco nd.Cp no FROM Course first.Cpno is Course sec ond not n ull;90 分的所有学生 Student.Sno,Sname,Ssex,Sage,Sdept.Sno=SC.Sno and Cno=2 and Grade=90;(10)查询选修 2 号课程且成绩大于等于 se
14、lect from Student,SC where Stude nt 精品文档 Sno Shame Ssot Sage Sdept 1 2M215122 I lj晨 女 19 CS ikuuiHiuiHiaiiaiaiiuiaiaiuiaiiJ(11)查询与刘晨在同一个系学习的学生 select Sno,Sname,Sdept from Student where Sdept in(select Student where Sname=刘晨);select S1.Sno,S1.Sname,S1.sdept from Student S1,student S2 51.Sdept=s2.Sdep
15、t and S2.Sname=刘晨;select Sno,Sname,Sdept from Student where Sdept=(select student where Sname=文刘晨);select Sno,Sname,Sdept from Student S1 where exists(select 52 where S2.Sdept=S1.Sdept and S2.Sname=刘晨);Sno Snarrw Sdept 3M215121 i李勇 CS 2 200215122 划晨 CS (12)查询其他系中比计算机科学系所有学生年龄都小的学生姓名及年龄 select Sname,
16、Sage from Stude nt where Sage all(select Sage from Stude nt where Sdept=CS)and Sdept CS;select Sname,Sage from Stude nt where Sage(select min(Sage)from Student where Sdept=CS and Sdept CS;Sname Sage i is(13)将一个新学生元组(学号:200215128;姓名:陈冬;性别:男;所在系:18 岁)插入到 Student 表中 insert into Student(Sno,Sname,Ssex,S
17、dept,Sage)values(200215128,陈冬,男,IS,18);select*from Sno Stude nt;Shame Ssex Sage Sdept 4_ 200215121|李勇 畀 20 CS 2_ 200215122 刘晨 女 19 CS 3 _ 200215123 王敏 女 ia MA 4 200215125 张立 男 19 IS 5 2DO21512E 陈冬 男 ia IS (14)将学生 200215121 的年龄改为 22 岁 update Student set Sage=22 where Sno=200215121 select*from Student
18、;Sno Sname Sx Sage Sdept 1 BIMIBIHUIBIUIBIIUUI&!B 200215121 李勇 22 CS 2 200215122 女 19 CS 3 200215123 王敏 女 18 MA 4 200215125 张立 19 IS 5 200215128 陈冬 18 IS Sdept from where Sdept from from Stude nt IS;年龄:精品文档 (15)删除学号为 200215128 的学生记录 delete from Stude nt where Sno=200215128 select*from Sho Stude nt;S
19、dept Sname Sage 1 j 200215121 i李勇 再 22 CS 2 200215122 刘晨 女 19 OS 3 20D215123 王敏 女 IB MA 4 200215125 张立 19 IS (16)建立信息系学生的视图 create view is_Student as select Sno,Sname,Sage from Student where Sdept=IS;Sno Snarrte Sage 卜|200215125 张立 19 来 NULL (17)在信息系学生的视图中找出年龄小于 20 岁的学生 update is_Student set Sname=刘
20、辰where Sno=200215122 select*from is_Student;Sno Snarre Ssex Sage Sdep 1 200215121 22 CS 2 200215122 刘辰 女 19 CS 3 200215123 王敏 女 18 MA A 200215125 卑 19 IS (19)删除信息系学生视图 is_Student 中学号为 200215125 的记录 delete from is_Stude nt where Sno=200215125;select*from is_Student Sno Sname Ssex Sage Sdept 1;2002151
21、21 I李勇 22 CS 2 200215122 刘辰 女 19 CS 3 200215123 王锁 18 MA 4.3 出现的问题:在写第(9)个查询功能的时候用 select first.C no,sec on d.Cp no from Course first,Course sec ond where first.Cp no=sec on d.C no;这句SQL 语句输岀的结果中有的课程没有先修课。4.4 解决方案(列出遇到的问题和解决办法,列出没有解决的问题)原因:没有排除掉那些没有先修课的课程,所以查询结果中会有空值。解决方案:这样写就会把没有先修课的课程给排除掉。select first.Cno,second.Cpno from Course first,Course second where first.Cpno=second.Cno and sec on d.Cp no is not n ull;精品文档 五实验感想 通过这次实验课,让我对数据库的书写规范有了更深刻的印象,同时对数据查询,数 据更新,视图的创建、删除、查询、更新有了进一步的了解,对他们的认识不再是那么抽象。现在感觉,理论加实践这种学习方法真的很好,对于巩固知识很有效。
限制150内