SQL-92内建数据类型详解:域类型与用户定义类型

需积分: 10 3 下载量 166 浏览量 更新于2024-08-15 收藏 403KB PPT 举报
在高级SQL的数据库系统概念中,第四章主要探讨了内建数据类型,这是理解数据库设计和操作的基础。章节4.1.1首先介绍了SQL-92标准中的域类型,包括: 1. **固定长度字符串** (char(n)):用于存储预设长度的字符序列。 2. **可变长度字符串** (varchar(n)):存储长度不固定的字符序列,根据实际需要动态调整。 3. **整数类型** (int):用于表示整数值,可能包含不同的范围,如smallint用于较小范围的整数。 4. **定点数** (numeric(p,d)):精确的小数类型,左边有p位数字,其中d位为小数部分。 5. **浮点数类型** (float):单精度浮点数,用于存储带有小数的数值。 6. **双精度浮点数** (double precision):提供更高的精度,用于存储更大的数值范围。 7. **日期类型** (date):用于存储日期信息,如年、月、日。 8. **时间类型** (time):仅包含时间部分,如小时、分钟、秒。 9. **时间间隔类型** (interval):表示两个日期或时间之间的时间跨度。 章节内容还涉及日期类型的特定操作,如将字符串转换为时间戳(cast),提取日期元素(extract year from datetime),以及计算两个日期之间的天数差。此外,内建数据类型还讨论了兼容类型间的运算,通过强制类型转换(type coercion)来处理不同类型的数值运算。 用户定义类型(4.1.2)是高级SQL中的另一个重要概念,允许用户自定义新的数据类型。例如,创建自定义类型`person-name`和`ADDRESS_LIST`,模仿C语言中的结构体。在创建表时,可以使用这些自定义类型作为列的数据类型,如`createtable a (a1 char(10), a2 person-name)`。 用户定义类型还包括独特类型(distinct type)和结构化类型(structured type),如`Dollars`类型(一个具有12位精度,2位小数的货币类型),以及`person`类型,用于表示包含pid和名字等字段的结构。 理解这些内建数据类型和用户定义类型对于编写高效且精确的SQL查询至关重要,它们直接影响到数据的存储、检索和处理效率,以及数据的一致性和完整性。通过熟练掌握这些概念,数据库管理员和开发者可以更好地设计和优化数据库架构。