博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
postgresql数据类型之混合类型
阅读量:6074 次
发布时间:2019-06-20

本文共 1717 字,大约阅读时间需要 5 分钟。

hot3.png

##概述##

这种有点像java中的class,c中的struct

oracle中的object类型或者在pl/sql中的record类型.

创建composite type

我们测试使用一下pg中的这个数据类型

db01=# create type my_point as (x int,y int);CREATE TYPEdb01=# create table my_position(id int,w my_point);CREATE TABLEdb01=# \d my_position   Table "hippo.my_position" Column |   Type   | Modifiers --------+----------+----------- id     | integer  |  w      | my_point | db01=# \d my_pointComposite type "hippo.my_point" Column |  Type   | Modifiers --------+---------+----------- x      | integer |  y      | integer |

##构造数据##

db01=# insert into my_position values(1,row(10,20));INSERT 0 1db01=# insert into my_position values(2,(20,30));INSERT 0 1db01=# select * from my_position; id |    w    ----+---------  1 | (10,20)  2 | (20,30)

两种方式都可以

##访问成员##

db01=# delete from my_position where w.y=30;ERROR:  missing FROM-clause entry for table "w"LINE 1: delete from my_position where w.y=30;                                      ^db01=# delete from my_position where (w).y=30;DELETE 1

不加()的话,默认认为是表名,所以会失败

修改

只修改其中一个成员

db01=# update my_position set w.x = (w).x + 1 where id = 1;UPDATE 1db01=# select * from my_position; id |    w    ----+---------  1 | (11,20)(1 row)

虽然set后的w可以不用加(),但是强烈建议保持一致,加上().

整个记录一起修改

db01=# update my_position set w = row(1,2) where id = 1;UPDATE 1db01=# select * from my_position; id |   w   ----+-------  1 | (1,2)(1 row)

不加关键字row也可以,但是推荐加上,表述更清晰

##特别的表示##

db01=# insert into my_position(id,w.x,w.y) values(1,100,200);INSERT 0 1db01=# select * from my_position where id = 1; id |     w     ----+-----------  1 | (1,2)  1 | (100,200)(2 rows)

composite type 这时候每个成员可以像表字段一样列出来.

另外函数中使用composite type,访问方式也是一样.我觉得跟plsql中的record非常像.

//END

转载于:https://my.oschina.net/hippora/blog/383504

你可能感兴趣的文章
OpenCV4Android
查看>>
16秋进度条9
查看>>
SocketServer
查看>>
生物信息学数据库--介绍
查看>>
使用Nodejs获取博客园博客数据并处理转发
查看>>
[05]表格元素
查看>>
[MongoDB教程] 1.简介
查看>>
结构和级联(CSS终极指南随笔)
查看>>
MFC TOOLBAR
查看>>
Maven项目构建利器01——为什么要使用Maven
查看>>
html编写过程中组件的布局
查看>>
理解管理信息系统
查看>>
ng1.3+表单验证<AngularJs>
查看>>
命令行下玩VC
查看>>
linux下svn客户端更改用户账号密码
查看>>
鸡蛋的营养价值和正确吃法
查看>>
IOS系列swift语言之课时四
查看>>
Yii教程
查看>>
软件设计模式
查看>>
写GULP遇到的ES6问题详解
查看>>