实验报告
2012-2013学年第2学期
科目名称:
指导老师: 数据库管理 杨名念 班 级: 信管1102班 学 号: 11415400216 姓 名: 姚岸
湖南工业大学 财经学院
【实验名称】:熟悉SQL Server 2000常用工具的使用
【实验日期】:20xx年5月6日
【实验目的】:
1. 熟悉SQL Server 2000服务管理器的启动方法。
2. 熟悉SQL Server 2000常用工具的使用。
【实验内容及要求】:
1.
2.
3.
4.
5.
6.
7. 练习SQL Server 2000服务器的启动方式。 打开企业管理器,观察企业管理器的各个组成部分,练习有关的操作。 打开查询分析器,观察查询分析器的组成部分,练习有关的操作。 练习SQL Server 2000的联机丛书的使用,并使用联机丛书学习自己感兴趣的知识。 在企业管理器中新建SQL Server注册。 练习SQL Server 2000的数据导入/导出操作。 练习使用企业管理器进行“新建数据库”、“附加数据库”等操作。
【实验步骤】:
1. 方法一:
使用SQL Server 服务管理器启动数据库服务器,停止按钮,然后刷新,服务管理器就处于点击停住状态,点击开始/继续按钮,然后点击刷新服务按钮,服务管理器又处于运行状态。
方法二:
使用“管理工具”中的“服务”启动数据库服务器“服务”中服务状态刚开始处于已启动状态:点击服务状态下的停止按钮,服务状态就处于已停止状态;重新点击启动,服务状态就又处于已启动状态。
方法三:
使用企业管理器启动数据库服务器从开始菜单中打开企业管理器;在local图标处右击鼠标,点击停止,在点击菜单栏中的刷新按钮,服务器就处于停止状态;同样的,再点击local,点击启动,刷新,服务器就又处于启动状态。
2. 企业管理器的主菜单中有操作、查看和工具3个选择项,能够新建、删除对象、刷新窗口和执行任务;选择“查看”项,能够改变企业管理器窗口的外观;选择“工具”项,能够在它的子菜单中进一步选择SQL Server 200 的工具和向导。
启动数据库服务软件SQL Server 2000:在程序菜单中选择Microsoft SQL Server ,再选中服务管理器,点击服务管理区后,出现SQL Server服务管理器,点击“开始/继续”按钮,启动SQL Server 2000数据库服务,接着会有启动成功的标志出现;在SQL Server 2000中建立数据库,再选中企业管理器,点击企业管理器,出现企业管理器的主界面,点击左边树状控制栏的+/-号可以打开和关闭SQL Server组中的本地服务项目,在选中数据库服务项目后,单击鼠标右键,出现数据库的菜单,点击新建数据库,出现新建数据库窗口,输入数据库名称:如Test ,点击数据文件选项卡,在数据文件中,你可以设定数据文件的名称,所在目录以及文件的大小等信息,完成后点击事务日志选项卡,
事务日志中,你可以设定日志文件的名称,所在目录以及文件的大小等信息,接受系统的缺省值,点击确定按钮,完成数据库的新建。
3.查询分析器的主要作用是编辑Transant-SQL,将其发送到服务器,并将执行结果及分析显示出来(或进行存储)。查询分析功能主要是通过测试查询成本,判断该查询是否需要增加索引以提高查询速度,并可以实现自动建立索引的功能。在查询生成器中的左边窗口是对象浏览器,其中按树形结构列出了数据库对象;右上方是SQL代码区域,用于输入SQL的查询语句;右下方为结果区,用于显示查询结果和分析结果。对于TSQL语言的其执行结果,在结果区中可以有四种不同的输出形式:标准执行将结果直接显示的结果区;网状执行将结果以表格的形式显示的结果区;计划执行显示执行计划;索引分析为在结果区中显示查询的索引情况。
4. 访问联机丛书:
方法一:
从“开始”菜单—点击“开始”,依次指向“所有程序”、Microsoft SQL Server 2005、“文档和教程”,然后单击“SQL Server 联机丛书”。
方法二:
从SQL Server Management Studio-在“帮助”菜单上,依次单击“如何实现”、“搜索”、“目录”、“索引”或“帮助收藏夹”。
方法三:
从SQL Server Business Intelligence Development Studio-在“帮助”菜单上依次单击“如何实现”、“搜索”、“目录”、“索引”或帮助文件夹“。
5. 打开企业管理器,右键点击SQL server组,点击新建SQL server注册,弹出窗口后,点击下一步:
第二个页面需要在左边“可选服务器”填写其它数据库的IP地址,点击添加到右边,下一步:
第三个页面要看你是否需要密码验证,上面是不需要验证,下面按钮需要填写数据库登录密码
点击下一步:该写密码的写,不写就下一步,只到完成,,会提示注册成功。
6. 导入和导出数据是通过一个向导程序“数据转换服务”实现,其作用是使SQL Server与任何OLE DB、ODBC、JDBC或文本文件等多种不同类型的数据库之间实现数据传递。
数据转换服务向导的最常见的应用为:实现SQL Server 2000数据与桌面数据库系统Acess或Foxpro等的数据传递;将查询结果转换为文本文件;在大型数据库间实现迁移数据库;在其他大型数据库系统间传递数据库等。
以导入数据为例:
在“对象资料管理器”里,右击你要导入导出数据的数据库,选择“任务”里的导入数据; 选择后,会出现一个界面,选择数据源,数据源就表示你要从哪个数据库导入数据,然后点“下一步”;
当出现界面时,目标数据,目标表示你需要导入到哪个数据库,如果是远程数据库,同样直接输入IP地址,然后用SQL身份验证。和数据源操作差不多。
点下一步后,会出现一个界面,默认就是第一个选项,直接点“下一步”。
点了下一步后,就会出现另一个界面,在你需要导入的表前面打上钩,在目标里就会有相应的数据库,如果他没有在目标库里找到表,就会自动新建个表。
同时在选择表后,点击下面的“编辑映射”里,可以指定源表和目标表对应的字段,如果你有的字段不需要导入,那你只要在目标字段里选择“忽略”就可以了,选择好后,点“确定”,再点下一步,就完成了。
7. 新建数据库:
(1) 从“开始”菜单中选择:程序->Microsoft SQL Server 2000->企业管理器;
(2)在企业管理器中,选中需要在其上创建数据库的服务器,单击前面的“+”号,使其展示为树形目录;
(3)选中“数据库”文件夹,单击鼠标右键,在弹出的菜单上选择“新建数据库”:
(4)选择则数据文件选项卡,输入相应要求;
(5)单击【确定】按钮,关闭对话框。在企业管理器窗口出现相应的新建数据库名称,则表明建库工作已经完成。
附加数据库:
(1) 点击屏幕右下角状态栏SQL服务图标,选择停止SQL服务;
(2) 打开SQL Server的企业管理器,在“数据库”上点击右键——>“所有任务”
——>“附加数据库”选中你的数据文件附加;
(3) 选屏幕右下角,SQL服务,重新运行SQL服务,数据库就可以使用了。
【自己的体会和收获】:
通过第一次上机操作,对于SQL Server 2000的接触,已经熟练掌握了SQL Server 2000服务管理器的启动方法,利用它能进行一些简单的操作(如:如何打开查询分析器、如何导入导出数据等),我想本次实验的基础性操作是为我们以后学习和使用计算机打下基础,所以要多进行这些基础性操作才能学得更好。
【实验名称】:创建表以及简单的查询操作
【实验日期】:20xx年5月20日
【实验目的】:
1. 掌握SQL Server 2000中创建表的操作过程。
2. 掌握使用标准SQL创建和删除数据表。
3. 掌握简单的SELECT命令的用法。
【实验内容及要求】:
1. 通过企业管理器UI界面和SQL命令两种方式创建表。
2. 通过企业管理器UI界面和SQL命令两种方式删除表。
3. 通过查询分析器进行简单的SELECT命令的测试。
a) SELECT子句的用法
b) FROM子句的用法
c) WHERE子句的用法
d) ORDER BY子句的用法
【实验步骤】:
1. 从企业管理器中建表的话考虑到兼容性的问题,可以先选中一个表,然后右击点击新建 必须先选中一个表;
创建完成后,不要点关闭,要点工具栏左上角的保存按钮,然后就好了或是从查询分析器里建个简单的表,然后去企业管理器里修改。
2. 通过企业管理器的SQL命令,进入相应的位置,在表名上点击右键,选中清除,再点击左键即可。
3. SELECT语句的语法格式为:
SELECT <目标列组>
FROM <数据源>
[WHERE <元组选择条件> ]
[GROUP BY <分列组> [HAVING <组选择条件> ]]
[ORDER BY <排序列1> <排序列2> [,?n]];
(a) SELECT子句用于指明查询结果集的目标列。目标列可以是直接从数据源中投影得到的
字段、与字段相关的表达或数据统计的函数表达式,目标列还可以是常量。如果目标列中使用了两个基本表(或视图)中相同的列名,则要在列名前加表名限定,即使用“<表名>.<列名>”表示。
(b) FROM 子句用于指明查询的数据源。查询操作需要的数据源指基本表(或视图表)组,
表间用“,”分割。如果查询使用的基本表或视图表不在当前数据库中,还需要在表或视图前加数据库名加以说明,即使用“<数据库名>.<表名>”的形式表示。如果在查询中需要一表多用,则每种使用都需要一个表的别名标识,并在各自使用中用不同的表别名表示。定义表别名的格式为“<表名>.<别名>”。
(c) WHERE 子句通过条件表达式描述关系中元组的选择条件。DBMS处理语句时,按元组
为单位,逐个考察每个元组是否满足条件,将不满足条件的元组筛选掉。
(d) ORDER BY子句的作用是对结果集进行排序。查询结果集可以按多个排序列进行排序,
每个排序列后都可以跟一个排序要求:当排序要求为ASC时,元组按排序列值的升序排序;排列要求为DESC时,结果集的元组按排序列值的降序排列。
【自己的体会和收获】:
本次实验是对于SQL Server 2000服务管理器学习的进一步加深,我们了解到了如何创建和删除数据表,能够进行简单的SELECT命令的操作。
在本次实验中我们是运用书本和上机相结合,我们通过上机既验证了书本上对于某些操作的实现,同时也学会了自己对于SELECT语句的编写,是一次将复习与学习相结合的过程。
【实验名称】:SELECT命令进阶
【实验日期】:20xx年5月27日
【实验目的】:
1. 掌握多表连接查询的使用。
2. 掌握嵌套查询的使用。
3. 掌握分组统计查询的使用。
【实验内容及要求】:
已知有如下关系模式
S (Sno, Sname, Age, Dept) 依次表示:学号,姓名,年龄,所在系
C (Cno, Cname, Ch, Pcno) 依次表示:课程号,课程名,学分,先行课 SC (Sno, Cno, Score) 依次表示:学号,课程号,成绩
1. 查询学号为98001的同学选修过的课程的课程号
2. 查询李四所有选修的课程的成绩
3. 查询所有存在不及格科目的同学的学号、姓名、所在系,并按所在系升序及学号升
序排序。
4. 查询没有选修任何课程的学生的学号和姓名
5. 查询所有选修了大学计算机基础这门课程的学生的学号和姓名
6. 查询没有选修微积分这门课程的所有学生的学号、姓名
7. 统计大学计算机基础这门课程的最高分
8. 统计所有学生的平均分
9. 查询选修了大学计算机基础这门课程并且其成绩低于该门课程平均成绩的所有学
生的学号和姓名
10. 统计年龄在18岁以上(含18岁)选修了4门功课及以上的所有学生的学号和姓名
【实验步骤】:
1. SELECT CNO FROM SC
WHERE SNO='98001';
2. SELECT SCORE FROM S,SC
WHERE S.SNO=SC.SNO AND SNAME='李四';
3.SELECT S.SNO,SNAME,DEPT FROM S,SC
WHERE S.SNO=SC.SNO AND SCORE<60
ORDER BY DEPT ,S.SNO ;
4. SELECT SNO ,SNAME
FROM S
WHERE SNO NOT IN
(SELECT DISTINCT SNO
FROM SC);
5.SELECT S.SNO ,SNAME
FROM S,C,SC
WHERE S.SNO=SC.SNO AND C.CNO=SC.CNO AND CNAME='大学计算机基础';
6. SELECT DISTINCT S.SNO,SNAME
FROM S,C
WHERE CNAME!='微积分';
7. SELECT MAX(SCORE)
FROM C,SC
WHERE C.CNO=SC.CNO AND CNAME='大学计算机基础';
8. SELECT S.SNO,SNAME, AVG(SCORE)
FROM SC,S,C
WHERE S.SNO=SC.SNO AND C.CNO=SC.CNO
GROUP BY S.SNO,SNAME;
9. SELECT S.SNO,SNAME
FROM S,C,SC
WHERE S.SNO=SC.SNO AND C.CNO=SC.CNO AND CNAME='大学计算机基础'AND SCORE<(SELECT AVG(SCORE)
FROM C,SC
WHERE C.CNO=SC.CNO AND CNAME='大学计算机基础'
GROUP BY S.SNO,SNAME);
10. SELECT SNO,SNAME
FROM S
WHERE AGE>=18 AND SNO IN (
SELECT SNO
FROM SC
GROUP BY SNO HAVING COUNT(*)>=4);
【自己的体会和收获】:
通过多表连接查询、嵌套查询、分组统计查询的使用,对于SQL查询分析器的使用更加熟练,加深了对SQL和Trabsact-SQL语言的查询语句的理解;熟练掌握简单表的数据查询、数据排序和数据连接查询的操作。
通过本次实验课自己的亲身上机操作,对于SQL的查询使用不再只存留在理解方面,我学会了自己编辑查询语言,同时通过SQL查询分析器可以检验所编辑语言的正确性,当所查询结果为题目所要求时,可以收获一份快乐。
【实验名称】:标准SQL的插入、修改、删除命令
【实验日期】:20xx年6月3日
【实验目的】:
1.
2.
3.
4. 掌握INSERT INTO命令的用法。 掌握UPDATE 命令的用法。 掌握DELETE 命令的用法。 了解SELECT ? INTO命令的用法
5. 【实验内容及要求】:给定数据库JX。
数据插入:
1. 向学生表加入一条记录,其学号、姓名、性别和系别分别为:(’06011’,’王文
娟’,’女’,’计算机’);
2. 向学生表加入一条记录,其姓名、性别和系别分别为:(’王 娟’,’女’,’计算
机’),观察运行结果;
3. 创建一个与学生信息表结构完全相同的基本表CP_Student,用以存储计算机和外
国语系学生信息;
4. 将Student中计算机系和外国语系的学生信息插入到CP_Student;
数据修改:
1. 把教师“王芳”改为“王芳龄”;
2. 将职称是副教授的教师工资提高2%;
3. 将计算机系和外国语系学生的考试成绩分别下调4%和增加2分;
4. 把李强同学的所有分数都加1分;
5. 选做题:对课程表中的学分进行修改,修改方式为:学分低于3分的加0.4分,高
于3分的减去0.5分,3分的加0.2分;
数据删除:
1. 删除06011号同学的基本信息;
2. 删除CP_Student中87年(包括87年)以前出生同学的信息;
3. 删除CP_Student中的所有记录;
【实验步骤】:
数据插入:
1. INSERT
INTO STUDENT(SNO,SNAME,SSEX,SDEPT)
VALUES('06011','王文娟','女','计算机')
2. INSERT
INTO STUDENT(SNAME,SSEX,SDEPT)
VALUES('王文娟','女','计算机');
3. SELECT SNO,SNAME,SSEX,SBIRTH,SDEPT,TOTAL
INTO CP_STUDENT
FROM STUDENT
WHERE SDEPT='计算机'OR SDEPT='外国语';
4. INSERT INTO CP-STUDENT
FROM STUDENT
SELECT *
FROM STUDENT
WHERE SDEPT=‘计算机’OR SDEPT=‘外国语’;
数据修改:
1. UPDATE TEACHER
SET TNAME='王芳龄'
WHERE TNAME='王芳';
2. UPDATE TEACHER
SET TPAY=TPAY*1.02
WHERE TPROF='副教授';
3. (1) UPDATE SC
SET GRADE=GRADE*0.96
WHERE SNO IN (
SELECT SNO
FROM STUDENT
WHERE SDEPT='计算机');
(2)UPDATE SC
SET GRADE=GRADE+2
WHERE SNO IN(
SELECT SNO
FROM STUDENT
WHERE SDEPT='外国语';
4. UPDATE SC
SET GRADE=GRADE+1
WHERE SNO IN(
SELECT SNO
FROM STUDENT
WHERE SNAME='外国语';
5. UPDATE COURSE
SET CREDIT=(
CASE
WHEN CREDIT<3 THEN CREDIT+0.4
WHEN CREDIT>3 THEN CREDIT-0.5
WHEN CREDIT=3 THEN CREDIT+0.2
END
);
数据删除:
1. DELETE
FROM STUDENT
WHERE SNO=’06011’;
2. DELETE
FROM CP_STUDENT
WHERE SBIRTH<87;
3. DELETE
FROM CP_STUDENT
【自己的体会和收获】:
通过学习书本上的数据更新语句,再通过上机的验证,更加熟练的掌握了数据更新中的插入(INSERT)、修改(UPDATE)、删除(DELETE)。
在练习题目的过程中,我们认识到对于程序的编写不能仅仅的照搬书本,我们要学会灵活的运用自己所学知识,同时在书写语句时我们要细心,不能漏掉字母等。我想多注意细节,多练习,我们对于SQL的学习会更好。