当前位置: 首页 > 科技观察

PostgreSQL数据类型_0

时间:2023-03-13 00:10:56 科技观察

本章讨论PostgreSQL数据类型。在创建表时,要求每一列都指定数据类型,即表中的字段应该存储什么样的数据。这带来了几个好处:一致性:对相同数据类型的列的操作给出一致的结果,通常是最快的。验证:使用数据类型正确表示数据并拒绝超出范围的数据类型的数据格式验证。压缩:由于一个列可以存储单一类型的值,所以它是以紧凑的方式存储的。性能:正确使用数据类型可以提供最有效的数据存储。可以快速处理存储的值,提高性能。PostgreSQL支持范围广泛的数据类型。此外,用户可以使用SQL命令CREATETYPE创建自己的自定义数据类型。PostgreSQL中有不同类别的数据类型。如下:数值类型数值类型由两个字节组成,4字节和8字节整数,4字节和8字节浮点数和可选精度的小数。下表列出了可用的类型。货币类型货币类型以固定的小数精度存储货币金额。可以转换为货币的数字,int和bigint数据类型的值。由于舍入误差,不建议使用浮点数来处理货币潜力。字符类型下表列出了PostgreSQL中可用的常见字符类型。二进制数据类型bytea数据类型允许存储二进制字符串,如下表所述。日期/时间类型PostgreSQL支持一整套SQL日期和时间类型,列在下表中。根据公历日期计算。这里,除了日期类型之外的所有类型的分辨率都是day1微秒/14位。Boolean类型PostgreSQL提供了标准的SQL类型Boolean。Boolean类型可以有几种状态:true,false,第三种状态是null,也就是SQL的空值表示。枚举类型枚举(enumerated)类型的数据类型,由一组静态的、有序的值组成。在很多支持枚举类型的编程语言中,它们是相等的。与其他类型不同,枚举类型需要使用CREATETYPE命令创建。此类型用于存储一组静态的、有序的值,例如罗盘方向,即NORTH、SOUTH、EAST和WEST或如下所示的星期几:生成枚举后,它们可以像任何其他类型一样。几何类型几何数据类型表示二维空间对象。最根本的区别是所有其他类型阵型的基础。网络地址类型PostgreSQL提供数据类型来存储IPv4、IPv6地址和MAC地址。最好使用这些类型而不是纯文本类型来存储网络地址,因为这些类型提供拼写检查和特殊操作和功能。位串类型位串类型用于存储位掩码。它们要么是0,要么是1。SQL的位类型有bit(n)和bit(n)两种,其中n为正整数文本搜索类型该类型支持全文搜索,即通过自然集合的搜索查找那些***查询活动的语言文件。这有两种数据类型UUID类型AUUID(UniversallyUniqueIdentifier)写成一串小写的十六进制数字,后面跟着一个连字符,具体来说是一组8位,后面是三组4位,后面是一组的12位数字分成几组,共32位,128种表示。UUID的一个示例是:550e8400-e29b-41d4-a716-446655440000XMLTypexml数据类型可用于存储XML数据。为了存储XML数据,首先创建XML值函数XMLPARSE,如下所示:XMLPARSE(DOCUMENT'PostgreSQLTutorial...')XMLPARSE(CONTENT'xyzbarfoo')JSON类型JSON数据类型可用于存储JSON(JavaScriptObjectNotation)数据。此类数据也可以存储为文本,但json数据类型具有检查每个存储值是否为有效JSON值的优势。还有相关的支持函数可以直接用来处理JSON数据类型,如下:array/arraytypePostgreSQL将表定义为一个可变长度的多维列数组。可以创建的任何内置或用户定义的原始类型、枚举类型或复合类型的数组。数组声明数组类型可以声明为:CREATETABLEmonthly_savings(nametext,saving_per_quarterinteger[],schemetext[][]);或使用关键字“ARRAY”插入:CREATETABLEmonthly_savings(nametext,saving_per_quarterintegerARRAY[4],schemetext[][]);值数组的值可以插入到一个文本常量中,将元素值括在花括号内,并用逗号分隔。一个例子如下:使用访问数组访问数组的示例如下所示。以下命令将选择人员,他们存储在第二个,第四个。UPDATEmonthly_savingsSETsaving_per_quarter='{25000,25000,27000,27000}'WHEREname='Manisha';或数组表达式语法:UPDATEmonthly_savingsSETsaving_per_quarter=ARRAY[25000,25000,27000,27000]WHEREname='ARRAYS一个示例搜索数组YS;如下。SELECT*FROMmonthly_savingsWHEREsaving_per_quarter[1]=10000ORsaving_per_quarter[2]=10000ORsaving_per_quarter[3]=10000ORsaving_per_quarter[4]=10000;如果已知数组的大小,则可以使用上述搜索方法。否则,以下示例显示了在大小未知时如何进行搜索。SELECT*FROMmonthly_savingsWHERE10000=ANY(saving_per_quarter);复合类型这种类型表示字段名称和数据类型,即结构表中的行或记录列表。复合类型声明以下示例演示如何声明复合类型:CREATETYPEinventory_itemAS(nametext,supplier_idinteger,pricenumeric);这种数据类型可以在创建表中使用,如下所示:CREATETABLEon_hand(iteminventory_item,countinteger);复合值输入复合值可以插入文字常量,将值封装在字段括号内,并用逗号分隔。示例如下:这有效地定义了上面的inventory_item。只要有多个字段,行关键字实际上在表达式中是可选的。访问复合类型要访问复合列的字段,使用字段名很像从表名中选择字段。例如,要选择一些子字段,对on_hand示例表的查询如下所示:您甚至可以使用表名(例如,在多表查询中),如下所示:RangeType一种范围类型数据类型,它采用一系列数据。范围类型可以是离散范围(例如,所有整数值1到10)或连续范围(例如,任何时间点的上午10:00到上午11:00)。内置的范围类型range包括:int4range-Rangeofintegerint8range-Rangeofbigintnumrange-Rangeofnumerictsrange-Rangeoftimestampwithouttimezonetstzrange-Rangeoftimestampwithtimezonedaterange-Rangeofdate您可以创建自定义范围类型来制作新类型的适用范围,例如使用int类型作为基础IP地址范围,或使用基于Float数据类型的浮点范围。范围类型支持分别使用[]和()字符的包含和排除范围边界,例如:[4,9]'表示包括4但不包括9的所有整数。对象标识符类型对象标识符(OID)由PostgreSQL内部使用作为各种系统表的主键。OIDS如果指定了WITH或default_with_oids配置变量,只有在这种情况下启用的OID才会添加到用户创建的表中。下表列出了几种别名类型。OID别名类型没有自己的操作,除了专门的输入和输出过程。伪类型PostgreSQL类型系统包含许多特殊用途的项目,统称为伪类型。伪类型不能用作列的数据类型,但可以用于声明函数的参数或结果类型。下表列出了现有的伪类型。原文链接:http://www.yiibai.com/html/postgresql/2013/080435.html