《数据库技术与管理实验指导书2013.doc》由会员分享,可在线阅读,更多相关《数据库技术与管理实验指导书2013.doc(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流数据库技术与管理实验指导书2013.精品文档.数据库技术与管理上机实验指导书太原理工大学经济管理学院戴宏一、实验目的数据库技术与管理是研究、解决有效获取数据和处理数据的问题,其主要任务是根据信息处理的要求,通过E-R图方法、概念设计、逻辑设计等能够进行需求分析,运用数据库管理系统完成实际功能设计。上机实验课是本课程重要的教学环节,其目的是通过上机实践,配合课堂教学内容加深对数据库的基本概念和基本技术的理解,使学生掌握基本的数据库实验技能,掌握数据库系统设计的基本思想和基本步骤,熟练掌握关系数据库的标准语言SQL的应用,为学生熟练掌握数据库应用
2、系统的开发打下一个很好的实践基础。二、实验的基本要求1、由指导教师讲清实验基本原理、操作平台、基本操作方法;2、每个学生单独进行实验,记录实验过程和方法;3、对实验过程和方法进行分析并写出实验报告。报告应分析实验结果,讨论实验中的问题。三、实验主要内容序号实验名称目的要求、内容提要1SQL Server管理工具熟悉Sql Server环境下数据库、表的管理2SQL语言(一):基本表的定义、删除、修改,建立和删除索引熟悉利用SQL语言中的DDL来完成基本表的定义、删除、修改,以及对索引的建立和删除3SQL语言(二):查询、数据更新熟悉利用SQL语言来完成查询、数据更新。4SQL语言(三):视图熟
3、悉利用SQL语言进行视图建立和删除。5SQL语言(四): 数据库控制熟悉利用SQL语言进行数据库完整性约束及控制。四、考核方式和成绩评定办法1、实验报告必须包括:实验时间;实验平台;实验内容;操作方法和结果。2、实验考核方式包括:实验操作情况;实验报告内容。3、评分方法:实验结束后由指导老师给出实验成绩,成绩不合格者不能参加结课考试五、实验报告参考格式数据库技术与管理上机实验报告专业: 学号: 姓名: 班级:实验时间实验地点实验内容实验结果实验指导书目录实验一 SQL Server管理工具6实验二 数据定义13实验三 数据更新27实验四 数据查询29实验五 视图35实验六 数据完整性37实验七
4、 数据控制39实验一 SQL Server管理工具一、目的与要求1掌握SQL Server服务器的安装2掌握企业管理器的基本使用方法3掌握查询分析器的基本使用方法4掌握服务管理器的基本使用方法5了解数据库及其对象6. 学会使用SQL Server联机丛书和Transact-SQL帮助二、实验准备1了解SQL Server各种版本安装的软、硬件要求2了解SQL Server支持的身份验证模式3了解SQL Server各组件的主要功能4对数据库、表和数据库对象有一个基本了解5了解在查询分析器中执行SQL语句的方法三、实验内容1安装SQL Server 2000 根据软硬件环境,选择一个合适版本的S
5、QL Server 2000。2利用企业管理器访问系统自带的pubs数据库。(1)启动SQL Server服务管理器。通过“开始=程序=Microsoft SQL Server=服务管理器”打开“SQL Server服务管理器”,启动“SQL Server服务管理器”,并记录当前运行的服务器名。(2)启动企业管理器。通过“开始=程序=Microsoft SQL Server=企业管理器”打开“SQL Server Enterprise Manager”(3)在企业管理器的树形目录中展开数据库,找到pubs并展开,则列出该数据库的所有对象,如表、视图、存储过程、默认和规则等。(4)选中“表”,将
6、列出pubs数据库的所有表(包括系统表和用户表),在此以用户表titles为例,选中该表,单击鼠标右键,弹出快捷菜单,执行“打开表返回所有行”菜单项,打开该表,查看其内容。(5)选中表titles,单击鼠标右键,弹出快捷菜单,执行“设计表”菜单项,查看其结构,并记录该表的结构。(6)用同样的方法查看pubs数据库中的其它用户表,并记录这些表的结构。3利用查询分析器访问系统自带的pubs数据库的表(1)启动SQL Server查询分析器通过“开始=程序=Microsoft SQL Server=查询分析器”打开“SQL Server 查询分析器”,并以系统管理员sa的身份连接到SQL Serve
7、r。(2)使用系统存储过程(sp_tables和sp_help )查看系统自带的pubs数据库中的表titles的结构信息在查询分析器的命令窗口中键入如下SQL批命令:use pubsgosp_tables titlesgosp_help titlesgo按“F5”键执行SQL查询(3)利用SQL命令查看系统自带的pubs数据库中的表titles的行信息select * from titlesgo4在查询分析器中打开“帮助”菜单,使用SQL Server联机丛书和Transact-SQL帮助实验二 数据定义一、目的和要求1了解SQL Server数据库的逻辑结构和物理结构。2了解表的结构特点。
8、3了解SQL Server的基本数据类型。4学会在企业管理器中创建数据库和表。5学会使用T-SQL语句创建数据库和表。二、实验准备1要明确能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。2创建数据库必须要确定数据库名、所有者(即创建数据库的用户)、数据库大小(最初的大小、最大的大小、是否允许增长及增长的方式)和存储数据的文件。3确定数据库包含哪些表以及包含的各表的结构,还要了解SQL Server的常用数据类型,以创建数据库的表。4了解常用的创建数据库和表的方法。三、实验内容设有一学籍管理系统,其数据库名为“STUDENT”,初始大小为 10MB,
9、最大为50MB,数据库自动增长,增长方式是按5比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。数据库的逻辑文件名为“student_data”, 物理文件名为“student_data.mdf。日志文件的逻辑文件名为“student_log”, 物理文件名为“student_log.ldf”。各数据表的结构如下: 表2.1 student表(学生信息表)字段名称类 型宽 度允许空值主 键说 明snochar8NOT NULL是学生学号snamechar8NOT NULL学生姓名sexchar2NULL学生性别nativechar20NULL籍贯birthdaysmalldat
10、e4NULL学生出生日期dnochar6NULL学生所在院系编号(外键)spnochar8NULL专业代码(外键)classnochar4NULL班级号entimesmalldate4NULL学生入校时间homevarchar40NULL学生家庭住址telvarchar40NULL学生联系电话表2.2 course表(课程信息表)字段名称类 型宽 度允许空值主 键说 明cnochar10NOT NULL是课程编号spnochar8NULL专业代码(外键)cnamechar20NOT NULL课程名称ctnotinyint1NULL课程类型编号(外键)experimenttinyint1NULL
11、实验时数lecturetinyint1NULL授课学时semestertinyint1NULL开课学期credittinyint1NULL课程学分表2.3 student_course表(学生选课成绩表)字段名称类 型宽 度允许空值主 键说 明snochar8NOT NULL是学生学号tcidsmallint2NOT NULL是上课编号scoretinyint1NULL学生成绩表2.4 teacher表(教师信息表)字段名称类 型宽 度允许空值主 键说 明tnochar8NOT NULL是教师编号tnamechar8NOT NULL教师姓名sexchar2NULL教师性别birthdaysma
12、lldate4NULL教师出生日期dnochar6NULL教师所在院系编号(外键)pnotinyint1NULL教师职务或职称编号homevarchar40NULL教师家庭住址zipcodechar6NULL邮政编码telvarchar40NULL联系电话emailvarchar40NULL电子邮件表2.5 teacher_course表(教师上课课表)字段名称类 型宽 度允许空值主 键说 明tcidsmallint2NOT NULL是上课编号tnochar8NULL教师编号(外键)spnochar8NULL专业代码(外键)classnochar4NULL班级号cnochar10NOT NUL
13、L课程编号(外键)semesterchar6NULL学期schoolyearchar10NULL学年classtimevarchar40NULL上课时间classroomvarchar40NULL上课地点weektimetinyint1NULL每周课时数四、实验步骤1创建数据库(1) 使用企业管理器创建数据库在Data上点击鼠标右键,选择新建数据库输入数据库名称,并点击数据文件和事务日志选项卡,分别输入相应信息。注意此处的数据库默认存放位置,将其记录下来,在后面事件分析器中使用SQL语句创建数据库时需要用到。点击确定后可以看到在SQL Server的数据库中新增加了student数据库。(2)
14、 使用SQL语句创建数据库CREATE DATABASE studentnewON (NAME=studentnew_data,FILENAME=C:Program FilesSQL ServerMSSQLDatastudentnew_data.mdf ,/*此处的文件位置参考企业管理器创建数据库时默认的文件位置*/SIZE=10MB,MAXSIZE=50MB,FILEGROWTH=5%LOG ON(NAME=student_log,FILENAME= C:Program FilesSQL ServerMSSQLDatastudentnew_log.ldf ,/*此处的文件位置参考企业管理器创
15、建数据库时默认的文件位置*/SIZE=2MB,MAXSIZE=5MB,FILEGROWTH=1MB2. 创建表(1) 使用企业管理器创建表第一步:在student数据库展开点击表,在所有表的展开上点击右键选择新建表第二步:按照要求依次输入student表的列名、数据类型、长度、是否允许空以及对这一列的描述。第三步:点击鼠标右键,将sno设置为主键第四步:将所有列信息输入完成后点击保存,输入文件名。第一张表student创建完成。可以在表展开中查看到新建的表第五步:按照上述方法将其他表新建完成。(2) 使用SQL语句创建表第一步:打开事件分析器,输入SQL语句CREATE TABLE stude
16、ntsnochar(8) PRIMARY KEY, -学号(主键)snamechar (8) NOT NULL,-姓名sexchar(2),-性别nativechar(20),-籍贯birthdaysmalldatetime,-出生日期dnochar(6),-所在院系编号(外键)spnochar(8),-专业代码(外键)classnochar(4),-班级号 entimesmalldatetime,-入校时间 homevarchar (40),-家庭住址 telvarchar (40)-联系电话点击F5运行SQL语句第二步:保存建好的表可以通过SELECT语句查看建好的表第三部:按照上述步骤,
17、建立其他的表CREATE TABLE coursecnochar (10) PRIMARY KEY,-课程编号(主键) cnamechar (20) NOT NULL,-课程名称 spnochar (8),-专业代码 ctnotinyint,-课程类型编号(外键) lecturetinyint,-理论学时 experimenttinyint,-实验时数 semestertinyint,-开课学期 credittinyint-课程学分CREATE TABLE teachertnochar (8) PRIMARY KEY,-教师编号(主键) tnamechar (8) NOT NULL,-教师姓名
18、 sexchar (2),-教师性别 birthdaysmalldatetime,-出生日期 dnochar (6),-所在院系编号(外键) pnotinyint,-职务或职称编号 homevarchar(40),-家庭住址 zipcodechar (6),-邮政编码 telvarchar (40),-联系电话 emailvarchar (40)-电子邮件CREATE TABLE student_course snochar(8),-学生学号 tcidsmallint,-上课编号 scoretinyint ,-学生成绩 PRIMARY KEY sno,-主键 tcid-主键CREATE TAB
19、LE teacher_course tcidsmallint PRIMARY KEY,-上课编号(主键) tnochar (8),-教师编号(外键) spnochar (8),-专业代码(外键) classnochar (4),-班级号 cnochar (10) NOT NULL,-课程编号(外键) semesterchar (6),-学期 schoolyearchar (10),-学年 classtimevarchar(40),-上课时间 classroomvarchar(40),-上课地点 weektimetinyint-每周课时数3. 修改表(1) 使用企业管理器修改表(2) 使用SQL
20、语句修改表ALTER TABLE teacherALTER COLUMN email varchar(50) NULLEXEC sp_rename teacher.email, 电子邮件, COLUMN(3) 使用SQL语句删除表DROP TABLE teacher四、实验作业题1数据库分析(1)创建用于员工考勤的数据库,数据库名为YGKQ, 初始大小为 10MB,最大为50MB,数据库自动增长,增长方式是按5比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。数据库的逻辑文件名和物理文件名均采用默认值。(2)数据库YGKQ包含员工的信息和缺勤类型信息,其YGKQ包含下列2个表:
21、JBQK:员工基本情况表;QQLX:缺勤信息表。各表的结构见表 2.1和表2.2所示:表 2.1 JBQK(员工基本情况表结构)字段名字段类型字段宽度说明员工号姓名缺勤时间缺勤天数缺勤类型缺勤理由CHARCHARDATETIMEINTCHARCHAR48420主键表 2.2 QQLX(缺勤类型信息表结构)字段名字段类型字段宽度说明缺勤类型缺勤名称缺勤描述CHARCHARCHAR4820主键各表的数据内容见表 2.3和2.4所示: 表 2.3 JBQK (员工基本情况记录)职工号姓名缺勤时间缺勤天数缺勤类型缺勤理由001李华2006-09-0331事假002张敏2006-09-1222病假003
22、付丽2006-09-0353旷工004张晓华2006-09-1021事假005邓刚2006-09-1612病假表 2.4 QQLX (缺勤类型信息记录)缺勤类别缺勤名称缺勤描述1事假本人必须提前 1天申请,1-2天由部门准许,2天以上由经理批准2病假1-2天由部门准许,2天以上由经理批准3旷工无故不到者按旷工处理4迟到在规定上班时间 1小时后到岗2在企业管理器中创建和删除数据库和数据表(1)在企业管理器中创建的YGKQ数据库。(2)在企业管理器中删除YGKQ数据库。(3)在企业管理器中分别创建表JBQK和QQLX。(4)在企业管理器删除创建的JBQK和QQLX表。3在查询分析器中创建数据库和数
23、据表 (1)用T-SQL语句创建数据库YGKQ。(2)使用T-SQL语句创建JBQK和QQLX表。实验三 数据更新一、目的和要求1学会在企业管理器中对表进行插入、修改和删除数据操作。2学会使用T-SQL语句对表进行插入、修改和删除数据操作。3了解T-SQL语句对表数据库操作的灵活控制功能。二、实验准备1了解表的更新操作,即数据的插入、修改和删除,对表数据的操作可以在企业管理器中进行,也可以由T-SQL语句实现。2掌握T-SQL中用于对表数据进行插入(INSERT)、修改(UPDATE)和删除(DELETE或TRANCATE TABLE)命令的用法。3了解使用T-SQL语句在对表数据进行插入、修
24、改及删除时,比在企业管理器中操作表数据灵活,功能更强大。三、实验内容1在企业管理器中对数据库student中的表进行插入、删除数据的操作。(1)在企业管理器的树形目录中展开数据库student,找到表并展开,则列出该数据库的所有对象,如表、视图、存储过程、默认和规则等。(2)选中“表”,将列出student数据库的所有表(包括系统表和用户表),在此以用户表student为例,选中该表,单击鼠标右键,弹出快捷菜单,执行“打开表返回所有行”菜单项,打开该表,并向表中录入若干条记录。(3) 在企业管理器中删除数据库student中的表数据。在打开的表student中,选定将要删除的行,单击鼠标右键,
25、弹出快捷菜单,执行“删除”菜单项,在打开的删除对话框中回答“是”。2. 使用SQL语句插入、修改和删除表数据首先启动SQL Server查询分析器,并以系统管理员sa的身份连接到SQL Server。依次执行下列SQL语句:INSERT INTO studentVALUES(02080001,李平,男,江西, 1985-1-2,610000,080605,0201, 2002-9-1,江西省南昌市上海路11,8305670)UPDATE studentSET native=湖南WHERE native=江西DELETE studentWHERE native=湖南四、 附表:表1:studen
26、t学号姓名性别籍贯出生日期所在院系编号专业代码班级号入校时间家庭住址联系电话02080001李平男江西1985-1-261000008060502012002-9-102080002陈蓉女湖南1985-5-2061000008060502012002-9-102080003李勇男广东1985-7-961000008060402032002-9-102080004王敏女山西1986-3-1861000008060402032002-9-102080005张立男江西1987-11-261000008060202022002-9-102080006刘云女辽宁1985-12-3610000080602
27、02022002-9-102080007陈凯男河北1986-2-761000008060502012002-9-102080008张霞女北京1986-7-2361000008060202022002-9-102080009李珊女浙江1986-9-16610000080605020212002-9-1表2:course课程编号专业代码课程名称课程类型编号实验时数授课时数开课学期课程学分H61030006080605数据结构011632二3H61030007080605C语言011648二4H61030008080605编译原理011232一2.5H61030009080605操作系统011232
28、二2.5H61040001080604编译原理A021232二2.5H61040002080604计算机基础021632一3H61050003080602管理信息系统03048二3H61050004080602信息安全03048一3表3:student_course学号上课编号学生成绩02080001175020800021830208000318802080004156020800051790208000616402080007166020800082020800092表4:teacher教师编号姓名性别出生日期所在院系编号职务职称编号住址邮编电话电子邮件101032章向伟男61000011
29、01033马明男6100002101035刘娟女6100002101036王小莉女6100003101038王强男6100004表5:teacher_course上课编号教师编号专业代码班级号课程编号学期学年上课时间上课地点每周课时数11010320806050201H61030006二11010320806050201H61030007二21010320806050201H61030008一11010350806050201H61030009二11010360806040203H61040001二11010380806020202H61050003二五、实验作业题根据某一单位的员工考勤情况,
30、对实验2所创建数据库YGKQ的各表进行数据更新操作。 自己随意编写员工情况,对数据库YGKQ中的各表进行数据的插入、修改和删除至少各5条记录。实验四 数据查询一、目的与要求1掌握SELECT语句的基本语法。2掌握子查询的表示。3掌握连接查询的表示。4掌握SELECT语句的统计函数的作用和使用方法。5掌握SELECT语句的GROUPBY和ORDERBY子句的作用和使用方法。二、实验准备1了解SELECT语句的基本语法格式。2了解SELECT语句的执行方法。3了解子查询的表示方法。4了解SELECT语句的统计函数的作用。5了解SELECT语句的GROUP BY和ORDER BY子句的作用。三、实验
31、内容及步骤首先启动SQL Server查询分析器,并以系统管理员sa的身份连接到SQL Server。以下所有查询都在查询分析器中执行。1. 简单查询SELECT sno,sname,sex,birthday FROM studentSELECT sno,sname,CAST(GETDATE()-birthday AS int)/365 AS age FROM studentSELECT sno,sname,sex,birthdayFROM studentWHERE dno=610000SELECT sno,sname,birthdayFROM student WHERE spno=08060
32、5 AND classno=0201SELECT sno,sname,sex,birthdayFROM studentWHERE birthday1985/01/01SELECT * FROM teacher WHERE pno4SELECT sno,snameFROM studentWHERE sname LIKE 陈%SELECT sno,sname FROM studentWHERE sname LIKE 陈_ _SELECT sno,sname,sex,birthday FROM student WHERE (dno=610000) AND (birthday1985/01/01)SE
33、LECT *FROM studentWHERE native NOT LIKE 江西%SELECT *FROM studentWHERE CAST(GETDATE()-birthday AS int) BETWEEN 6570 AND 7300SELECT sno,sname,sex,spnoFROM studentWHERE spno IN (080604,080605,080602)SELECT sno,sname,sex,birthdayFROM studentORDER BY birthday ASCSELECT sno,sname,sex,birthday,dnoFROM stude
34、ntORDER BY dno,birthday DESCSELECT sno,sname,sex,birthday,dno FROM studentORDER BY 5,4 DESCSELECT DISTINCT nativeFROM studentWHERE dno=610000SELECT sno AS 学号,sname AS 姓名,sex AS 性别 FROM student GoSELECT TOP 3 sno,score FROM student_course WHERE tcid=1 ORDER BY score DESCSELECT COUNT(*) AS 信工学院学生人数 FR
35、OM student WHERE dno=610000SELECT COUNT(*) AS 信工学院女学生人数 FROM student WHERE dno=610000 AND sex=女SELECT AVG(score) AS 平均分,MAX(score) AS 最高分,MIN(score) AS 最低分 FROM student_course WHERE tcid=1SELECT tcid AS 课程号, AVG(score) AS 平均分,MAX(score) AS 最高分,MIN(score) AS 最低分 FROM student_course GROUP BY tcid ORDE
36、R BY AVG(score) DESC2. 连接查询SELECT sno,sname,sex,dname,spname FROM student AS st INNER JOIN department AS dt ON st.dno=dt.dno INNER JOIN speciality AS sp ON st.spno=sp.spnoSELECT sc.sno,sname,spname,scoreFROM student AS st,speciality AS sp,student_course AS sc WHERE sc.tcid=1 AND sc.sno=st.sno AND st
37、.spno=sp.spnoSELECT distinct sno FROM student_course WHERE id=1 or id=2SELECT sno FROM student_course WHERE tcid=1UNION SELECT sno FROM student_course WHERE tcid=2SELECT tno,tname, CAST(GETDATE()-birthday AS int)/365 AS age, professionFROM teacher AS tc,profession AS pfWHERE (tc.pno=pf.pno AND profe
38、ssion=教授) OR (tc.pno=pf.pno AND profession=副教授 )SELECT tno,tname, CAST(GETDATE()-birthday AS int)/365 AS age, profession FROM teacher AS tc,profession AS pf WHERE tc.pno IN (SELECT pno FROM profession WHERE profession=教授 OR profession=副教授) AND tc.pno=pf.pnoSELECT DISTINCT st.sno,sname,dname FROM stu
39、dent AS st,department AS dp, student_course AS sc WHERE st.dno=dp.dno AND st.sno=sc.sno AND score60SELECT sno,sname,dname FROM student AS st,department AS dp WHERE st.sno IN (SELECT DISTINCT sno FROM student_course WHERE score60)AND st.dno=dp.dnoSELECT sc.sno AS 学号,sname AS 姓名,COUNT(*) AS 没有及格的门数 FR
40、OM student_course AS sc,student AS st WHERE score60 AND st.sno=sc.sno GROUP BY sc.sno,snameSELECT sc.sno AS 学号,sname AS 姓名, ame AS 不及格课程 FROM student AS st,student_course AS sc,teacher_course AS tc,course AS crWHERE sc.score60 AND sc.sno=st.sno AND sc.tcid=tc.tcid AND o=oSELECT sc.sno AS 学号,sname AS 姓名,COUNT(*) AS 没有及格的门数 FROM student_course AS sc,student AS st WHERE score1SELECT st.sno,st.sname,ame,