版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验名称:PostgreSQL的数据类型与数据表学习目的了解数据库的数据类型以及数据表相关操作实验环境实验环境的操作系统的版本:Ubuntu22.04安装软件:postgresqlpgadmin4学习内容数据类型数字类型数值类型由2字节、4字节或8字节的整数以及4字节或8字节的浮点数和可选精度的十进制数组成。下图列出了可用的数值类型。货币类型money类型存储带有固定小数精度的货币金额。numeric、int和bigint类型的值可以转换为money,不建议使用浮点数来处理处理货币类型,因为存在舍入错误的可能性。字符类型下图列出了PostgreSQL所支持的字符类型:二进制数据类型日期/时间类型下图列出了PostgreSQL支持的日期和时间类型。布尔类型PostgreSQL支持标准的boolean数据类型。boolean有"true"(真)或"false"(假)两个状态,第三种"unknown"(未知)状态,用NULL表示。枚举类型枚举(enum)类型是由一个静态、值的有序集合构成的数据类型。它们等效于很多编程语言所支持的enum类型。枚举类型的一个例子可以是一周中的日期,或者一个数据的状态值集合。枚举类型可以使用\o"CREATETYPE"CREATETYPE命令创建,例如:一旦被创建,枚举类型可以像很多其他类型一样在表和函数定义中使用:几何类型几何数据类型表示二维的平面物体。下表列出了PostgreSQL支持的几何类型。最基本的类型:点。它是其它类型的基础。网络地址类型PostgreSQL提供用于存储IPv4、IPv6、MAC地址的数据类型。用这些数据类型存储网络地址比用纯文本类型好,因为这些类型提供输入错误检查和特殊的操作和功能。在对inet或cidr数据类型进行排序的时候,IPv4地址总是排在IPv6地址前面,包括那些封装或者是映射在IPv6地址里的IPv4地址,比如::或::ffff:。位串类型位串就是一串1和0的字符串。它们可以用于存储和直观化位掩码。我们有两种SQL位类型:bit(n)和bitvarying(n),这里的n是一个正整数。bit类型的数据必须准确匹配长度n,试图存储短些或者长一些的数据都是错误的。bitvarying类型数据是最长n的变长类型;更长的串会被拒绝。写一个没有长度的bit等效于bit(1),没有长度的bitvarying意思是没有长度限制。文本搜索类型全文检索即通过自然语言文档的集合来找到那些匹配一个查询的检索。PostgreSQL提供了两种数据类型用于支持全文检索:UUID类型数据类型uuid存储由RFC4122、ISO/IEC9834-8:2005以及相关标准定义的通用唯一标识符(UUID)(某些系统将这种数据类型引用为全局唯一标识符GUID)。这种标识符是一个128位的量,它由一个精心选择的算法产生,该算法能保证在已知空间中任何其他使用相同算法的人能够产生同一个标识符的可能性非常非常小。因此,对于分布式系统,这些标识符相比序列生成器而言提供了一种很好的唯一性保障,序列生成器只能在一个数据库中保证唯一。一个UUID被写成一个小写十六进制位的序列,该序列被连字符分隔成多个组:首先是一个8位组,接下来是三个4位组,最后是一个12位组。总共的32位(十六进制位)表示了128个二进制位。一个标准形式的UUID类似于:PostgreSQL也接受另一种输入形式:使用大写位、标准格式被花括号包围、忽略某些或者全部连字符、在任意4位组后面增加一个连字符。例如:Xml类型xml数据类型可以用于存储XML数据。将XML数据存到text类型中的优势在于它能够为结构良好性来检查输入值,并且还支持函数对其进行类型安全性检查。要使用这个数据类型,编译时必须使用
configure--with-libxml。xml可以存储由XML标准定义的格式良好的"文档",以及由XML标准中的
XMLDecl?content
定义的"内容"片段,大致上,这意味着内容片段可以有多个顶级元素或字符节点。xmlvalueISDOCUMENT表达式可以用来判断一个特定的xml值是一个完整的文件还是内容片段。创建XML值使用函数xmlparse:来从字符数据产生xml类型的值:JSON类型json数据类型可以用来存储JSON(JavaScriptObjectNotation)数据,这样的数据也可以存储为text,但是json数据类型更有利于检查每个存储的数值是可用的JSON值。此外还有相关的函数来处理json数据:数组类型PostgreSQL允许将字段定义成变长的多维数组。数组类型可以是任何基本类型或用户定义类型,枚举类型或复合类型。15.1声明数组创建表的时候,我们可以声明数组,方式如下:pay_by_quarter为一维整型数组、schedule为二维文本类型数组。我们也可以使用"ARRAY"关键字,如下所示:15.2插入值插入值使用花括号{},元素在{}使用逗号隔开:15.3访问数组现在我们可以在这个表上运行一些查询。首先,我们演示如何访问数组的一个元素。这个查询检索在第二季度薪水变化的雇员名:数组的下标数字是写在方括弧内的。15.4修改数组我们可以对数组的值进行修改:或者使用ARRAY构造器语法:15.5数组中检索要搜索一个数组中的数值,你必须检查该数组的每一个值。比如:另外,你可以用下面的语句找出数组中所有元素值都等于10000的行:或者,可以使用generate_subscripts函数。例如:复合类型复合类型表示一行或者一条记录的结构;它实际上只是一个字段名和它们的数据类型的列表。PostgreSQL允许像简单数据类型那样使用复合类型。比如,一个表的某个字段可以声明为一个复合类型。16.1声明复合类型下面是两个定义复合类型的简单例子:语法类似于CREATETABLE,只是这里只可以声明字段名字和类型。定义了类型,我们就可以用它创建表:16.2复合类型值输入要以文本常量书写复合类型值,在圆括弧里包围字段值并且用逗号分隔他们。你可以在任何字段值周围放上双引号,如果值本身包含逗号或者圆括弧,你必须用双引号括起。复合类型常量的一般格式如下:一个例子是:16.3访问复合类型要访问复合类型字段的一个域,我们写出一个点以及域的名字,非常类似从一个表名字里选出一个字段。实际上,因为实在太像从表名字中选取字段,所以我们经常需要用圆括弧来避免分析器混淆。比如,你可能需要从on_hand例子表中选取一些子域,像下面这样:这样将不能工作,因为根据SQL语法,item是从一个表名字选取的,而不是一个字段名字。你必须像下面这样写:或者如果你也需要使用表名字(比如,在一个多表查询里),那么这么写:现在圆括弧对象正确地解析为一个指向item字段的引用,然后就可以从中选取子域。范围类型范围数据类型代表着某一元素类型在一定范围内的值。例如,timestamp范围可能被用于代表一间会议室被预定的时间范围。PostgreSQL内置的范围类型有:int4range—integer的范围int8range—bigint的范围numrange—numeric的范围tsrange—timestampwithouttimezone的范围tstzrange—timestampwithtimezone的范围daterange—date的范围此外,你可以定义你自己的范围类型。范围值的输入必须遵循下面的格式:圆括号或者方括号显示下边界和上边界是不包含的还是包含的。注意最后的格式是空,代表着一个空的范围(一个不含有值的范围)。对象标识符类型PostgreSQL在内部使用对象标识符(OID)作为各种系统表的主键。同时,系统不会给用户创建的表增加一个OID系统字段(除非在建表时声明了WITHOIDS或者配置参数default_with_oids设置为开启)。oid类型代表一个对象标识符。除此以外oid还有几个别名:regproc,regprocedure,regoper,regoperator,regclass,regtype,regconfig,和regdictionary。伪类型PostgreSQL类型系统包含一系列特殊用途的条目,它们按照类别来说叫做伪类型。伪类型不能作为字段的数据类型,但是它可以用于声明一个函数的参数或者结果类型。伪类型在一个函数不只是简单地接受并返回某种SQL数据类型的情况下很有用。下表列出了所有的伪类型:数据表1.创建数据表创建数据表需要使用SQL中的CREATETABLE语句,该语句的基本语法如下:其中,table_name为表名,column_name为列名,datatype为列的数据类型,constraint为列约束。下面是一个创建用户信息表的示例:该语句将创建一个名为userinfo的数据表,包含了五个列:id、name、age、email和birthday。其中,id列是主键,并且使用了SERIAL数据类型,可以自动递增;name列使用了VARCHAR数据类型,长度限制为50,且不能为空;age列使用了SMALLINT数据类型;email列使用了VARCHAR数据类型,长度限制为50,并且是唯一的;birthday列使用了DATE数据类型。2.删除数据表删除数据表需要使用SQL中的DROPTABLE语句,该语句的基本语法如下:其中,table_name为要删除的表名。下面是一个示例删除userinfo表的语句:执行该语句后,将会删除名为userinfo的数据表。3.插入数据向数据表中插入数据需要使用SQL中的INSERTINTO语句,该语句的基本语法如下:其中,table_name为要插入数据的表名,column1、column2、column3等为要插入的列名,value1、value2、value3等为要插入的值。下面是一个向userinfo表中插入一条数据的示例:该语句将会向名为userinfo的数据表中插入一条数据,包含了name、age、email和birthday四个列的值。其中,name列的值为'张三',age
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026湖南城建职业技术学院高层次人才招聘7人备考题库含答案详解(完整版)
- 2026江苏南通市市级政府投资项目建设中心招聘政府购买服务岗位人员1人备考题库含答案详解(完整版)
- 2026福建省省属艺术院团招聘工作人员21人备考题库及完整答案详解
- 2026河南郑州市妇联公益性岗位招聘2人备考题库完整答案详解
- 2026青海海东市平安驿文化旅游有限公司招聘1人备考题库附答案详解(精练)
- 2026浙江杭州市文三教育集团定山小学招聘语文老师(非事业)1人备考题库含答案详解ab卷
- 2026北京房山区窦店第二小学招聘备考题库完整答案详解
- 2026江西南昌市江铃新能源汽车有限公司招聘备考题库含答案详解
- 【铜川】2025年上半年陕西铜川市事业单位招聘带编入伍高校毕业生3人笔试历年典型考题及考点剖析附带答案详解
- 2026年淮南市农业农村局引进急需紧缺人才4人备考题库含答案详解(能力提升)
- 2025年济南新旧动能转换起步区公开招聘社区工作者(30人)笔试考试参考题库及答案解析
- 运输岗位安全生产责任制
- 幼儿园科学活动课程标准
- 彩陶线描绘画课件
- 安全管理目标和保证措施
- 轴承游隙知识培训
- 2025年中国火车模型行业市场分析及投资价值评估前景预测报告
- 加油站电气安全培训课件
- 皮带走廊脚手架施工方案
- 家校协同视角下班主任工作策略的创新研究
- -工贸企业使用危险化学品指南
评论
0/150
提交评论