psql-04数据类型(2)
复合类型
PostgreSQL中可以如C语言中的结构体一样定义一个复合类型;- 创建
create type person as (
name text,
age int,
sex boolean
);
create table author (
id int,
person_info person,
book, text
);
查询定义的复合类型和枚举类型一样
输入
insert into author values (1, '("jinks", 24, true)', 'test book');
//用row表达式来构造复合类型值
insert into author values (1, row('jinks', 24, true), 'test book');
//只要表达式有超过一个字段,row关键字也可以省去
insert into author values (1, ('jinks", 24, true), 'test book');
- 访问
select (person_info).name from author;
- 更新
update author set person_info = row('pen' 24, true) where id = 1;
update author set person_info = ('pen' 24, true) where id = 1;
//只更新一个复合字段的某个子域;注意set后不要跟圆括号;
update author set person_info.name = 'jinks' where id = 1;
update author set person_info.age = (person_info).age + 1 where id = 1;
- 使用
row表达式和使用引号还有一个区别就是使用引号时,对于在字符串类型中保存反斜杆,必须加两层;
XML类型
- 用于储存
xml数据,数据库会对输入的数据进行安全性检查; - 使用
xml类型数据时注意字符集问题;
JSON类型
同上,也会自动进行安全性检查;
PostgreSQL9.4中又提供了JSONBl类型JSON类型把输入的数据不变地保存,使用时重新解析;JSONB类型在存放时就把JSON解析成二进制格式,使用时性能更高;JSONB支持在其上建索引;
把一个
JSON字符串转换成JSONB类型时,JSON字符串内的数据类型实际上被转换成PostgreSQL中的类型,映射关系如下:
| JSON | PostgreSQL | 注意点 |
|---|---|---|
| string | text | 注意字符集的一些限制 |
| number | numeric | JSON中没有PostgreSQL中的NaN和infinity值 |
| boolean | boolean | JSON仅能用小写true,false| |
| null | (none) | SQL中的NULL代表不同的意思 |
Range类型
数组类型
- 定义:
//在目前PostgreSQL中,定义数组长度和纬度都是没有意义的
create table arr1(id int, col1 int[], col2 text[]);
create table arr2(id int, col1 int[10], col2 text[][]);
- 输入
insert into arr1 values (1, '{1,2,3}', '{a,b,c}');
//除了`box`类型分隔符为分号外,其他都基本使用逗号;
create table arr2 (box box[]);
insert into arr2 values('{((0,1),(2,3));((1,1),(2,2))}');
//字符串内容允许空格但不许为空
//字符串有逗号输入要用双引号
//字符串有单引号输入用两个单引号
//字符串双引号输入要加反斜杠
//多维数组输入
insert into arr3 values (array[['a','b'],['c','d']]);
insert into arr3 values ('{{a,b},{c,d}}');
- 访问
//一维数组
select col[1] form arr where id = 1;
//PostgreSQL中数组的下标默认从1开始;也可以插入数据的时候指定
create table test(id init[]);
insert into test values('[0:2]={1,2,3}'); //使用切片
select id[0], id[1], id[2] from test;
select id[0:2] from test;
//二维数组必须使用切片
//访问多维数组的一维
select id[1][1] form test;
- 修改
//注意不能修改多维数组中某一维的值
update test set col[1][2] = 2 where id = 1;
伪类型
- 不能作为字段的数据类型,但可以用于声明一个函数的参数或者结果类型;
UUID类型
- 用于存储一个UUID;
pg_lsn类型
pg_lsn类型是PostgreSQL9.4版本之后提高的LSN的一种数据类型;LSN表示WAL日志的位置,在一些记录WAL日志信息的表系统中某些字段的类型就是pg_lsn类型;
psql-04数据类型(2)的更多相关文章
- C语言入门:04.数据类型、常量、变量
一.数据 1.什么是数据 生活中时时刻刻都在跟数据打交道,比如体重数据.血压数据.股价数据等.在我们使用计算机的过程中,会接触到各种各样的数据,有文档数据.图片数据.视频数据,还有聊QQ时产生的文字数 ...
- Day 04 数据类型基础
目录 什么是数据类型 为什么对数据分类 整型和浮点型统称为数字类型 整型(int) 作用 定义 使用方法 浮点型(float) 作用 定义 使用方法 强制类型转换 什么是字符串 作用 定义 使用方法 ...
- 实验与作业(Python)-04 数据类型、数学函数与字符串
截止日期 实验目标 继续熟悉for循环与turtle 数值运算符 math库常用函数 字符串转化为数值类型(int, float, complex) 字符串常用函数 实验内容 任务1.使用for代替w ...
- 【Spark机器学习速成宝典】基础篇04数据类型(Python版)
目录 Vector LabeledPoint Matrix 使用C4.5算法生成决策树 使用CART算法生成决策树 预剪枝和后剪枝 应用:遇到连续与缺失值怎么办? 多变量决策树 Python代码(sk ...
- Android USB ADB ATUH 验证包验证流程
#define ADB_AUTH_TOKEN 1 #define ADB_AUTH_SIGNATURE 2 #define ADB_AUTH_RSAPUBLICKEY 3 1. 连接USB,手机发 ...
- 2019-03-07-day006-小数据池
01 昨日内容回顾 字典: 映射,{} 键值对的形式存储,容器型数据类型,key 唯一的,可哈希的,value任意数据类型,对象. 3.6之前无序的, 3.6之后,有序的(第一次创建字典的顺序) 特点 ...
- SHA1WithRSA
SHA1WithRSA:用SHA算法进行签名,用RSA算法进行加密. 算法说明: 在对进行SHA1算法进行签名后,要求对签名后的数据进行处理,而不是直接进行RSA算法进行加密. 要求把SHA1签名 ...
- Python全栈开发第二期课表
day01-python 全栈开发-基础篇 01 开课介绍 01:55:13 ★ 02 开课介绍02 01:28:31 ★ 03 开课介绍03 00:22:55 ...
- 01 Java基础
Java基础 01 Hello 随便新建一个文件夹,存放代码 新建一个Java文件 文件后缀名为.java Hello.java [注意点]系统可能没有显示文件后缀名,我们需要手动打开 编写代码 p ...
- 05 SpringMVC:02.参数绑定及自定义类型转换&&04.SpringMVC返回值类型及响应数据类型&&05.文件上传&&06.异常处理及拦截器
springMVC共三天 第一天: 01.SpringMVC概述及入门案例 02.参数绑定及自定义类型转换 03.SpringMVC常用注解 第二天: 04.SpringMVC返回值类型及响应数据类型 ...
随机推荐
- android入门到熟练(五)---广播
1.广播类型:标准广播和有序广播.标准广播是异步广播在广播发出之后所有接收器几乎会同一时刻接收到,没有先后顺序,效率高,但无法被截断.有序广播则是同步广播,同一时刻只能一个接收器接收这条消息,等执行完 ...
- IOS 推送消息 php做推送服务端
IOS推送消息是许多IOS应用都具备的功能,最近也在研究这个功能,参考了很多资料终于搞定了,下面就把步骤拿出来分享下: iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPh ...
- Android Studio新建了一个项目提示Error:Unable to start the daemon process
提示如下错误:
- java 设置允许ajax XMLHttpRequest 请求跨域访问
怎样才能算跨域?协议,域名,端口都必须相同,才算在同一个域. 方案1: 使用XMLHttpRequest... 异步请求不能跨域访问,除非要访问的网页响应头信息设置为允许跨域访问. 将网页设置为允许 ...
- NYOJ题目273字母小游戏
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAswAAAIZCAIAAAA9QP7RAAAgAElEQVR4nO3dPXKjzBqG4bMJ5VqIU2
- codevs 1080 线段树练习
链接:http://codevs.cn/problem/1080/ 先用树状数组水一发,再用线段树水一发 树状数组代码:84ms #include<cstdio> #include< ...
- PAL/NTSC 制电视广播技术有关知识--FPGA
1.PAL和NTSC的区别 常见的电视信号制式是PAL和NTSC,另外还有SECAM等. NTSC即正交平衡调幅制,PAL为逐行倒像正交平衡调幅制. (1)PAL电视标准 PAL电视标准,每秒25帧 ...
- CPU工作状态的知识介绍
转自:http://www.bbwxbbs.com/forum.php?mod=viewthread&tid=2552 近几年,个人计算机的运行速度有了质的飞跃,但是功耗却没能与时俱进,着 ...
- Hadoop 苦旅(1)——准备以及Cygwin安装
安装篇: 安装是最基本的,也是最难的.俗话说的好,万事开头难啊!的确如此.刚开始,自己折腾,总会是这样那样的问题,也许一个小的问题,就要推倒了重来.我现在就将这几天(2014-2-16~2014-2- ...
- makefile示例
1. 生成.so动态库 示例一: SoVer = 10010110CfgVer = 10010110 BinName = fnights.soGameName = "\"fnigh ...