暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

PostgreSQL征途:数据类型之复合类型

0008.jpg

# 定义一个复数类型 CREATE TYPE complex AS ( r double precision, i double precision ); # 定义一个“person”类型 CREATE TYPE person AS ( name text, age integer, sex boolean ); # 用复合类型创建表 CREATE TABLE capacitance_test_data( test_time timestamp, voltage complex, current complex );

pg0168.png

复合类型的输入

  • 复合类型常量的格式使用的是单引号加圆括号的一种格式;
  • 在此格式中,可以在任何字段值周围加上双引号,如果值本身包含逗号或者圆括弧,则必须用双引号括起来;
CREATE TABLE author( id int, person_info person, book text ); insert into author values( 1, '("张三",29,TRUE)', '张三的自传');

pg0169.png

# 要让一个字段值是“NULL”,那么在列表里它的位置上就不要写任何字符 insert into author values( 2, '("李四",,TRUE)','李四的自传'); # 如果想要一个空字符串,而不是“NULL”,则需要写一对双引号 insert into author values(3,'("",,TRUE)', 'x的自传'); # 可以用ROW表达式语法来构造复合类型值。在大多数场合下,这种方法比用字符串文本的语法更简单,因为不用操心多重引号转义导致的问题。 insert into author values( 4, ROW('王麻子', 29, TRUE), '自传'); # 只要表达式里有一个以上的字段,那么关键字ROW实际上也就是可选的 insert into author values(5, ('王五', 29, TRUE), '自传');

pg0170.png

复合类型的访问

访问复合类型,使用点和域从复合类型中选出一个字段显示,但是在字段前应该加上括号将复合类型名称括起来,避免SQL解析器混淆报错。

select person_info.name from author; ERROR: missing FROM-clause entry for table "person_info" LINE 1: select person_info.name from author; # 系统报错,需要在字段名称中加圆括号 select (person_info).name from author; # 也可以加上表名 select (author.person_info).name from author;

pg0171.png

复合类型的修改

# 更新整个字段 UPDATE author SET person_info = ROW('李成', 39, TRUE) WHERE id =1; UPDATE author SET person_info = ('王二', 49, TRUE) WHERE id =2; # 只更新一个复合字段的某个子域 UPDATE author SET person_info.name ='王二二' WHERE id =2; UPDATE author SET person_info.age = (person_info).age + 1 WHERE id =2; # 不能在“SET”后的字段名周围加圆括弧,但是需要在等号右边的表达式里引用同一个字段的时候加上圆括弧,否则系统会报错 UPDATE author SET (person_info).name ='王二二' WHERE id =2; UPDATE author SET person_info.age =person_info.age + 1 WHERE id =2; # INSERT也可以指定复合字段的子域 INSERT INTO author (id, person_info.name,person_info.age) VALUES(10, '赵六',30);

pg0172.png

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论