• 领导讲话
  • 自我介绍
  • 党会党课
  • 文秘知识
  • 转正申请
  • 问题清单
  • 动员大会
  • 年终总结
  • 工作总结
  • 思想汇报
  • 实践报告
  • 工作汇报
  • 心得体会
  • 研讨交流
  • 述职报告
  • 工作方案
  • 政府报告
  • 调研报告
  • 自查报告
  • 实验报告
  • 计划规划
  • 申报材料
  • 当前位置: 勤学考试网 > 公文文档 > 工作总结 > 正文

    实验二 交互式SQL实验报告

    时间:2020-09-01 08:11:44 来源:勤学考试网 本文已影响 勤学考试网手机站

    试验一 交互式SQL

    一 实验目的

    1.熟悉数据库的交互式SQL工具。

    2.熟悉通过SQL对数据库进行操作。

    .完成作业的上机练习。3二 实验工具SQL Server 2005

    利用SQL Server 2005及其交互式查询来熟悉SQL语句。

    三 实验内容和要求

    1.在SQL Server 2005中建立一个数据库,进行实验所要求的各种操作,所有的SQL操作均在建立的新库里进行;

    2.根据以下要求认真填写实验报告,记录所有的实验用例的SQL语言;

    3.1 数据定义

    (1)熟悉基本表的创建、修改及删除。

    (2)熟悉索引的创建和删除。

    3.2 数据操作

    (1)完成各类查询操作(单表查询,连接查询,嵌套查询)等;

    ;)完成各类更新操作(插入数据,修改数据,删除数据)(23.3 视图的操作

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

    3.4 具体操作内容

    在MS SQL Server中创建学生-课程数据库,要求有学生表(Student)、课程表(Course)和选课表(SC),向三个表中分别插入相关数据,再用SQL语句完成一下要求的查询。

    1.使用SQL语言创建下面的三个表。

    表一:学生信息表(Student)

    列名

    说明

    数据类型

    约束

    Sno

    学号

    字符串,长度为10

    非空

    Sname

    姓名

    字符串,长度为20

    非空

    Ssex

    性别

    字符串,长度为10

    非空

    Sage

    年龄

    字符串,长度为10

    非空

    Sdept

    所在系

    字符串,长度为10

    非空

    表二:课程信息表(Course)

    列 名

    说 明

    数据类型

    约 束

    Cno

    课程号

    整形

    非空

    Cname

    课程名

    字符串,长度为20

    非空

    Cpno

    先行课

    整型

    允许为空

    Ccredit

    学分

    整型

    非空

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

    精选资料,欢迎下载

    列名

    说明

    数据类型

    约束

    Sno

    学号

    字符串,长度为10

    Student的外码主码,引用

    Cno

    课程号

    整型

    的外码主码,引用Course

    Grade

    成绩

    字符串,长度为10

    0~100 取值

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

    Sno

    Sname

    Ssex

    Sage

    Sdept

    200215121

    李勇

    20

    CS

    200215122

    刘晨

    19

    CS

    200215123

    王敏

    18

    MA

    200215125

    张立

    19

    IS

    Course)表二:课程信息表(

    Cno

    Cname

    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

    2

    85

    200215121

    3

    88

    200215122

    2

    90

    200215122

    3

    80

    语句:根据上面的三种表,写出完成如下查询功能的SQL3. (1)查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示所有系名 (2)查询选修了课程的学生学号 23岁)之间的学生的姓名、系别、年龄岁(包括20岁和查询年龄在(3)20~23 )学生的姓名和性别MA)和信息系(IS(4) 查询计算机科学系(CS)、数学系( i个字符为的课程的详细情况(5) 查询以“DB_”开头,且倒数第3查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序(6)

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

    (9) 查询每一门课的间接先修课(即先修课的先修课) 90号课程且成绩大于等于分的所有学生2(10) 查询选修 查询与‘刘晨'在同一个系学习的学生(11)

    精选资料,欢迎下载

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

    (13) 将一个新学生元组(学号:200215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中

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

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

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

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

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

    四 实验报告

    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;

    1号课程的学生最高分数、最低分数、平均分数(7)查询选修 SELECT MAX(Grade) MAX,MIN(Grade) MIN,AVG(Grade) AVG FROM SC WHERE Cno='1';

    3门课程的学生学号(8)查询选修了 SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*)>3;

    查询每个学生及其选修课程的情况 )(8)SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student,SC

    WHERE Student.Sno=SC.Sno;

    ①查询每一门课的间接先修课(即先修课的先修课)(9)SELECT first.Cno,second.Cpno FROM Course first,Course second

    WHERE first.Cpno=second.Cno;

    ②查询每一门课的间接先修课(即先修课的先修课)(消除有空的行)SELECT first.Cno,second.Cpno FROM Course first,Course second

    WHERE first.Cpno=second.Cno and second.Cpno is not null;

    分的所有学生2号课程且成绩大于等于90(10) 查询选修①Student.Sno=SC.Sno

    where from Sdept Student ,SC Student.Sno,Sname,Ssex,Sage, select

    and Cno='2' and Grade>=90;

    ②select Sno,Sname,Ssex,Sage, Sdept from Student where Sno=(select Sno from Sc where

    Cno='2' and grade >='90'); 精选资料,欢迎下载

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

    ①select Sno,Sname,Sdept from Student where Sdept in (select Sdept from Student where

    ');

    刘晨Sname='②and

    S1.Sdept=s2.Sdept S2 where select S1.Sno,S1.Sname,S1.sdept from Student S1,student

    ';

    刘晨S2.Sname='③select Sno,Sname ,Sdept from Student where Sdept =(select Sdept from student where

    ');

    Sname='刘晨④select Sno,Sname,Sdept from Student S1 where exists (select * from Student S2 where

    ');

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

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

    where Sage <all(select Sage from Student where Sdept='CS')

    and Sdept<>'CS';

    ②select Sname ,Sage from Student

    where Sage <(select min(Sage) from Student where Sdept='CS')

    and Sdept<>'CS';

    ;年龄:;姓名:陈冬;性别:男;所在系:200215128IS(13)将一个新学生元组(学号: Student表中18岁)插入到insert into Student(Sno,Sname,Ssex,Sdept,Sage)

    ','IS','18'); 男values ('200215128','陈冬','select * from Student;

    岁200215121)将学生的年龄改为2214(update Student set Sage ='22' where Sno='200215121';

    select * 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;

    五 实验感想

    通过这次实验课,让我对数据库的书写规范有了更深刻的印象,同时对数据查询,数据更新,视图的创建、删除、查询、更新有了进一步的了解,对他们的认识不再是那么抽象。

     现在感觉,理论加实践这种学习方法真的很好,对于巩固知识很有效。

     精选资料,欢迎下载

    Welcome !!!

    欢迎您的下载,资料仅供参考!

    精选资料,欢迎下载

    相关热词搜索: 实验报告 实验 报告 SQL

    • 考试时间
    • 范文大全
    • 作文大全
    • 课程
    • 试题
    • 招聘
    • 文档大全

    推荐访问