您好,欢迎来到华佗养生网。
搜索
您的当前位置:首页实验交互式SQL实验报告

实验交互式SQL实验报告

来源:华佗养生网


精品文档

试验一

交互式 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)完成各类更新操作(插入数据,修改数据,删除数据) ;

3.3 视图的操作

视图的定义(创建和删除) ,查询,更新(注意更新的条件) 。

3.4 具体操作内容

在 MS SQL Server 中创建学生-课程数据库,要求有学生表( Student)、课程

表 (Course)和选课表( SC),向三个表中分别插入相关数据,再用 SQL 语句完成一下要求的查询。

1.使用 SQL 语言创建下面的三个表。表一:学生信息表( Student)

列名 说明 数据类型 约束

字符串,长度为 10 学号 非空 Sno

字符串,长度为 20 姓名 非空 Sname

字符串,长度为 10 性别 非空 Ssex

字符串,长度为 10 年龄 非空 Sage

字符串,长度为 10 所在系 非空 Sdept

表二:课程信息表( Course)

列 名 说 明 数据类型 约 束 课程号 整形 Cno

字符串,长度为 20 课程名 Cname

先行课 整型 Cpno

学分 整型 Ccredit

表三:学生选课信息表( SC)

.

非空 非空 允许为空

非空

精品文档

数据类型

字符串,长度为 10 学号 Sno

课程号 整型 Cno

字符串,长度为 10 成绩 Grade

2.在以上的三个表中,分别插入下面的数据; 表一:学生信息表( Student)

Sno

Sname

Ssex 男

女 女 男

列名 说明

约束

主码,引用 Student 的外码 主码,引用 Course 的外码

取值 0~100

Sage 20 19 18 19

Sdept CS CS MA IS Ccredit

4 2

李勇 200215121

刘晨 200215122

王敏 200215123

张立 200215125

表二:课程信息表( Course)

Cno Cname

1 2 3 4 5 6 7

Cpno

5

数据库 数学

信息系统 操作系统 数据结构 数据处理 PASCAl 语言

1 6 7

4 3 4 2

6 4

表三:学生选课信息表( SC) Sno Cno 200215121 1 200215121 2 200215121 3 200215122 2 200215122 3

3.根据上面的三种表,写出完成如下查询功能的

(2) 查询选修了课程的学生学号

Grade 92 85 88 90 80

SQL 语句:

(1) 查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示所有系名 (3) 查询年龄在 20~23 岁(包括 20 岁和 23 岁)之间的学生的姓名、系别、年龄 (4) 查询计算机科学系( CS)、数学系( MA )和信息系( IS)学生的姓名和性别 (5) 查询以“ DB_ ”开头,且倒数第 3 个字符为 i 的课程的详细情况

(6) 查询全体学生情况, 查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排

(7) 查询选修 1号课程的学生最高分数、最低分数、平均分数 (8) 查询选修了 3 门课程的学生学号

(9) 查询每一门课的间接先修课(即先修课的先修课) (10) 查询选修 2 号课程且成绩大于等于

90 分的所有学生

(11) 查询与‘刘晨’在同一个系学习的学生

.

精品文档

(12) 查询其他系中比计算机科学系所有学生年龄都小的学生姓名及年龄

(13) 将一个新学生元组(学号: 200215128;姓名:陈冬;性别:男;所在系:IS;年龄:

18 岁)插入到 Student 表中

(14) 将学生 200215121 的年龄改为 22 岁 (15) 删除学号为 200215128 的学生记录 (16) 建立信息系学生的视图

(17) 在信息系学生的视图中找出年龄小于20 岁的学生

(18) 将信息系学生视图 is_Student中学号为 200215122 的学生姓名改为“刘辰”

四 实验报告

4.1 实验环境:

Windows XP

Microsoft SQL server Management Studio 2005

4.2 实验内容与完成情况:

(1) 查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示所有系名

SELECT Sname NAME, 'Year of Birth:'

BIRTH , 2004 - Sage

BIRTHDAY , LOWER( Sdept DEPARTMENT FROM Student;

(2) 查询选修了课程的学生学号

SELECT DISTINCT Sno FROM SC ;

(3)查询年龄在 20~23 岁(包括 20 岁和 23 岁)之间的学生的姓名、系别、年龄

SELECT Sname , Sdept

, Sage FROM Student

WHERE Sage

BETWEEN 20 AND 23 ;

(4)查询计算机科学系( CS)、数学系( MA )和信息系( IS)学生的姓名和性别

SELECT Sname , Ssex FROM Student

WHERE Sdept

IN( 'CS' , 'MA' , 'IS'

);

(5)查询以“ DB_ ”开头,且倒数第

3 个字符为 i 的课程的详细情况

.

)

精品文档

SELECT * FROM Course WHERE Cname LIKE 'DB\\_%__' ESCAPE'\\' ;

(6) 查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列

SELECT * FROM Student

ORDER BY Sdept , Sage

DESC;

(7) 查询选修 1号课程的学生最高分数、最低分数、平均分数

SELECT MAX( Grade ) MAX, MIN ( Grade ) MIN , AVG( Grade ) AVG FROM SC WHERECno = '1' ;

(8) 查询选修了 3 门课程的学生学号

SELECT Sno FROM SC GROUP BY Sno HAVING

COUNT(*)> 3;

(8) )查询每个学生及其选修课程的情况 SELECT Student WHERE Student

. Sno , Sname , Ssex , Sage , Sdept . Sno = SC. Sno ;

, Cno , Grade

FROM Student

, SC

(9) ①查询每一门课的间接先修课(即先修课的先修课) SELECT first WHERE first

. Cno , second . Cpno FROM Course first . Cpno =second . Cno ;

, Course second

②查询每一门课的间接先修课(即先修课的先修课)

SELECT first WHERE first

. Cpno =second . Cno and second

(消除有空的行)

, Course second not

null;

. Cpno is

. Cno , second . Cpno FROM Course first

(10) 查询选修 2 号课程且成绩大于等于 ① select

Student

Student . Sno =SC. Sno

and Cno = '2'

90 分的所有学生

Sdept

>= 90 ;

. Sno , Sname , Ssex , Sage ,

and Grade >= '90' );

from Student , SC where

② select

from Sc

.

Sno , Sname , Ssex , Sage , Sdept where Cno ='2'

and grade

from Student where Sno =( select Sno

精品文档

(11) 查询与‘刘晨’在同一个系学习的学生 ①select

Student

Sno , Sname , Sdept

from Student

where

Sdept

in ( select

Sdept

from

where Sname =' 刘晨 ' );

②select ③select

student

S1 . Sno , S1 . Sname , S1 . sdept from Student S1

, student S2

where

S1 . Sdept =s2 . Sdept and S2 . Sname = ' 刘晨 ' ;

from Student

Sno , Sname , Sdept where Sname =' 刘晨 ' ); Sno , Sname , Sdept

where

Sdept

=( select

Sdept

from

④select

from Student

and S2

S1 where exists ( select * from Student

S2 where S2 . Sdept = S1 . Sdept . Sname = ' 刘晨 ' );

(12)查询其他系中比计算机科学系所有学生年龄都小的学生姓名及年龄 ① selectSname , Sage from Student

where Sage and Sdept where Sage and Sdept

select

Sage

from Student

where Sdept = 'CS' )

<> 'CS' ; <( select <> 'CS' ;

min ( Sage )

from Student

where Sdept ='CS' )

② selectSname , Sage from Student

(13)将一个新学生元组(学号: 18 岁)插入到 Student 表中

insert values

200215128;姓名:陈冬;性别:男;所在系:

IS;年龄:

into Student ( '200215128' * from Student

( Sno , Sname , Ssex , Sdept ,' 陈冬' ,'男' ,'IS' ,'18'

;

, Sage ) );

select

( 14)将学生 200215121 的年龄改为 22 岁

update select

Student

set Sage

;

= '22'

where Sno = '200215121'

;

* from Student

.

精品文档

( 15)删除学号为 200215128 的学生记录

delete from Student where Sno = '200215128' ;

select

* from Student

;

(16)建立信息系学生的视图

create

view is_Student

as

select

Sno , Sname , Sage

from Student

where

Sdept ='IS'

;

(17)在信息系学生的视图中找出年龄小于

20岁的学生

select

Sno , Sage

from is_Student

where Sage < 20 ;

(18 )将信息系学生视图

is_Student 中学号为 200215122 的学生姓名改为“刘辰”

update is_Student set Sname = ' 刘辰 '

where Sno ='200215122' ;

select

* from is_Student

;

(19 )删除信息系学生视图 is_Student

中学号为 200215125

的记录

delete from is_Student

where Sno = '200215125'

;

select

* from is_Student

;

4.3 出现的问题:

在写第( 9)个查询功能的时候用

select first.Cno,second.Cpno from Course first,Course second

where first.Cpno=second.Cno;这句 SQL语句输出的结果中有的课程没有先修课。

4.4 解决方案(列出遇到的问题和解决办法,列出没有解决的问题)

原因:没有排除掉那些没有先修课的课程,所以查询结果中会有空值。 解决方案:这样写就会把没有先修课的课程给排除掉。

.

精品文档

select first.Cno,second.Cpno from Course first,Course second where first.Cpno=second.Cno and second.Cpno is not null;

五 实验感想

通过这次实验课,让我对数据库的书写规范有了更深刻的印象,同时对数据查询,数

据更新,视图的创建、删除、查询、更新有了进一步的了解,对他们的认识不再是那么抽象。现在感觉,理论加实践这种学习方法真的很好,对于巩固知识很有效。

.

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo7.cn 版权所有 湘ICP备2022005869号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务