第十章 用户自定义数据类型
- 格式:ppt
- 大小:650.00 KB
- 文档页数:52
7、⽤户⾃定义数据类型1、结构体 1.1、结构体的定义 在实际的处理对象中,有许多信息是由多个不同类型的数据组合在⼀起进⾏描述,⽽且这些不同类型的数据是互相联系组成了⼀个有机的整体。
此时,就要⽤到⼀种新的构造类型数据-----结构体,简称结构。
结构体的使⽤为处理复杂的数据结构(如动态数据结构等)提供了有效的⼿段,⽽且,它们为函数间传递不同类型的数据提供了⽅便。
结构体和数组⼀样,也是⼀种构造型数据类型,是⽤户⾃定义的新数据类型,在结构体中可以包含若⼲个不同数据类型和不同意义的数据项(当然也可以相同),从⽽使这些数据项组合起来反映某⼀个信息。
结构体是⼀种构造数据类型,结构体的语法如下:Struct 结构体名{数据类型成员名1;数据类型成员名2;数据类型成员名3;….数据类型成员名n;}; 在花括号中的内容也称为“成员列表”或“域表”。
其中每个成员的命名规则与变量名相同,成员之间⽤“;”作为结束符,整个结构的定义也⽤“;”作为结束符,数据类型可以是基本变量类型、数组类型、结构体类型、联合体类型或枚举类型等。
先定义结构体类型,再定义结构体变量。
结构体中的成员名可以与程序中的变量名相同,⼆者并不代表同⼀对象,编译程序可以⾃动对它们进⾏区分。
定义结构体类型时不会分配空间,只有⽤结构体类型定义变量时才会分配空间。
总结⼀下结构体类型的特点: (1)、结构体类型是⽤户⾃⾏构造的 (2)、它由若⼲不同的基本数据类型的数据构成 (3)、它属于C语⾔的⼀种数据类型,与整形、浮点型相当。
因此,定义它是不分配空间,只有⽤它定义变量时才分配空间。
1.2、结构体变量的声明、使⽤及初始化 1.2.1、结构体变量的声明 在定义了结构体类型后,就可以声明结构体类型的变量。
有下⾯⼏种形式: (1)、先定义结构体类型,再定义变量名Struct 结构体名{类型成员名;类型成员名;};Struct 结构体名变量名1,变量名2…;这⾥的结构体名是结构体的标识符,不是变量名。
用户定义的数据类型用户定义的数据类型基于在 Microsoft SQL Server 中提供的数据类型。
当几个表中必须存储同一种数据类型时,并且为保证这些列有相同的数据类型、长度和可空性时,可以使用用户定义的数据类型。
例如,可定义一种称为postal_code 的数据类型,它基于 Char 数据类型。
当创建用户定义的数据类型时,必须提供三个数:数据类型的名称、所基于的系统数据类型和数据类型的可空性。
(1)创建用户定义的数据类型创建用户定义的数据类型可以使用 Transact-SQL 语句。
系统存储过程sp_addtype 可以来创建用户定义的数据类型。
其语法形式如下:sp_addtype {type},[,system_data_bype][,'null_type']其中,type 是用户定义的数据类型的名称。
system_data_type 是系统提供的数据类型,例如 Decimal、Int、Char 等等。
null_type 表示该数据类型是如何处理空值的,必须使用单引号引起来,例如'NULL'、'NOT NULL'或者'NONULL'。
例子:Use custExec sp_addtype ssn,'Varchar(11)',"Not Null'创建一个用户定义的数据类型 ssn,其基于的系统数据类型是变长为11 的字符,不允许空。
例子:Use custExec sp_addtype birthday,datetime,'Null'创建一个用户定义的数据类型 birthday,其基于的系统数据类型是 DateTime,允许空。
例子:Use masterExec sp_addtype telephone,'varchar(24),'Not Null'Eexc sp_addtype fax,'varchar(24)','Null'创建两个数据类型,即 telephone 和 fax(2)删除用户定义的数据类型当用户定义的数据类型不需要时,可删除。
数据库系统原理实验报告实验名称:__用户定义数据类型与自定义函数_ 指导教师:_叶晓鸣刘国芳_____ 专业:_计算机科学与技术_ 班级:__2010级计科班_ 姓名:_文科_____学号: 100510107 完成日期:_2012年11月10日_成绩: ___ ___一、实验目的:(1)学习和掌握用户定义数据类型的概念、创建及使用方法。
(2)学习和掌握用户定义函数的概念、创建及使用方法。
二、实验内容及要求:实验 11.1 创建和使用用户自定义数据类型内容:(1)用SQL语句创建一个用户定义的数据类型Idnum。
(2)交互式创建一个用户定义的数据类型Nameperson。
要求:(1)掌握创建用户定义数据类型的方法。
(2)掌握用户定义数据类型的使用。
实验 11.2 删除用户定义数据类型内容:(1)使用系统存储过程删除用户定义的数据类型Namperson。
(2)交互式删除用户定义的数据类型Idnum。
要求:(1)掌握使用系统存储过程删除用户定义的数据类型。
(2)掌握交互式删除用户定义的数据类型。
实验 11.3 创建和使用用户自定义的函数内容:(1)创建一个标量函数Score_FUN,根据学生姓名和课程名查询成绩。
(2)创建一个内嵌表值函数S_Score_FUN,根据学生姓名查询该生所有选课的成绩。
(3)创建一个多语句表值函数ALL_Score_FUN,根据课程名查询所有选择该课程学生的成绩信息。
要求:(1)掌握创建标量值函数的方法。
(2)掌握创建内嵌表值函数的方法。
(3)掌握创建多语句表值函数的方法。
实验 11.4 修改用户定义的函数内容:(1)交互式修改函数Score_FUN,将成绩转换为等级输出。
(2)用SQL修改函数S_Score_FUN,要求增加一输出列定义的成绩的等级。
要求:(1)掌握交互式修改用户定义函数的方法。
(2)掌握使用SQL修改用户定义函数的方法。
实验 11.5 输出用户定义的函数内容:(1)交互式删除函数Score_FUN。