版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE64《SQLServer数据库系统设计与实现》实验指导书ﻬ目录TOC\o"1-1"\h\z\uHYPERLINK\l”_Toc112428734"实验1SQLServer的安装及其管理工具的使用 PAGEREF_Toc112428734\h2HYPERLINK\l"_Toc112428735”实验2创建数据库和表ﻩPAGEREF_Toc112428735\h3HYPERLINK\l”_Toc112428736”实验3数据库的查询 PAGEREF_Toc112428736\h3HYPERLINK\l”_Toc112428737"实验4T-SQL编程ﻩPAGEREF_Toc112428737\h3HYPERLINK实验6VB人员信息管理系统ﻩPAGEREF_Toc112428739\h3HYPERLINK\l"_Toc112428740"实验6PB商品信息管理系统ﻩ112428740\h3HYPERLINK\l”_Toc112428741”实验7ASP通用人事管理系统。ﻩPAGEREF_Toc112428741\h3ﻬ实验1SQLServer的安装及其管理工具的使用目的与要求(1)掌握SQLServer服务器的安装.(2)掌握企业管理器的基本使用方法.(3)掌握查询分析器的基本使用方法。(4)了解数据库及其对象。实验内容(1)安装SQLServer2000(2)利用企业管理器访问系统自带的pubs数据库(3)查询分析器的使用实验步骤1.安装SQLServer2000依据软硬件环境,选择一个合适版本的SQLServer2000。安装步骤请参照教材第1。33节。2.利用企业管理器访问系统自带的pubs数据库(l)启动SQLServer服务管理器.(2)以系统管理员身份登录到企业管理器并访问pubS数据库。(3)在企业管理器的名目树中展开文件失一展开pubS数据库图标,则将列出该数据库的、全部对象,如表、视图、存储过程,默认、规章等。(4)选中pubs下的“表”图标,将列出pubs数据库全部的表(系统表和用户表),在此以用户表Publishers为例,打开该表,查看其内容。(5)在表的尾部插入记录(9943,zhang,null,china)和(1408,li,shanghai,NULLchina),会发生什么情况?(6)在表中删除步骤(5)插入的记录。3.查询分析器的使用(l)在查询分析器对象扫瞄器的名目树中展开pubs数据库图标,则将列出该数据库的全部对象,如表、视图、存储过程等。(2)以pubs数据库的用户表anthors为例,选中该表的图标,单击鼠标右键,消灭一快捷菜单,执行“打开”菜单项,打开该表,查看其内容.(3)在表的尾部插入一记录。(4)在查询分析器的输入窗口,输入如下T-SQL语句:usepubsselect*fromauthorsgo看看执行结果是什么?思考与练习:用查询分析器查询pubs数据库publishers表的全部记录。ﻬ实验2创建数据库和表目的和要求(l)了解SQLServer数据库的规律结构和物理结构。(2)了解表的结构特点。(3)了解SQLServr的基本数据类型。(4)了解空值概念。(5)学会在企业管理器中创建数据库和表。(6)学会使用T—SQL语句创建数据库和表。实验内容(1)在企业管理器中创建数据库YGGL(2)在企业管理器中删除创建的YGGL数据库(3)使用T—SQL语句创建数据库YGGL(4)在企业管理器中分别创建表Employees、Departments和Salary(5)在企业管理器中删除创建的Employees、Departments和Salary表(6)使用T-SQL语句创建表Employees、Departments和Salary(7)表数据的添加、修改、删除实验步骤0.实验筹备创建用于企业管理的员工管理数据库,数据库名为YGGL,包含员工的信息、部门信息以及员工的薪水信息。数据库YGGL包含下列3个表:(l)Employees;员工信息表。(2)Department:部门信息表.(3)Salary;员工薪水情况表.各表的结构分别如表1、表2和表3所示。表1Employees表结构列名数据类型长度是否允许为空值说明EmployeeIDChar6员工编号,主键NameChar10姓名BirthdayDatetime8诞生日期SexBit1性别AddressChar20√地址ZipChar6√邮编PhoneNumberChar12√电话号码EmailAddressChar30√电子邮件地址DepartmentIDChar3员工部门号,外键表2Departments表结构列名数据类型长度是否允许为空值说明DepartmentIDChar3部门编号,主键DepartmentNameChar20部门名Notetext16√备注表3Salary表结构列名数据类型长度是否允许为空值说明EmployeeIDChar6员工编号,主键InComeFloat8收入OutComefloat8支出首先要明确,能够创建数据库的用户必须是系统管理员,或是被授权使用CREATEDATABASE语句的用户。其次创建数据库必必要确定数据库名、全部者(即创建数据库的用户)、数据库大小(最初的大小、最大的大小、是否允许增长及增长方式)和存储数据库的文件。然后,确定数据库包含哪些表,以及所包含的各表的结构,还要了解SQLServer的常用数据类型,以创建数据库的表。此外还要了解两种常用的创建数据库、表的方法,即在企业管理器中创建和使用T—SQL语句创建.1.在企业管理器中创建数据库YGGL要求:数据库YGGL初始大小为10MB,最大大小为50MB,数据库自动增长,增长方式是按5%比例增长;日志文件初始为2MB,最大可增长到5MB(默认为不限制),按1MB增长(默认是按5%比例增长)。数据库的规律文件名和物理文件名均采纳默认值,分别为YGGL-data和e:\sql\data\MSSQL\Datar\YGGL.mdf,其中e:\sql\data\MSSQL为SQLServer的系统安装名目;事务日志的规律文件名和物理文件名也均采纳默认值,分别为YGGL_LOG和e:\sql\data\MSSQL\Data\YGGL_log.ldf.以系统管理员Administrator或被授权使用CREATEDATABASE语句的用户登录SQLServer服务器,启动企业管理器——〉在服务器上单击鼠标右键-—>新建数据库-->输入数据库名“YGGL”—-〉选择“数据文件”选项卡-—>设置增长方式和增长比例—->选择“事务日志”选项卡--〉设置增长方式和增长比例。注意:在“数据文件"选项卡和“事务日志”选项卡中,可以分别指定数据库文件和日志文件的物理路径等补性。2在企业管理器中删除创建的YGGL数据库在企业管理器中选择数据库YGGL-->在YGGL上单击鼠标右键则删除。3.使用T-SQL语句创建数据库YGGL依据上述要求创建数据库YGGL。启动查询分析器——〉在“查询”窗口中输入如下T-SQL语句:CREATEDATABASEYGGLON(NAME=’YGGL_DATA’,FILENAME='e:\YGGL.MDF',SIZE=10MB,MAXSIZE=50MB,FILEGROWTH=5%)LOGON(NAME=’YGGL_Log',FiLENAME=’e:\YGGL_Log.ldf’,SIZE=2MB,MAXSIZE=5MB,FILEGROWTH=1MB)GO单击快捷工具栏的执行图标执行上述语句,并在企业管理器中查看执行结果。4.在企业管理器中分别创建表Employees、Departments和Salary在企业管理器中选择数据库YGGL-->在YGGL上单击鼠标右键-->新建-—>表时输入Employees表各字段信息则单击保存图标叫输入表名Employees,即创建了表Employees。按同样的操作过程创建表Departments和Salary.5。在企业管理器中删除创建的Employees、Departments和Salary表在企业管理器中选择数据库YGGL的表Employees-->在Employees上单击鼠标右键—->删除,即删除了表Employees。按同样的操作过程删除表Departments和Salary.6.使用T-SQL语句创建表Employees、Departments和Salary启动查询分析器——>在“查询”窗口中输入以下T-SQL语句:ﻭUSEYGGLCREATETABLEEmployees(EmployeeIDchar(6)primarykey,Namechar(10)NOTNULL,BirthdaydatetimeNOTNULL,SexbitNOTNULL,Addresschar(20)NOTNULL,ZipChar(6)NULL,PhoneNumberchar(12)NULL,EmailAddresschar(20)NULL,DepartmentIDchar(3)NOTNULL,)GO单台快捷工具栏的执行图标,执行上述语句,即可创建表Employees。按同样的操作过程创建表Departments和Salary,并在企业管理器中查看结果。7.在企业管理器中向数据库YGGL表加入数据(l)在企业管理器中向表Employees中加入如表1所示的记录。表1Employees表记录编号姓名地址邮编电话电子邮件部门号诞生日期性别000001王林中山路2100033355668NULL21956-1—231010008伍容华北京东路l00-22100013321321NULL11966-3-281020010王向客四牌楼10-10-1082100063792361NULL11972-12—91020018李丽中山东路102。22100023413301HYPERLINK"mailto:lili@sina。com"lili@sina.com11950-7-300102201刘明虎距路100—22100133606608NULL51962-10—181102208朱俊牌楼巷5.3—18062100044708817HYPERLINK"mailto:zhujun@sina.com"zhujun@sina.com51955—09-281108991钟敏中山路108-3-1052100033346722Zhongmin@sohu。com31969—08-100111006张石兵解放路34-9—1。2032100104563418Zhang@china.com51964—10-011210678林涛中山北路247.2。3052100083467336NULL31967—04—21302566李玉艰热和路209.32100188765991HYPERLINK”mailto:liyumin@jlonline.com"liyumin@jlonline.com41958-09—201308759叶见北京西路3-7-5022100013308901NULL41968-11—181504209陈林琳汉中路120—4-1022100024468158NULL41959—09-030在企业管理器中选择表employees——>在其上单击鼠标右键-->选“返回全部行”—-〉逐字段输入各记录值,输入完后,关闭表窗口。(2)在企业管理器中向表Departments插入如表2所示的记录。表2Departments表记录编号部门名称备注1财务部NULL2人力资源部NULL3经理办公室NULL4研发部NULL5市场部NULL(3)在企业管理器中向表Salary插入如表3所示的记录。表3Departments表记录编号收入支出0000012100.8123.090100081582.6288.031022012569。88185.651110061987。0179.585042092066.15108。03025662980.7210.21089913259.98281.520200102860。0198.00200182347.68180.03087592531.98199.082106782240.0121。01022081980.0100。02.在企业管理器中修改数据库YGGL表数据(l)在企业管理器中删除表Employees的第2、8行和Salary的第2、11行。注意进行删除操作时,作为两表主键的EmployeeID的值,以保持数据完整性。在企业管理器中选择表Employees--〉在其上单击鼠标右键、选“返回全部行”--〉选择要删除的行—->单击鼠标右键-->删除——>关闭表窗口。(2)在企业管理器中删除表Department的第2行,同时也要删除表Employees的第2行。操作方法同上.(3)在企业管理器中将表Employees中编号为020018的记录的部门号改为4。在企业管理器中选择表Employees—->在其上单击鼠标右键-->选“返回全部行"--〉将光标定位至编号为020018的记录的DepartmentID字段,将值1改为4。3.使用T-SQL命令修改数据库YGGL表数据(l)使用T-SQL命令分别向YGGL数据库的Employees、Departments和Salary表中插入一行记录。启动查询分析器--〉在“查询”窗口中输入如下T-SQL语句:USEYGGLINSERTINTOEmployeesVALUES('011112',’罗林','1973-5—3',1,’解放路100号',210002,4055663,NULL,5)GOINSERTINTODepartmentsVALUES('2’,'人力资源部',NULL)GOINSERTINTOSalaryVALUES(’011112’,1200.95,50)GO单击快捷工具栏的执行图标,执行上述语句。注意:在企业管理器中分别打开YGGL数据库的Employees、Departmenta和Salary表,观察数据变化。(2)使用T—SQL命令修改表Salary中的某个记录的字段值。启动查询分析器-->在“查询"窗口中输入如下T-SQL语句:USEYGGLUPDATESalarySETInCome=2890WHEREEmployeeID=’01lll2’GO单击快捷工具栏的执行图标,执行上述语句,将编号为0llllZ的职工收入改为2890。注意:在企业管理器中打开YGGL数据库Salary表,观察数据变化.(3)修改表Employees和Departments的记录值,仍要注意完整性.操作过程同上.(4)使用T-SQL命令修改表Salary中的全部记录的字段值。启动查询分析器则在“查询”窗口中输入如下T-SQL语句:USEYGGLUPDATESalarySETInCome=InCome+100Go单击快捷工具栏的执行图标,执行上述语句,将全部职工的收入增加100.可见,使用T—SQL语句操作表数据比在企业管理器中操作表数据更为灵敏。注意:输入T—SQL语句SELECT*FROMSalary,观察数据变化。(5)使用TRANCATETABLE语句删除表中全部行。启动查询分析器——>在”查询”窗口中输入如下T-SQL语句:USEYGGLTRANCATETABLESalaryGO单击快捷工具栏的执行图标,执行上述语句,将删除Salary表中的全部行。注意:实验时一般不要轻易执行这个操作,困为后面实验还要用到这些数据。如要添该命令的效果,可创建一个临时表,输入少量数据后进行。
实验3数据库的查询实验目的(l)掌握SELECT语句的基本语法。(2)掌握子查询的表示。(3)掌握连接查询的表示。
(4)掌握数据汇总的方法。(5)掌握SELECT语句的GROUPBY子句的作用和使用方法。(6)掌握SELECT语句的ORDERBY子句的作用和使用方法。实验筹备(l)了解SELECT语句的基本语法格式。(2)了解SELECT语句的执行方法。(3)了解子查询的表示方法。(4)了解连接查询的表示。(5)了解数据汇总的方法。(6)了解SELECT语句的GROUPBY子句的作用和使用方法。(7)了解SELECT语句的ORDERBY子句的作用.实验内容1。SELECT语句的基本使用(l)对于实验2给出的数据库表结构,查询每个雇员的全部数据。在查询分析器的编辑窗口输入如下语句并执行:USEYGGLSELECT*FROMEmployeesGO思考与练习:用SELECT语句查询Departments和Salary表的全部记录。(2)查询每个雇员的地址和电话.在查询分析器的编辑窗口输入如下语句并执行:USEYGGLSELECTAddress,PhoneNumberFROMEmployeesGO思考与练习:用SELECT语句查询Departments和Salary表的一列或若干列。(3)查询EmployeeID为000001的雇员的地址和电话。在查询分析器的编辑窗口输入如下语句并执行:USEYGGLﻭSELECTAddress,PhoneNumberFROMEmployeesWhereEmployeeID=’000001'GO思考与练习:用SELECT语句查询Departments和Salary表中满意指定条件的一列或若干列.(4)查询Employees表中女雇员的地址和电话,使用AS子查询将结果中各列的标题分别指定为地址、电话。在查询分析器的编辑窗口输入如下语句并执行:USEYGGLSELECTAddressAS地址,PhoneNumberAS电话FROMEmployeesWHEREsex=0GO注意:使用AS子句可指定目标列的标题。(5)计算每个雇员的实际收入。在查询分析器的编辑窗口输入如下语句并执行:USEYGGLSELECTEmployeeID,实际际收入=InCome—OutComeFROMSalaryGO(6)找出全部姓"王”的雇员的部门号.在查询分析器的编辑窗口输入如下语句并执行:
USEYGGL
SELECDepartmentIDFROMEmployeesWHEREnameLIKE'王%'GO思考与练习:找出全部地址中含有“中山"的雇员的号码及部门号。(7)找出全部收入在2000~3000元之间的雇员编号。在查询分析器的编辑窗口输入如下语句并执行:USEYGGLSELECTEmployeeIDFROMSalaryWHEREInComeBETWEEN2000AND3000Go思考与练习:找出全部在财务部和人力资源部工作的雇员的编号。注意:在SELECTT语句中LIKE、BETWEEN…AND、IN、NOT及CONTAIN谓词的作用。2.子查询的使用(1)查找在财务部工作的雇员的情况。在查询分析器的编辑窗口输入如下语句并执行:USEYGGLSELECT*FROMEmployeesWHEREDepartmentID=(SELECTDepartmentIDFROMDepartmentsWHEREDepartmentName=’财务部’)GO思考与练习:用子查询的方法查找全部收入在2500元以下的雇员的情况。(2)查找财务部年龄不低于研发部雇员年龄的雇员的姓名。在查询分析器的编辑窗口输入如下语句并执行:USEYGGLSELECTNameFROMEmployeesWHEREDepartmentIDIN(SELECTDeptmentIDFROMDepartmentsWHEREDepartmentName='财务部')ANDBirthday>ALL(SELECTBirthdayFROMEmployeesWhereDepartmentIDIN(SELECTDepartmentIDFROMDapartmentswhereDepartmentName=’研发部'))Go思考与练习:用于查询的方法查找研发部比全部财务部雇员收入都高的雇员的姓名。(3)查找比全部财务部的雇员收入都高的雇员的姓名。在查询分析器的编辑窗口输入如下的语句并执行:USEYGGLSELECTNameFromEmployeesWHEREEmployeeIDIN(SELECTEmployeeIDFROMSalaryWHEREInCome>ALL(SELECTInComeFROMSalaryWHEREEmployeeIDIN(SELECTEmalpoyeeIDFROMEmployeesWHEREDepartmentID=(SELECTDEPARTMENTIDFROMDepartmntsWHEREDepartmentName='财务部’))))GO思考与练习:用于查询的方法查找全部年龄比研发部雇员年龄都大的雇员的姓名。3.连接查询的使用(1)查询每个雇员的情况及其薪水的情况。在查询分析器的编辑窗口输入如下的语句并执行:USEYGGLSELECTEmPloyees。*,Salar.*FROMEmployees,SalaryWHEREEmgloyees。EmployeeID=SalaryEmployeeIDGO思考与练习:查询每个雇员的情况及其工作部门的情况。间查找财务部收入在2200元以上的雇员姓名及其薪水详情。在查询分析器的编辑窗口输入如下语句并执行:USEYGGLSELECTName,InCome,OutComeFROMEmployees,Salary,DepartmentsWHEREEmployees.EmployeeID=Salary.EmployeeIDANDEmployees。DepartmentID=Departments。DEpartmentIDANDDepartmentName='财务部’ANDInCome>2000GO思考与练习:查询研发部在1966年以前诞生的雇员姓名及其薪水详情.4数据汇总(l)求财务部雇员的平均收入。在查询分析器的编辑窗口输入如下语句并执行:USEYGGLSELECTAVG(InCome)AS’财务部平均收入’WHEREEmployeeIDIN(SELECTEmployeerIDFROMEmployeesWHEREDepartmentID=(SELECTDepartmentIDFROMDepartmentsWHEREDepartmentName=’财务部'))GO思考与练习:查询财务部雇员的最高和最低收入。(2)求财务部雇员的平均实际收入。在查询分析器的编辑窗口输入如下的语句并执行:USEYGGLSELECTAVG(InCome—OutCome)AS’财务部平均实际收入'FROMSalaryWHEREEmployeeIDIN(SELECTEmployeeIDFROMEmployeesWHEREDepartmentID=(SELECTDepartmentIDFROMDePartmentsWHEREDepartmentName='财务部'))GO思考与练习:查询财务部雇员的最高和最低实际收入。(3)求财务部雇员的总人数。在查询分析器的编辑窗口输入如下的语句并执行:USEYGGLSELECTCount(EmgloyeeID)FROMEmployeesWHEREDepartmentID=(SELECTDepartmentIDFROMDepartmentsWHEREDepartmentName='财务部')GO思考与练习:统计财务部收入在2500以上雇员的人数.5.GROUPBY、ORDERBY子句的使用(l)求各部门的雇员数。在查询分析器的编辑窗口输入如下的语句并执行:USEYGGLSELECTCOUNT(EmployeeID)FROMEmployeesGROUPBYDepartmentIDGO思考与练习:统计各部门收入在2000以上雇员的人数.(2)将各雇员的情况按收入由低到高排列。在查询分析器的编辑窗口输入如下的语句并执行:USEYGGLSELECTEmployees.*,Salary。*FROMEmployees,SalaryWHEREEmployees.EmployeeID=Salary.EmployeeIDORDERBYInComeGO思考与练习:将各雇员的情况按诞生时间先后排列。
实验4T-SQL编程实验目的(l)进一步巩固第2章至第4章所学的内容。(2)掌握用户自定义类型的使用。(3)掌握变量的分类及其使用。(4)掌握各种运算符的使用.(5)掌握各种掌握语句的使用.(6)掌握系统函数及用户自定义函数的使用。实验内容(1)自定义数据类型的使用(2)自定义函数的使用实验步骤1.自定义数据类型的使用(l)对于实验2给出的数据库表结构,再自定义一数据类型ID_Type,用于描述员工编号。在查询分析器编辑窗口输入如下程序并执行:USEYGGLEXECsp_addtype'ID_Type','char(6)’,'notnull'GO注意:不能漏掉单引号。(2)重新创建YGGL数据库的Employees表.在查询分析器编辑窗口输入如下程序并执行:USEYGGLIFEXISTS(SELECTnameFROMsysobjectsWHEREtype='U'andname=’Employees')/*首先在系统表中查看Employees表是否存在,若存在,删除该表*/DROPtableemployeesCREATETABLEEoployees(EmployeeIDID_type,/*定义字段EmployeeID的类型为ID_type*/Namechar(10)NOTNULL,BirthdaydatetimeNOTNULL,SexbitNOTNULL,Addresschar(20)NOTNULL,ZIPchar(6)NULL,PhoneNumberChar(12)NULL,EmailAddresschar(20)NULL,DepartmentIDchar(3)NOTNULL)GO2.自定义函数的使用(l)定义一函数实现如下功能:对于一给定的DepartmentID之值,查询该值在Departments表中是否存在,若存在返回0,否则返回—1。在查询分析器的编辑窗口输入如下程序并执行。USEYGGLCREATEFUNCTIONCHECK_ID(@departmentIDchar(3))RETURNSintegerASbegindeclare@numintIFEXISTS(SELECTdepartmentIDFROMdepartmntsWHERE@departmentid=departmentID)select@num=0ELSEselect@num=-1return@numendGO(2)写一段T—SQL脚本程序调用上述函数.当向Employees表插入一记录时,首先调用函数CHECK_ID,检察该记录的DepartmentID值在表Departments的DepartmentID字段中是否存在对应值,若存在,则将该记录插入Employeess表。在查询分析器编辑窗口输入如下程序并执行:USEYGGLdeclare@numintselect@num=dbocheck_id('2')if@num=einsertemployeesvalues(’990210',’张文',’1982-03—24’,0,'南京镇江路2号',’2100009','3497534',’zhang@jlonlne.com',’2')GO思考与练习:编写如下程序:(l)自定义一数据类型,用于描述YGGL数据库中的DepartmentID字段,然后编写代码重新定义数据库的各表。(2)当对Departments表的DepartmentID字段值修改时,对Employees表中对应的DepartmentID字段值也进行相应修改。(3)对Employees表进行修改时,不允许对DepartmentID字段值进行修改。ﻬ实验5索引、存储过程和触发器的使用实验目的(l)掌握索引的使用方法。(2)掌握存储过程的使用方法。(3)掌握触发器的使用方法.实验内容(1)建立索引(2)创建触发器(3)创建存储过程(4)调用存储过程实验步骤1。建立索引对YGGL数据库的EInplyees表中的DepartmentID列建立索引.在查询分析器编辑窗口输入如下程序并执行:USEYGGLIFEXISTS(SELECTnameFROMsysindexesWHEREname=’depart_ind’)DROPINDEXemployees.depart_ind/*应使用表名.索引名的形式*/GOUSEYGGLCREATEINDEXdepart_indONEmployees(departmentID)2.创建触发器对于YGGL数据库,表Employees的DepallmentID列与表Department的DepartmentID列应满意参照完整性规章,即:。向Employees表添加一记录时,该记录的DepartmentID值在Departments表中应存在。。修改Departments表的DepartmntID字段值时,该字段在Employees表中的对应值也应修改..删除Departments表中一记录时,该记录DepartmentID字段值在Employees表中对应的记录也应删除。上述参照完整性规章,在此通过触发器实现.在查询分析器编辑窗口输入各触发器的代码并执行:(l)向Employees表插入或修改一记录时,通过触发器检查记录的DepartmentID值在Departments表中是否存在,若不存在,则取消插入或修改操作。USEYGGLGOCREATETRIGGEREmployeeInsondbo.EmployeesFORINSERT,UPDATEASBEGINif((SELECTins.DepartmentIDfrominsertedins)NOTIN(SELECTdepartmentIdFROMdepartments))ROLLBACK/*对当前事务回滚,即恢复到插入前的状态*/END(2)修改Departments表的DepartmentID字段值时,该字段在Employees表中的对应值也做相应修改。USEYGGGOCREATETTRIGGERDepartmentsUpdateondbo.DepartmentsFORUPDATEASBEGINIF(COLUMNS_UPDATED()&01)>0UPDATEEmployeesSETDepartmentID=(SELECTins.DepartmentIDfromINSERTEDins)WHEREDepartmentID=(SELECTDepartmentIDFROMdeleted)ENDGO(3)删除Departments表中一记录的同时删除该记录DepartmentID字段值在Employees表中对应的记录。USEYGGLGOCREATETRIGGERDepartmentsDeteteondbo。DepartmentsFORDELETEASBEGINDELETEFROMEmpLoyeesWHEREDepartmentID=(SELECTDepartmentIDFROMdeleted)ENDGO3。创建存储过程在查询分析器编辑窗口输入各存储过程的代码并执行:(l)添加职员记录的存储过程EmployeeAdd。USEYGGLGOCREATEPROCEDUREEmployeeAdd(@employeeidchar(6),@namechar(10),@birthdaydatetime,@sexbit,@addresschar(20),@zipchar(6),@phonenumberchar(12),@emailaddressChar(20),@departmentIDChar(3))ASBEGININSERTINTOEmployeesVALUES(@employeeid,@name,@bitthday,@sex,@address,@zip,@phonenumber,@emailaddress,@departmentIDENDRETURNGO(2)修改职员记录的存储过程EmployeeUpdate.USEYGGLGOCREATEPROCEDUREEmployeeUPdate(@empidchar(6),@employeeidchar(6),@namechar(10),@birthdaydatetime,@sexbit,@addresschar(20),@zipchar(6),@phonenumberchar(12),@emailaddresschar(20),@departmentIDChar(3))ASBEGINUPDATEEmployeesSETEmployeeid=@employeeid,Name=@name,Birthday=@birthday,Sex=@sex,Address=@address,Zip=@Zip,Phonenumber=@phoneNumber,Emailaddress=@emailaddress,DepartmmentID=@departmentIDWHEREEmployeeID=@empIDENDRETURN(3)删除职员记录的存储过程EmployeeDelete。USEYGGLCREATEPROCEDUREEmployDelete(@employeeIDchar(6))ASBEGINDELETEFROMEmployeesWHEREEmgloyeeid=@employeeidENDRETURNGO4.调用存储过程ﻭUSEYGGLEXECEmployeeAdd'990230','刘朝','890909',1,'武汉小洪山5号’,’’,’’,'','3’USEYGGLEXECEmployeeUpdate’990230’,’990232’,’刘平','890909',l,武汉小洪山5号','’,’','’,'2’USEYGGLEXECEmployeeDelete’990232'GO分析一下此段程序执行时可能消灭哪几种情况。思考与练习:编写如下T-SQL程序:(l)自定义一数据类型,用于描述YGGL数据库中的DepartmentID字段,然后编写代码,重新定义数据库各表。(2)对于YGGL数据库,表Employees的EmployeeID列与表Salary的EmployeeID列应满意参照完整性规章,请用触发器实现两个表间的参照完整性.(3)编写对数据库YGGL各表进行插入、修改、删除操作的存储过程,然后编写一段程序调用这些存储过程.ﻬ实验6VB人员信息管理系统项目1连接数据库及调用存储过程实验目的(l)掌握在SQLServer中创建数据库、表、触发器、存储过程的方法。(2)掌握在VB中通过数据视图窗口查看数据库对象及创建触发器和存储过程的方法。(3)掌握通过代码建立数据库连接及访问表记录的方法.(4)掌握VB中调用存储过程对表数据进行操作的方法。实验内容(1)创建数据库及其表(2)在VB6.0中查看数据库对象(3)设计窗体界面(4)设计应用程序代码(5)运行实验步骤1。创建数据库及其表在SQLServer中新建个人信息管理系统数据库“PInformation”,创建该数据库下的表Contacts、ContactPhones、Reminders.数据库PInformation的表及其结构如下:(l)联系人表(Contacts).Contacts表的结构如表l所示.表1Contacts表结构字段名字段类型主键标识列说明ContactIDInt√√联系人姓名NameVarchar(50)联系人名称AddressVarchar(100)联系人所在城市ZipCodeVarchar(20)邮编EmailAddressVarchar(50)电子信箱ContactNoteVarchar(100)备注(2)联系人电话表(contactphone).contactphones表结构如表2所示.表2Contactphones表结构字段名字段类型主键标识列说明ContactPhoneIDInt√√联系人电话编号ContactIDInt联系人编号PhoneTypeVarchar(50)电话类型PhoneNumberVarchar(50)电话号码(3)提示信息表(Reminders)。Reminders表结构如表3所示:表3Reminders表结构字段名字段类型主键标识列说明RemainderIDInt√√提示编号AlarmOnbit报警标志AlarmTimeDatetime报警时间ReminderNoteVarchar(1000)提示内容注意:定义为标识列的字段的值是依据“种子"的值自动生成的。在VB中也可创建数据库的表,可自己试一试。2.在VB6.0中查看数据库对象第1步新建工程“Projectl",在VB界面中,执行“视图"菜单的“数据视图窗口”菜单项,消灭如图l所示的界面.图1VB中的数据窗口视图第2步在图。l所示的界面中,选中“数据链接”文件夹,单击鼠标石键,消灭一快捷菜单,执行菜单项“添加数据链接”,消灭如图2所示的界面。在“供应者”选项卡中选择OLEDB供应者为“McrosoftOLEDBProViderforSQLServer"(或MicrosoftOLEDBPrOviderforODBCDrivers)。图2设置数据库连接方式的“供应者"界面第3步在图2所示的界面中,选择“连接”选项卡,消灭如图3所示的界面,输入“数据库服务器名”、用户登录名、密码及登录的数据库。图3设置数据库连接方式的“连接”界面第4步在图3所示的界面中,选择“确定”按钮,消灭如图4所示的界面。从今界面中可看出,在数据窗口视图中,新创建了一个数据链接“DataLink1”。在该数据链接上,通过相应的快捷菜单可创建存储过程和触发器。图4数据视图窗口3.设计窗体界面设计窗体界面,如图5和图6所示.图5设计应用程序主窗口form1图6设计联系人窗口form24。设计应用程序代码(l)模块Modulel的设计。OptionExplicitPublicSQLUserNameAsString’存放SQLServer的用户登录账号PublicSQLPasswordAsString'存放SQLServer的用户登录密码PublicMyConnectionAsNewADODB.Connection'用于建立与数据库的连接(2)应用程序主窗口forml的代码设计。主窗口forml的LOAD大事驱动程序:PrivateSubForm_Load()MyConnection。ConnctionString="driver={SQLServer};"_’驱动程序名&"serve=dlgc—pooly1rw4;uid=”&SQLUserName_”服务器名及用户登录账号&";pwd="&SQLPassword&”;"_’用户登录密码&"database=Pinformation”'连接的数据库MyConnection.Open'建立连接EndSub功能:加载主窗口forml时,通过代码建立与数据库Pinformation的连接.“下一步”按钮的Click大事驱动程序:PrivateSubCOmmand1_Click()Form2。ShowUnloadMeEndSub功能:加载联系人窗口form2,卸载主窗口forml.(3)对Contacts表进行操作的存储过程的定义。在SQLServer中或通过VB的数据视图窗口创建如下存储过程:。在COntacts表中添加一条记录:CREATEPROCEDUREcontactadd@namevarchar(50),@Addressvarchar(100),@ZIPCodevarchar(2),@EmailAddressvarchar(50)@ContactNoteVarchar(50)Asbegininsertintocontacts(name,Address,ZipCode,EmailAddress,ContactNote)values(@name,@Address,@ZIPCode,@EmailAddress,@ContactNote)Select@@identityasTheNewIDendreturn在contacts表中查询联系人编号和姓名:CREATEPROCEDUREcolllactlistAsbeginselectcontactID,namefromcontactsorderbynameendreturn在contacts表中查询联系人的一条记录:CREATEPROCEDUREcontactrecord@contactIDintegerASbeginif@ContactID=0beginselect*fromcontactswherecontactID=(selectMin(contactid)fromcontacts)endelsebeginselect*fromcontactswherecontactID=@contaCtIDendendreturn在contacts表中对一条记录进行更改:CREATEPROCEDUREcontactupdate@ContactIDinteger,@namevarchar(50),@Addressvarchar(100),@ZIPCodevarchar(20),@EmailAddressvarchar(50),@ContactNotevarchar(500)Asbeginupdatecontactssetname=@name,Address=@Address,ZipCode=@ZipCode,EmailAddress=@EmailAddress,ContactNote=@ContactNotewhereContactID=@ContactIDendreturn在Ccontacts表中删除一条记录:CREATEPROCEDUREdeltecontact@ContactIDintegerAsbegindeletefromcontactswhereContactID=@ContactIDendreturn(4)对contactphones表进行操作的存储过程的定义。在表contactphone中添加一条电话记录:CREATEPROCEDUREcontactPhoneadd@contactIDinteger,@Phonetypevarchar(50),@phonenumberVarchar(50)Asbegininsertintocontactphones(contactID,PHoneType,phonenumber)values(@contactID,@PhoneType,@phonenumber)endreturn在表contactphones中删除一条电话记录:CREATEPROCEDUREcontactphonedelete@contactPhoneIDintegerAsbegindeletefromcontactphoneswherecontactphoneID=@contactphoneIDendreturn在表contactPhones中查询电话记录:CREATEPROCEDUREcontactphonelist@contactIDintegerAsbeginSelectcontactphoneID,PhoneType+"—”+PhoneNumberasThePhonefromcontactphoneswherecontactID=@contactIDorderbyPhoneType+"—"+PhoneNumberendreturn(5)DeleteContacts触发器的定义。TriggerdeleteContactsOndbo。ContactsafterDeleteAsbegindeletefromcontactphoneswherecontactID=(selectcontactIDfromdeleted)end功能:当用户删除一条联系人记录时,通过该触发器删除该联系人的全部电话号码。(6)联系人窗口form2的代码设计.变量和子程序的定义:OptionExplicitPrivatecurrentIDAsLong'存放当前联系人编号PublicSubDisplayContact(ID2Useaslong)'显示一条联索人的记录DimRSContactAsADODB.RecordsetSetRSContact=MyCOnnection.Execute(”ExecContactRecord"_&ID2Use)’调用ContatReeord存储过程IfRSContact.EOFThenCommand4_ClickelsecurrentID=RSContact(”ContactID”)Text2.Text=RSContact(”Name”)TexI3.Text=RSContact("Address”)Text4.Text=RSContactt(”ZipCode”)Text5.Text=RSContact(”Emailaddress")Text6。Text=RSContact("ContactNote”)DisplayPhoneList'显示该联系人的电话号码.EndifEndSubﻭ功能:如果存储过程调用返回文件结束标识,则调用“清除"按钮的CliCk程序,清除界面上的数据,否则显示一条记录.PublicSubUpdateNameCombo()DimRSNamesAsADODB.Recordset'定义一记录集变量'通过连接变量执行存储过程SetRSnames=Myconnection.Execute("ExecContactList")Cmbecontacts.clearDoUntilRSNames.EOFCmbcontacts.AddItemRSNames(”Name”)Cmbcontacts.itemData(Cmbcontacts.NewIndex)=_RSNames("ContactID”)RSNames.MoveNextLoopendsub功能:调用ContactRecord存储过程查询联系人姓名和编号,然后加入到下拉列表Cmbcontacts中。PublicSubDisplayPhoneList()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合同取消退定金协议书
- 厂家合作协议合同范本
- 合同延期免责协议模板
- 出口贸易合同主要条款
- 北京车牌租拍合同范本
- 合同延期再签补充协议
- 会议付款合同范本模板
- 保险法律合同解除协议
- 合同酬金支付协议模板
- 合伙招投标的合同范本
- 纪委委员工作职责
- 口腔执业医师助理资格考试模拟试卷带答案
- 关于成立公司双重预防体系领导小组的通知
- 中小学教师职称评审讲课答辩英语学科全英答辩题目汇编(带汉语翻译)
- 【公开课课件】二年级下册写话《彩虹色的花》绘本写话
- 12345职能部门培训
- 房屋招租招标文件
- 北师大版五年级数学上册《第二单元》测试卷及答案
- GB/T 21220-2024软磁金属材料
- 2024年网络安全知识竞赛考试题库500题(含答案)
- 短视频与直播电商(全彩微课版) 教学大纲
评论
0/150
提交评论