《数据库原理及应用》实验指导书.doc_第1页
《数据库原理及应用》实验指导书.doc_第2页
《数据库原理及应用》实验指导书.doc_第3页
《数据库原理及应用》实验指导书.doc_第4页
《数据库原理及应用》实验指导书.doc_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验1 初识SQL Server 2000【实验目的】1熟悉实验机房对SQL Server 2000实验环境的设置、学会独立使用该系统;2熟悉SQL Server 2000中企业管理器和查询分析器两个常用管理工具;【实验内容】1.练习启动、停止和暂停服务管组件的服务,了解SQL Server2000中包括的服务器组件,掌握服务管理器和使用。2.练习Microsoft SQL Server Enterprise Manager的使用。3.练习Microsoft SQL 查询分析器的使用。【实验准备】1.复习与本次实验内容相关知识2.对本次实验中要求自己完成的部分做好准备 【实验步骤】1练习启动、停止和暂停服务管组件的服务,了解SQL Server2000中包括的服务器组件,掌握服务管理器和使用。1)启动SQL Server服务2)停止SQL Server服务2练习Microsoft SQL Server / Enterprise Manager打开Microsoft SQL Server / Enterprise Manager观察SQL Server 组下已经建立的服务器组1)打开其中的一个服务器,观察其中的文件夹2)打开“数据库”文件夹,观察已经建立的数据库3)打开其中的某一个数据库,观察其中的内容4)打开“安全性”文件夹,进入“登录”,观察可以登录该服务器的用户及其属性。3练习Microsoft SQL 查询分析器打开Microsoft SQL查询分析器,在窗口中输入SELECT * FROM Products并单击(或按F5)执行查询,认识查询分析器的命令操作方式【分析与回答】1SQL Server 2000中包含哪些组件,其功能各是什么?SQL Server 2000提供了9种功能强大、容易操作的管理工具,以方便用户进行图形化界面向导或脚本方式的管理操作。其中最重要的工具有服务管理器、企业管理器、查询分析器和导入导出数据工具,利用它可以完成以下任务:管理服务器、设计与创建数据库、查询数据。如图所示。1 服务管理器SQL Server服务管理器用于启动、暂停、继续和停止SQL Server 数据库服务器的实时工具,是在服务器端实际工作时最有用的实用程序,是其他管理工具工作的基础。SQL Server服务管理器提供的服务主要包括以下4种基本服务。(1)SQL Server服务:数据库引擎,主要负责协调和执行客户对数据库的所有服务请求指令;管理分布式数据库,保证数据的一致性和完整性;对数据加锁、实施并发控制等。在计算机上运行的每个SQL Server实例都有一个SQL Server服务。(2)SQL Server Agent服务:自动化引擎,提供SQL Server的调度服务,通过对它的配置和使用,用户可以实现对数据库的定时、自动管理。在计算机上运行的每个SQL Server实例都有一个SQL Server代理服务。(3)MS DTC服务:分布事务协调员,管理分布式事务,它允许客户的应用程序在一个事物中对分布在多个服务器上的数据源进行操作。不论计算机上有多个SQL Server实例,都只有一个服务。(4)Microsoft Search服务:是一个可选的组件,实现全文检索引擎。不论计算机上有多个SQL Server实例,都只有一个服务。.2 企业管理器企业管理器是SQL Server 2000中最重要的管理工具,是Microsoft管理控制台(MMC的管理单元组件。通过易于使用的图形用户界面,将所有SQL Server对象展显在一个分层结构的控制台树中。操作如下:单击“开始”“程序”“Microsoft SQL Server”“企业管理器”,打开企业管理器,如图所示。企业管理器可以完成几乎所有的管理工作,主要包括以下功能:(1)注册和管理SQL Server服务;(2)连接、启动、暂停或停止SQL Server服务;(3)创建和管理数据库;(4)创建和管理各种数据库对象,包括表、视图、存储过程、触发器、角色、规则、默认值、用户自定义数据类型、用户自定义函数以及全文目录;(5)备份数据库和事务日志,数据库复制,设置任务调度;(6)让管理者进行警报设置,提供跨服务器的拖放操作;(7)管理用户账户,编写和执行Trasact-SQL语句,管理和控制SQL Mail。3 查询分析器查询分析器是一个可以交互执行SQL语句和脚本的图形化工具,主要用于输入、执行和保存Transact-SQL语句,并可迅速查看Transact-SQL语句运行结果,以分析和处理数据库中的数据。另外,通过其中的对象浏览工具,还能像企业管理器一样,浏览数据库中的所有对象。用户可以选择“开始”“程序”“Microsoft SQL Server”“查询分析器”命令,或者在企业管理中,选择“查看”“SQL查询分析器”打开查询分析器,如图所示。3 导入和导出数据工具导入和导出数据工具对数据库而言,是一个重要的工具向导,利用它可以便捷地实现SQL Server与其它数据库系统间的数据转换。SQL Server 2000利用“DTS导入/导出向导”数据转换服务支持在异构数据源之间的数据导入和导出,从而实现Excel、Foxpro、Access等格式数据和SQL Server数据得转换。2画出SQL Server Enterprise Manager控制台目录结构?答:3DBMS的作用是什么?SQL Server 2000的体系结构是怎样的? dbms是一个数据库管理系统,它由以下几个模块组成 1)数据定义 有DDL翻译处理程序(包括外模式、模式、存储模式处理程序)、保密定义处理程序(如授权定义处理程序)、完整性约束定义处理程序等。这些程序接收相应的定义,进行语法、语义检查,把它们翻译为内部格式存储在数据字典中。DDL翻译程序还根据模式定义负责建立数据库的框架(即形成一个空库),等待装入数据。 2)数据操纵 有DML处理程序、终端查询语言解释程序、数据存取程序、数据更新程序等。DML处理程序或终端查询语言解释程序对用户数据操纵请求进行语法、语义检查,有数据存取或更新程序完成对数据库的存取操作。 3)数据库运行管理 有系统初启程序,负责初始化DBMS,建立DBMS的系统缓冲区,系统工作区,打开数据字典等等。还有安全性控制,完整性检查、并发控制、事务管理、运行日志管理等程序模块,在数据库运行过程中监视着对数据库的所有操作,控制管理数据库资源,处理多用户的并发操作等。它们一方面保证用户事务的正常运行及其原子性,一方面保证数据库的安全性和完整性。 4)数据库组织、存储和管理 有文件读写与维护程序、存取路径(如索引)管理程序、缓冲区管理程序(包括缓冲区读、写、淘汰模块),这些程序负责维护数据库的数据和存取路径,提供有效的存取方法。 5)数据库建立、维护和其他实验2 数据库创建与管理【实验目的】1熟练掌握SQL Server Enterprise Manager 创建和管理数据库;2熟练掌握使用SQL语句创建和管理数据库【实验内容】1利用企业管理器创建和管理数据2使用SQL语句管理器创建和管理数据【实验准备】1. 复习与本次实验内容相关知识2. 对本次实验中要求自己完成的部分做好准备 【实验步骤】1、利用企业管理器创建和管理数据库(1) 创建数据库展开服务器组,然后展开服务器右击数据库,然后单击新建数据库命令键入新数据库的名称student,同时用指定的数据库名student作为前缀创建主数据库和事务日志文件,例如:student_Data.mdf 和 student_Log.ldf要更改新建主数据库文件的默认值,单击常规选项卡。若要更改新建事务日志文件的默认值,单击事务日志选项卡”, 要更改文件名、位置、初始大小(MB)和文件组等列的默认值,单击要更改的适当单元格,再键入新值。要指定文件增长方式和文件大小按界面提示选择相应的项。(2) 删除数据库选择student数据库,右击鼠标选择“删除”命令即可。2、 使用SQL语句管理器创建和管理数据(1)创建SPJ数据库:打开查询分析器,输入以下语句并运行create database spj on (name = spj_data, filename = c:program filesmicrosoft sql servermssqldataspj_data.mdf , size = 2, maxsize = 10, filegrowth = 10%) log on (name = spj_log, filename = c:program filesmicrosoft sql servermssqldataspj_log.ldf , size = 1, filegrowth = 10%)(2)修改spj数据库:在查询分析器中输入以下语句并运行(了解)alter database spjmodify file(name=spj_data, size=3,maxsize=unlimited)alter database spj add file(name=spj_data_2, filename=c:program filesmicrosoft sql servermssqldataspj_date_2.ndf,size=1, maxsize=10, filegrowth=10%)(3)删除spj数据库: drop database spj 53实验3 表的创建与修改【实验目的】1.学会使用企业管理器创建和修改表结构 2.学会使用查询分析器 3.学会使用SQL语句创建和修改表结构【实验内容】1使用企业管理器建立和修改班级表、成绩表 2使用查询分析器建立和修改课程表、学生表【实验准备】1复习与本次实验内容相关知识2对本次实验中要求自己完成的部分做好准备 【实验步骤】1.用企业管理器建立学生表 启动企业管理器(使用上次实验建立的帐号注册连接服务器) 展开服务器(下图中(LOCAL)-展开数据库-展开自己学号所对应的数据库(下图中的5102201101在实验中应为你的学号)。 在表上右击,在快捷菜单中单击新建表.,如下图所示 在表结构窗口内建立如下图所示的班级表(ID含义为班号,NAME含义为班名,DEPARTMENT含义为所在 系,各字段类型及是否允许为空按图中设置),如下图所示,左侧三角形标志为当前列,下方的列属性即为该列的。 在第一行上右击,在弹出的快捷菜单中单击设置主键,如下图所示, 则ID字段被设置为主键,在ID列属性中将标识改为:是,则ID字段在新增行时,从标识种子(当前为1)开始,逐行以标识递增量(当前为1)自动递增(即此列在新增行时不用输入数据而自动生成)。 要插入和删除列,请使用类似方法-在快捷菜单中使用插入列(M)和删除列(D)。 并在工具栏上单击保存图标,在弹出的保存对话框中输入U_CLASSES,单击确定,然后关闭表结构设计窗口 依照上面设计学生表的步骤,设计如下图所示的成绩表(STUDENT_ID含义为学号,COURSE_ID含义为课程号,SCORE为成绩,各字段类型 和是否允许为空,按图中设置),表名保存为U_SCORES(注意设置主键时,先按住Shift,分别单击第一、第二行 左侧-选中这两行,再右击,在快捷菜单单击中设置主键-该操作可设置和取消主键)。 关闭表设计窗口。 2用企业管理器修改表 如果要修改表,请展开你的数据库,单击其下的表 在右边的窗格中,找到要修改的表,在其上右击 在弹出的快捷菜单中,单击设计表(S)则打找开表设计窗口进行修改,具体如下图所示 3用SQL语句建立班级表、课程表 依照启动企业管理器的方法,启动查询分析器,在连接到SQL Server对话框中,设置SQL Server(S)为local,选择SQL Server身份验证,在登录名中输入你的学号,密码中输入你的密码,单击确定。 启动查询分析器后,注意右上角当前数据库处是否为你的数据库(如果不是,说明登录的名称有问题,或该登录的默认数据库设置不正确).若不是请重新选择.按照下图输入SQL语句(蓝色和黑色部分,其中第一条为建表语句,第二条为设置主键的语句)建立课程表(U_COURSES)(其中ID表示课程编号,该字段自动 递增,COURSE为课程名称),单击分析查询(按钮)按钮,检查语句的正确性。如果检查正确,单击分析查询按钮的右边的执行按钮(右向的三角形按钮)执行(或按F5). 右击左侧数据库图标,在快捷菜单击刷新.展开数据库(你的学号),再展开用户表,查看是否已存在班级表(U_COURSES),如下图所示。 依照上述方法输入SQL语句(技巧:在查询命令窗口内,要执行的命令可先选中,再执行,则未选中的语句不会执行)建立学生表(U_STUDENTS),表结构如下: 序号字段类型(长度)主键含义1IDchar(10)是学号2NAMEvarchar(16)姓名3CLASS_IDtinyint所在班级编号4用SQL语句修改表结构 用SQL语句,给课程表添加一个学时字段(字段名:period,类型:tinyint)。 ALTER TABLE dbo.U_COURSES ADD period tinyint 用SQL语句,给课程表添加一个学分字段(字段名:CREDIT,类型:tinyint)。 请参照上面SQL命令自行进行 用SQL语句,删除课程表学时字段(字段名:period)。 ALTER TABLE dbo.U_COURSES DROP COLUMN period 用SQL语句,修改成绩表,使SCORE字段类型为tinyint。 ALTER TABLE dbo.U_SCORES ALTER COLUMN SCORE tinyint 5用企业管理器检查各表,如果和上面要求的相同,则你的实验就完成了实验4 数据查询【实验目的】1. 学会使用企业管理器查询数据 2. 掌握使用SQL语句查询数据【实验内容】1. 使用企业管理器进行数据查询 2. 在查询分析器内使用SQL语句进行数据查询【实验准备】1. 复习与本次实验内容相关知识2. 复习查询分析器的使用 3. 对本次实验中要求自己完成的部分做好准备(第二部分,请预先写出来) 【实验步骤】1 用企业管理器进行数据查询 启动企业管理器,注册连接。 展开服务器-展开数据库-展开自己的数据库-单击表。在需要查询的表上单击右键,在弹出的快捷菜单中选择打开表(O),其下级菜单即为查询命令: 返回所有行(A) -该命令以网格方式显示指定表的所有记录 返回首行(T). -该命令以交互方式输入要返回的行数 查询(Q) -打开查询窗口,以图形方式设计查询 请从学生表(U_STUDENTS)上右击,使用查询(Q)命令建立一个查询 ,请选中学号(ID)、姓名(NAME)两个字段,再单击上面的执行按钮(!按钮)执行查询,查看结果。 再在关系图窗格内右击鼠标在弹出菜单中选择添加表,添加班级表(U_CLASSES),在班级表的ID字段上按下鼠标左键,拖至学生表的CLASS_ID上建立关联,在班级表上选中班级(CLASS)、系(DEPARTMENT)字段,再在网格窗格上选择姓名(NAME)行上选择排序类型为升序。执行该查询,查看结果。 结果如下图所示。(注意查看SQL窗格内的SQL查询语句) 该操作实现了从班级表、学生表中查询出 所有学生的学号(ID)、姓名(NAME)、班级(CLASS_ID)、所在系(DEPARTMENT)的记录数据。 关闭企业管理器 用SQL语句查询数据 启动查询分析器 在查询分析器中分别执行下列查询语句(有的语句请自己写出),体会或说明各语句的功能(请将下面的语句复制到查询分析器,逐条执行-要执行一条语句请选中该语句再按F5或单击执行铵钮,如下图所示)。-查询学生表select * from u_studentsselect * from u_students order by class_id-查询成绩表(请体会下列语句的功能)select * from u_scoresselect * from u_scores where course_id=1select * from u_scores where student_id=5103210102 select * from u_scores where score60select * from u_scores where score60 and course_id=1-请比较下面三个语句,并说明其作用。select top 10 * from u_scoresselect top 10 * from u_scores order by scoreselect top 10 * from u_scores order by score desc-下面命令将结果存放于tmp_xsb1表中。select * into dbo.tmp_xsb1 from u_scores where score60 and course_id=1-请写出查询课程号为2成绩大等于70的学生成绩情况,并将其结果存放于tmp_xscj表中(在查询语句中参照上例用into dbo.tmp_xscj子句)。-从成绩表中找出有哪些学生(学号)。select distinct student_id from u_scores-查询所有学生情况(比较下面的两个语句)。select a.id,,b.class,b.departmentfrom u_students a inner join u_classes b on a.class_id=b.idselect a.id,,b.class,b.departmentfrom u_students a , u_classes b where a.class_id=b.id-查询班号为2的所有学生。select a.id,,b.class,b.departmentfrom u_students a , u_classes b where a.class_id=b.id and b.id=2-请写出从学生表查询班级为软件031的学生情况(学号,姓名,所在班级,所在系),并请将查询结果用into子句存放于dbo.tmp_xsb2表中。-按班级统计人数。select class_id as 班号,count(*) as 人数 from u_students group by class_id-请将上面的语句添加into子句,再执行一次并将结果存放于dbo.tmp_xsrs表中。-查询所有学生成绩(试比较下面的两个语句的不同点,并看看他们的执行结果是否相同)。select a.id, , b.course, c.scorefrom u_scores c inner join u_students a on c.student_id = a.id inner join u_courses b on c.course_id = b.idselect a.id,,b.course,c.scorefrom u_students a,u_courses b,u_scores cwhere c.student_id=a.id and b.id=c.course_id-统计各人平均分。select a.id as 学号, as 姓名,avg(b.score) as 平均分,max(b.score) as 最高分, min(b.score) as 最低分from u_students a inner join u_scores b on b.student_id =a.idgroup by a.id, order by 平均分-查找陈姓学生。select id, name from u_students where name like 陈%-查找姓名第二个字是月的学生。select id, name from u_students where name like _月%-请写出查询丁姓名同学的查询语句,并将其结果用into子句存放于dbo.tmp_xsb3中。-查看有不及格课程的学生名单。select a.id as 学号, as 姓名from u_students a where a.idin (select distinct b.student_id from u_scores b where score80)select a.id, from u_students a where not exists (select * from u_scores b where a.id=b.student_id and b.score展开数据库-展开你的数据库(你的学号)-单击表。在右边的窗格内,右击班级表(U_CLASSES),在弹出的快捷菜单中,将鼠标移到打开表(O)上,再移到返回所有行(A)上单击.参见下图。2)接着按下图输入数据,注意,ID列不用输入(为什么?)。 3)输入完成后,若要对数据行(如:删除行)进行操作,可在某行上右击鼠标,在弹出菜单中选择要执行的命令。关闭该查询窗口。 2用企业管理器修改表记录数据 若要修改数据,可用上述方法打开查询窗口,直接修改即可。 3用企业管理器给学生表(U_STUDENTS)添加数据 1)参照前面方法给用企业管理器给学生表输入如下记录。在输入过程中,注意观察如果输入相同学号有什么现象(什么原因?),如果班级编号不输入,又会怎样(为什么?)。4在查询分析器中用SQL命令给课程表(U_COURSES)、成绩表(U_SCORES)添加数据 、修改数据 1)启动查询设计器(服务器:local,登录名:你的学号,密码:你的密码)。 2)输入(为减少输入工作量,可将下面的语句复制到查询分析器)如下语句并执行之,为课程表(U_COURSES)插入插入5条记录 。 INSERT INTO U_COURSES (COURSE,CREDIT) VALUES (计算机文化基础,4)INSERT INTO U_COURSES (COURSE,CREDIT) VALUES (C语言程序设计,4)INSERT INTO U_COURSES (COURSE,CREDIT) VALUES (数据结构,4)INSERT INTO U_COURSES (COURSE,CREDIT) VALUES (数据库原理与应用,4)INSERT INTO U_COURSES (COURSE,CREDIT) VALUES (SQL Server,3) 3)输入SELECT * FROM U_COURSES查看课程表记录。 4)输入下面的语句,修改计算机文化基础的学分,使之为5。 UPDATE U_COURSES SET CREDIT = 5 WHERE COURSE=计算机文化基础 5)参照上面的语句,将SQL Server课程名称改为大型数据库。 6)再次执行SELECT * FROM U_COURSES查看课程表记录,看看与修改要求是否一致。 7)输入如下语句(为减少输入工作量,可将下面的语句复制到查询分析器)为成绩表(U_SCORES)添加10条记录(分别学号为5103210101和5103212102的五门功课的成绩)。 INSERT INTO U_SCORES (STUDENT_ID,COURSE_ID,SCORE) VALUES (5103210101,1,80)INSERT INTO U_SCORES (STUDENT_ID,COURSE_ID,SCORE) VALUES (5103210101,2,82)INSERT INTO U_SCORES (STUDENT_ID,COURSE_ID,SCORE) VALUES (5103210101,3,75)INSERT INTO U_SCORES (STUDENT_ID,COURSE_ID,SCORE) VALUES (5103210101,4,78)INSERT INTO U_SCORES (STUDENT_ID,COURSE_ID,SCORE) VALUES (5103210101,5,88)INSERT INTO U_SCORES (STUDENT_ID,COURSE_ID,SCORE) VALUES (5103212102,1,54)INSERT INTO U_SCORES (STUDENT_ID,COURSE_ID,SCORE) VALUES (5103212102,2,71)INSERT INTO U_SCORES (STUDENT_ID,COURSE_ID,SCORE) VALUES (5103212102,3,60)INSERT INTO U_SCORES (STUDENT_ID,COURSE_ID,SCORE) VALUES (5103212102,4,50)INSERT INTO U_SCORES (STUDENT_ID,COURSE_ID,SCORE) VALUES (5103212102,5,60) 8)将上面的语句再执行一次,看看有什么现象(为什么?)。 9)参照上面的SQL命令,分别为学号为5103210102、5103210103、5103212101的学生添加五门功课的成绩(学号、课程号、成绩如下)。 学号课程号成绩51032101021655103210102260510321010235851032101024435103210102570510321010314551032101032585103210103366510321010346051032101035575103212101172510321210129051032121013765103212101474510321210155810)输入SELECT * FROM U_SCORES查看成绩表记录。 11)输入下面的语句,将学号为5103210101,课程号为2的课程成绩改为90。 UPDATE U_SCORES SET SCORE = 90 WHERE STUDENT_ID=5103210101 AND COURSE_ID=2 12)再次执行SELECT * FROM U_SCORES查看成绩表记录,注意学号为5103210101,课程号为2的 学生课程成绩。 13)参照上面的语句将学号为5103212102,课程号为3的课程成绩改为56。 5在查询分析器中用SQL命令删除记录 1)在查询分析器输入SELECT * FROM U_STUDENTS查看学生表记录。 2)输入下列命令删除学生表中学号为5103210104、5103210105的记录。 DELETE FROM U_STUDENTS WHERE ID=5103210104 OR ID=5103210105 3)再次执行SELECT * FROM U_STUDENTS查看记录,注意记录数。 4)参照上述命令分别学生表中学号为5103212103、5103212104、5103212105的记录实验6 T-SQL编程【实验目的】1. 掌握T_SQL编程的基本语法 2. 常用函数的使用方法 【实验内容】1. 使用查询分析器练习T-SQL编程方法 2. 练习函数的使用【实验准备】1. 复习与本次实验内容相关知识2. 预习相关函数(请预查阅CONVERT、DATENAME、GFTDATE函数的用法) 3. 对本次实验中要求自己完成的部分做好准备 【实验步骤】1. 条件结构 o 在查询分析器中执行下面的语句,体会IF.ELSE.结构 DECLARE CJ TINYINTSELECT CJ=SCORE FROM U_SCORES WHERE STUDENT_ID=5103210101 AND COURSE_ID=2-SELECT CJIF CJ=60 PRINT 及格ELSE PRINT 不及格PRINT 分数为:+CONVERT(CHAR(2),CJ) 将上述语句中学号改为5103210102,课程号改为3,看看执行结果如何. o 自己编写一段程序判断一个年份(比如1900年)是否是闰年,是则显示1900年为闰年,否则显示1900年不是闰年. 2. 循环结构 o 下面是计算1100和的循环结构,执行之,体会循环结构程序,注意语句块标志BEGIN.END DECLARE SUM INT,I INTSELECT I=1,SUM=0WHILE I=60 THEN 及格 ELSE 不及格 END SCOREFROM U_SCORES SC INNER JOIN U_COURSES C ON SC.COURSE_ID=C.IDINNER JOIN U_STUDENTS S ON SC.STUDENT_ID=S.ID o 请自己编程实现各位同学的成绩以等级分显示即:90分及以上为优,80分及以上到90以下为良,70分及以上到80分以下为中,60分及以上到70分以下为及格,其余为不及格. 5. 下面查询,显示当前日期,显示格式为:今天是XXXX年XX月XX日,星期X,执行之,体会系统函数的用法. o SELECT 今天是+DATENAME(YEAR,GETDATE()+年+DATENAME(MONTH,GETDATE()+月+DATENAME(DAY,GETDATE()+日 +DATENAME(WEEKDAY,GETDATE()实验7 函数【实验目的】1. 理解什么是标量函数、内嵌表值函数及多语句表值函数。2. 熟练掌握标量函数、内嵌表值函数、多语句表值函数的定义和调用。【实验内容】1.创建标量函数、内嵌表值函数及多语句表值函数。2.分析他们之间的区别。【实验步骤】对于jxgl数据库,定义完成如下功能的函数:(1)在jxgl数据库中创建一个用户自定义标量函数fage,然后学生表查询出学生的姓名,姓名,性别和年龄;从教师表中查询出教师的姓名,姓名,性别和工龄。create function dbo.fage(priordate datetime,curdate datetime)returns intasbeginreturn year(curdate)-year(priordate)endgoselect 学号,姓名,性别,dbo.fage(出生日期,getdate() as 年龄 from 学生goselect 工号,姓名,性别,dbo.fage(工作日期,getdate() as 年龄 from 教师go(2)创建一个根据学号返回学生学号,姓名,性别,课程号,成绩等信息的内嵌表值函数finfo。create function dbo.finfo(xh char(8)=08010101)returns tableasreturn (select 学生.学号,姓名,性别,课程号,成绩 from 学生,选修 where 学生.学号=选修.学号 and 学生.学号=xh)goselect * from dbo.finfo(default)go运行结果如图所示。(3)创建一个根据课程号查询返回选修该课程的学生学号,姓名,性别,课程号,成绩等信息的多语句函数score_info。create function score_info(courseid char(2)returns total_score table(课程号 char(2),学号 char(8),姓名 char(6),性别 char(2),成绩 tinyint)asbegininsert total_scoreselect 课程号,选修.学号,姓名,性别,成绩from 选修,学生 where 选修.学号=学生.学号 and 课程号=courseidreturnendgoselect * from score_info(02)三、分析与回答试说明内嵌表值函数、多语句表值函数的联系与区别。多语句表值函数可以看作标量函数和内嵌表值函数的联合,它集中了这两个函数的优点。其函数值也是一个表,但函数体也用beginend语句定义,作为函数返回值的表中的数据由函数体中的语句插入。因此,多语句表值函数可以进行多次查询操作,弥补了内嵌表值函数的不足。内嵌表值函数的函数体不使用beginend语句,而是通过return语句返回select查询得到的一个结果集,其功能相当于一个参数化的视图,因此在使用上,内嵌表值函数就可以当成一个虚表来使用;内嵌表值函数只能通过select语句调用。实验8 视图与索引【实验目的】1. 学会使用企业管理器建立视图与索引 2. 掌握使用SQL语句建立视图与索引【实验内容】1. 使用企业管理器建立视图索引 2. 使用SQL语句建立视图索引【实验准备】1. 复习与本次实验内容相关知识2. 对本次实验中要求自己完成的部分做好准备 【实验步骤】1. 用企业管理器建立一个基于学生表、课程表、成绩表的视图,要求该视图显示学号、姓名、课程、成绩 o 启动企业管理器、注册、连接 o 展开服务器、数据库、在视图上右击,在快捷菜单中执行新建视图(V).如下图所示 oo 在新视图窗口内的关系图窗格内右击鼠标,弹出的菜单即为视图设计菜单,执行添加表(B).,如下图所示 oo 再在添加表对话框中选择U_SCORES表,再单击添加按钮。 oo 依此操作,分别添加U_STUDENTS、U_COURSES表,单击关闭按钮。 o 再在关系窗格内,拖动U_STUDENTS表的ID至U_SCORES的STUDENT_ID,拖动U_COURSES表的ID至U_SCORES的COURSE_ID,再分别选中U_STUDENTS表的ID,NAME列(列前的复选框),U_COURSES表的COURSE列以及U_SCORES表的SCORE列,然后单击!按钮,显示视图结果,如下图所示: oo 单击保存按钮,将视图保存为V_SCORES,单击确定. o2. 用查询分析器建立一个基于学生表、班级表的学生视图(V_STUDENTS),包括学号、姓名、班级、系,SQL语句如下: o CREATE VIEW dbo.V_STUDENTSASSELECT dbo.U_STUDENTS.ID, dbo.U_STUDENTS.NAME, dbo.U_CLASSES.CLASS, dbo.U_CLASSES.DEPARTMENTFROM dbo.U_STUDENTS INNER JOINdbo.U_CLASSES ON dbo.U_STUDENTS.CLASS_ID = dbo.U_CLASSES.ID 3. 自己写一个SQL语句建立一个基于课程表的视图(V_COURSES),要求显示课程编号、课程名、学分。 4. 查看索引 o 在企业管理器中打开U_STUDENTS表的设计窗口,然后单击管理索引按钮,如下图所示 oo 在弹出的属性窗口内,查看索引PK_U_STUDENTS的各属性(该索引是簇集索引) 5. 为学生表按班级建立一个非簇集索引FK_U_STUDENTS,操作过程如下 o 在上一操作的属性窗口内单击新建按钮,新建一个索引 o 将索引名改为FK_U_STUDENTS, o 将列名选择为CLASS_ID oo 单击关闭 6. 用SQL语句为U_COURSES表建立一个基于课程名的非簇集索引IX_U_COURSES,SQL语句如下 o CREATE INDEX IX_U_COURSES ON dbo.U_COURSES(COURSE) ON PRIMARY 7. 自己用SQL语句为班级表建立一个基于班级名称的非簇集索引IX_U_CLASSES 实验9 存储过程【实验目的】1. 掌握创建存储过程的基本方法 【实验内容】1. 用企业管理器创建存储过程 2. 用查询分析器创建存储过程【实验准备】1. 复习与本次实验内容相关知识2. 对本次实验中要求自己完成的部分做好准备 【实验步骤】1. 用向导创建一个存储过程:该存储过程用于向学生表添加记录。 o 在企业管理器中连接服务器,完成后展开服务器,展开数据库,单击存储过程 oo 然后在“工具”菜单中单击“向导(W).”,在向导对话框中展开“数据库”,选择“创建存储过程向导”,单击“确定” oo 在创建存储过程向导中,单击“下一步” oo 检查数据库名是否正确 oo 如果正确,单击“下一步”,如下图进行选择 oo 单击“下一步”,在出现的对话框中单击“编辑”按

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论