数据库 实验11.ppt_第1页
数据库 实验11.ppt_第2页
数据库 实验11.ppt_第3页
数据库 实验11.ppt_第4页
数据库 实验11.ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、,实验11 用户定义数据类型与自定义函数,本实验包含两方面的内容:一个是学习掌握用户定义数据类型的特点及定义方法,以及如何使用用户定义数据类型;另一个是学习掌握用户自定义函数的概念、创建及使用方法。 【知识要点】 1.用户定义数据类型 (1)为何使用用户定义数据类型 当一个或多个表的字段中要存储同样类型的数据,且想确保这些字段具有完全相同的数据类型、长度和是否为NULL时,可使用用户定义数据类型。例如,学生号和教师号的数据类型都是基于CHAR的有固定长度6个字符,且不为空。 (2)用户定义数据类型的特点 用户定义的数据类型名称在数据库中必须是唯一的,但是名称不同的用户定义的数据类型可以有相同的

2、定义。 (3)创建用户定义数据类型语句 sp_addtype typename= 类型, phystype= 系统定义的数据类型 ,nulltype = NULL|NOT NULL ,owner = 属主名,实验11 用户定义数据类型与自定义函数,2.用户定义函数简介 (1)为何使用用户定义函数 用户定义函数可以让你针对特定应用程序问题提供解决方案。这些函数可以简单到计算一个值,也可以复杂到定义和实现业务处理规则。定义了这些函数以后,在需要的时候调用即可,如果业务处理的规则发生变化,只需要修改相应的函数,只要这些接口未发生变化,就可以保持原来的函数调用。 (2)用户定义函数的类型 SQL Se

3、rver2000有3种自定义函数:标量函数、内嵌表值函数和多语句表值函数。 用户定义函数采用零个或更多的输入参数并返回标量值或表。函数最多可以有 1124 个输入参数。当函数的参数有默认值时,调用该函数时必须指定默认 DEFAULT 关键字才能获取默认值。用户定义函数不支持输出参数。 标量函数 标量函数返回在 RETURNS 子句中定义的类型的单个数据值。返回类型可以是除 text、ntext、image、cursor 和 timestamp 之外的任何数据类型。不支持用户定义数据类型和非标量类型(如 table 或 cursor)。 内嵌表值函数 内嵌表值函数返回table。没有函数主体;表

4、是单个SELECT语句的结果集。 多语句表值函数 多语句表值函数返回table,在 BEGIN.END 块中定义的函数主体包含 TRANSACT-SQL 语句,这些语句可生成行并将行插入将返回的表中。,实验11 用户定义数据类型与自定义函数,(3)创建用户定义函数语句 标量函数 CREATE FUNCTION 属主名. 函数名(parameter_name AS 标量参数数据类型 =default ,.n ) RETURNS 标量返回数据类型 WITH , .n AS BEGIN函数体RETURN 标量表达式END 内嵌表值函数 CREATE FUNCTION 属主名. 函数名( parame

5、ter_name AS 标量参数数据类型 = default ,.n ) RETURNS TABLE WITH , .n AS RETURN ( ) select语句 ,实验11 用户定义数据类型与自定义函数,多语句表值函数 CREATE FUNCTION 属主名. 函数名( parameter_name AS 标量参数数据类型 = default ,.n ) RETURNS return_variable TABLE WITH , .n AS BEGIN函数体RETURNEND := ENCRYPTION | SCHEMABINDING := ( column_definition | ta

6、ble_constraint ,.n ) 【实验目的】 学习和掌握用户定义数据类型的概念、创建及使用方法; 学习和掌握用户定义函数的概念、创建及使用方法。,实验11.1 创建和使用用户定义数据类型,【实验目的】 掌握创建用户定义数据类型的方法; 掌握用户定义数据类型的使用。 【实验内容】 用SQL语句创建一用户定义的数据类型Idnum。要求:系统数据类型为 char,长度为6,不为空。用于学号,教师号字段的数据类型; 用企业管理器创建一用户定义的数据类型Nameperson。要求:系统数 据类型char,长度为11,不为空。用于学生姓名,教师姓名字段的数据类型。,【实验步骤】 1.创建和使用一

7、用户定义的数据类型Idnum (1)用SQL语句创建一个用户定义的数据类型Idnum。,T-SQL程序设计及 执行,用户定义的数据类型 对象,实验11.1 创建和使用用户定义数据类型,(2)使用用户定义的数据类型Idnum ,创建一个学生表STUDENT和一个教师表TEACHER,在查询窗口中输入下面程序,创建一个学生数据表STUDENT和一个教师表TEACHER: USE jxsk CREATE TABLE STUDENT( SNO Idnum , SN CHAR(11), SSEX CHAR(2), SAGE TINYINT ) CREATE TABLE TEACHER( TNO Idnu

8、m , TN CHAR(11), TSEX CHAR(2), TAGE TINYINT , TPROF CHAR(11) ),用户定义数据类型的使用,实验11.1 创建和使用用户定义数据类型,2.创建一用户定义的数据类型Nameperson (1)用企业管理器创建一个用户定义的数据类型Nameperson,选择用户定义数据类型,创建用户定义的数据类型对话框,已定义的用户定义数据类型,实验11.1 创建和使用用户定义数据类型,(2)使用用户定义的数据类型Nameperson。修改学生表STUDENT中的姓名类型为Nameperson和教师表中的教师姓名类型为Nameperson。,在查询窗口中输

9、入下面程序,修改学生数据表STUDENT和教师表TEACHER : USE jxsk ALTER TABLE STUDENT ALTER COLUMN SN Nameperson ALTER TABLE TEACHER ALTER COLUMN TN Nameperson,用户定义数据类型的使用,实验11.2 删除数据类型与自定义函数,【实验目的】 掌握使用系统存储过程删除用户定义的数据类型; 掌握使用企业管理器删除用户定义的数据类型。 【实验内容】 使用系统存储过程删除用户定义的数据类型Nameperson; 使用企业管理器删除用户定义的数据类型Idnum。 【实验步骤】 1.使用系统存储过

10、程删除用户定义的数据类型,在查询窗口中输入下面程序,先解除对用户定义的数据类型Nameperson的使用,然后再删除用户定义的数据类型Nameperson: USE jxsk ALTER TABLE student ALTER COLUMN SNO CHAR(6) NOT NULL ALTER TABLE teacher ALTER COLUMN TNO CHAR(6) NOT NULL EXEC Sp_droptype Nameperson GO,2使用企业管理器删除用户定义的数据类型Idnum,实验11.3 创建和使用用户定义函数,【实验目的】 掌握创建标量函数的创建方法; 掌握创建内嵌表

11、值函数的方法; 掌握创建多语句表值函数的方法。 【实验内容】 创建一个标量函数Score_FUN,根据学生姓名和课程名,查询成绩; 创建一个内嵌函数S_Score_FUN,根据学生姓名,查询该生所有选课的 成绩; 创建一个多语句函数ALL_Score_FUN,根据课程名,查询所有选择该课 程学生的成绩信息,包括:学号SNO,姓名SN,性别SEX,成绩SCROE。结果按成绩降序排列。,实验11.3 创建和使用用户定义函数,【实验步骤】 1.用企业管理器创建一个标量函数Score_FUN (1)用企业管理器创建一个标量函数Score_FUN,用户定义函数命令,实验11.3 创建和使用用户定义函数,

12、在窗口“文本” 框中输入下面SQL语句。 CREATE FUNCTION Score_FUN( SNAME_IN CHAR(11), CNAME_IN CHAR(11) ) RETURNS TINYINT AS BEGIN DECLARE SCORE_OUT TINYINT SELECT SCORE_OUT=score FROM sc,s,c WHERE S.sno=Sc.sno and S.cno=So and Sn=SNAME_IN and Cn=CNAME_IN RETURN(SCORE_OUT) END,用户定义的函数对象,实验11.3 创建和使用用户定义函数,(2)使用用户定义的函数

13、Score_FUN,查询学生钱尔的编译原理课程的成绩,执行用户定义的函数,实验11.3 创建和使用用户定义函数,2.用SQL创建一个内嵌函数 (1)用SQL创建一个内嵌函数S_Score_FUN,用SQL创建函数,(2)使用用户定义的函数S_Score_FUN,查询学生钱尔所有课程的成绩,执行函数查询成绩,实验11.3 创建和使用用户定义函数,3.用SQL创建一个多语句函数 (1)用SQL创建一个多语句函数ALL_Score_FUN (2)使用用户定义的函数ALL_Score_FUN,查询选择微机原理课程的学生的成绩,执行函数查询成绩,用SQL创建函数,用户定义函数命令,实验11.4 修改用户

14、定义函数,【实验目的】 掌握使用企业管理器修改用户定义的函数方法; 掌握使用SQL修改用户定义的函数方法。 【实验内容】 用企业管理器修改函数Score_FUN,将成绩转换为等级输出; 用SQL修改函数S_Score_FUN,要求增加一输出列对应成绩的等级 。 【实验步骤】 1.用企业管理器修改函数 (1)用企业管理器修改 函数Score_FUN,在用户定义的函数的属性窗口中的“文本”输入框输入下面T-SQL语句: CREATE FUNCTION Score_FUN( SNAME_IN CHAR(10),CNAME_IN CHAR(10) ) RETURNS CHAR(8) AS BEGIN

15、DECLARE SCORE_OUT CHAR(8) SELECT SCORE_OUT= CASE WHEN SCORE IS NULL THEN 未考 WHEN SCORE =60 AND SCORE =70 AND SCORE =80 AND SCORE = 90 THEN优秀 END FROM sc,s,c WHERE s.sno=sc.sno and o=o and Sn=SNAME_IN and Cn=CNAME_IN RETURN(SCORE_OUT) END,实验11.4 修改用户定义函数,(2)使用用户定义的函数Score_FUN,查询学生钱尔的编译原理课程的成绩,执行用户定义函

16、数,实验11.4 修改用户定义函数,2.用SQL修改函数 (1)用SQL修改函数S_Score_FUN,要求增加一输出列对应成绩的等级,修改函数定义,(2)使用用户定义的函数S_Score_FUN,查询学生钱尔所有课程的成绩,执行函数查询成绩,实验11.5 删除用户定义函数,【实验目的】 掌握使用企业管理器删除用户定义的函数方法; 掌握使用SQL删除用户定义的函数方法。 【实验内容】 用企业管理器删除函数Score_FUN; 用SQL删除函数S_Score_FUN。 【实验步骤】 1.用企业管理器删除函数Score_FUN 2.用SQL删除函数S_Score_FUN,实验11 习题,【实验题】 实验内容和要求 针对教学数据库jiaoxuedb进行如下实验: 1.用SQL语句创建一用户定义的数据类型AgeType。要求:系统数据类型为Tinyint,可为空,取值范围:0100,用于学生表和教师表中的年龄字段和选课表中成绩字段的数据类型。 2.用企业管理器创建数据类型NameType。要求:系统数据类型为Varc

温馨提示

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

评论

0/150

提交评论