《GreenPlum系列》GreenPlum初级教程-04GreenPlum数据类型

第四章 GreenPlum数据类型

1.基本数据类型

1.1 数值类型

类型名称存储空间描述范围
smallint2字节小范围整数-32768 ~ 32767
integer4字节常用的整数-2147483648~+2147483647
bigint8字节大范围的整数-9223372036 854 ~9223372036854
decimal变长用户声明精度,精确无限制
numeric变长用户声明精度,精确无限制
real4字节变精度,不精确6位十进制数字精度
double precision8字节变精度,不精确15位十进制数字精度
serial4字节自增整数1 - 2147483 647
bigserial8字节大范围的自增整数1 - 9223372036854775807
smallserial字节小范围的自增整数1 - 32767

1.2 字符类型

类型名称描述
character varying(n),varchar(n)变长,有长度限制
character(n),char(n)定长,不足补空白
text变长,无长度限制

1.3 时间类型

类型名称存储空间描述最低值最高值时间精度
timestamp[§][without time zone]8字节日期和时间4713BC5874897AD1毫秒
timestamp[§] with time zone8字节日期和时间,带时区4713BC5874897AD1毫秒
interval[§]12字节时间间隔-178 000 000年178 000 000年1毫秒
date4字节只用于表示日期4713BC5 874 897AD1天
time[§][without time zone]8字节只用于表示一日内的时间00:00:0024:00:001毫秒
time[§] with time zone12字节只用于表示一日内时间,带时区00:00:00+145924:00:00-14591毫秒

2.复杂数据类型

2.1 枚举类型

枚举类型是一个包含静态和值的有序集合的数据类型,类似于Java中的enum类型,需要使用create type命令创建。

1)创建枚举类型

zxy=# create type ods.enumtype as enum('Mon','Tue','Wed','Thu','Fri','Sat','Sun');
CREATE TYPE

2)创建表引用枚举

zxy=# create table ods.enum_table(
zxy(# id int,
zxy(# week ods.enumtype
zxy(# );

3)插入数据

zxy=# insert into ods.enum_table values(1,'Mon');
INSERT 0 1

4)查询数据

zxy=# select * from ods.enum_table;id | week
----+------1 | Mon
(1 row)

2.2 几何类型

几何类型标识二维的平面物体,如下列出GreenPlum支持的几何类型:

类型大小描述表现形式
point16字节平面中的点(x,y)
line32字节直线((x1,y1),(x2,y2))
lseg32字节线段((x1,y1),(x2,y2))
box32字节矩形((x1,y1),(x2,y2))
path16+16n字节路径(与多边形相似)((x1,y1),…)
polygon40+16n字节多边形((x1,y1),…)
circle24字节<(x,y),r> (圆心和半径)

1)创建表,存储点

zxy=# create table ods.point_table(
zxy(# id serial primary key,
zxy(# point1 point
zxy(# );
CREATE TABLE

2)插入数据

zxy=# insert into ods.point_table(point1) values(point(1,2));
INSERT 0 1

3)查询数据

zxy=# select * from ods.point_table;id | point1
----+--------1 | (1,2)
(1 row)

2.3 网络地址类型

GreenPlum提供用户存储IPV4、IPV6、MAC地址的数据类型。用这些数据类型存储网络地址比用纯文本好,因为提供输入错误检查和特殊的操作和功能。

类型描述说明
cidr7或19字节IPv4 或 IPv6 网络
inet7或19字节IPv4 或 IPv6 主机和网络
macaddr6字节MAC 地址

1)创建表,存储网络地址

zxy=# create table ods.network_table (
zxy(# id serial primary key,
zxy(# network cidr,
zxy(# ipaddress inet,
zxy(# macaddress macaddr
zxy(# );
CREATE TABLE

2)插入数据

zxy=# insert into ods.network_table(network,ipaddress,macaddress) values('192.168.1.1','192.168.1.0/24','07:01:2b:03:02:03');
INSERT 0 1

3)查询数据

zxy=# select * from ods.network_table;id |    network     |   ipaddress    |    macaddress
----+----------------+----------------+-------------------1 | 192.168.1.1/32 | 192.168.1.0/24 | 07:01:2b:03:02:03

2.4 JOSN类型

json数据类型可以用来JSON(JavaScript Object Notation)数据,这样的数据也可以存储为text,但是json数据类型更有利于检查每个存储的数值是可用的JSON值。

1)创建表,存储Json数据

zxy=# create table ods.json_table(
zxy(# id serial primary key,
zxy(# data json
zxy(# );
CREATE TABLE

2)插入Json数据

zxy=# insert into ods.json_table(data) values('{"name":"zxy","age":18,"city":"SH"}');
INSERT 0 1

3)查询数据

zxy=# select * from ods.json_table;id |                data
----+-------------------------------------1 | {"name":"zxy","age":18,"city":"SH"}
(1 row)

4)提取json数据

zxy=# select data ->>'name' as name from ods.json_table;name
------zxy
(1 row)

2.5 数组类型

GreenPlum允许将字段定义成变长的多为的数组,数组可以是任何基本类型或用户定义类型,枚举类型或复合类型。

1)创建表,存储数组

zxy=# create table ods.array_table(
zxy(# id serial primary key,
zxy(# numbers int[]
zxy(# );
CREATE TABLE

2)向数组中插入数据,数组使用{},使用逗号分隔

zxy=# insert into ods.array_table(numbers) values ('{1,2,3,4,5}');
INSERT 0 1

3)查询数据

zxy=# select * from ods.array_table;id |   numbers
----+-------------1 | {1,2,3,4,5}
(1 row)

4)根据数组下标取数组数据

zxy=# select numbers[1] from ods.array_table;numbers
---------1
(1 row)

5)使用unnest函数展开数组列

zxy=# select unnest(numbers) from ods.array_table;unnest
--------12345
(5 rows)

2.6 复合类型

复合类型表示一行或者一条记录的结构;它实际上只是一个字段名和他们的数据类型的列表。GreenPlum允许像简单数据类型那样使用复合类型。比如,一个表的某个字段可以声明为一个复合类型。

定义复合类型,语法类似于create table,只是这里可以声明字段名字和类型。

1)创建一个复合类型表

zxy=# create table ods.complex_type(
zxy(# name text,
zxy(# age int,
zxy(# city text
zxy(# );
CREATE TABLE

2)创建表,存储复合类型

zxy=# create table ods.complex_table(
zxy(# id serial primary key,
zxy(# complex_column ods.complex_type
zxy(# );
CREATE TABLE

3)插入复合数据

zxy=# insert into ods.complex_table(complex_column) values (ROW('zxy',18,'SH'));
INSERT 0 1

4)查询数据

zxy=# select * from ods.complex_table;id | complex_column
----+----------------1 | (zxy,18,SH)
(1 row)

2.7 位串类型

位串是1和0的字符串。可用于存储和可视化掩码。有两种SQL位类型,【bit(n)】、【bit varying(n)】。

bit类型数据必须与长度n完全匹配;尝试存储较短或者较长的位串都是错误的。

bit varying类型数据是可变长度的,直到最大长度n;较长的字符串将被拒接,没有指定长度的bit,将被认为等同于Bit(1)。而bit varying没有指定长度,就被认为是无限长。

1)创建表,存储位串类型

zxy=# create table ods.bit_table(
zxy(# a bit(3),
zxy(# b bit varying(5)
zxy(# );
CREATE TABLE

2)插入数据

# 插入字段a大小为3,符合条件
# 插入字段b大小为3,符合条件
zxy=# insert into ods.bit_table values(B'100',B'100');
INSERT 0 1# 插入字段a大小为2,不符合条件
# 插入字段b大小为3,符合条件
zxy=# insert into ods.bit_table values(B'10',B'100');
ERROR:  bit string length 2 does not match type bit(3)# 插入字段a大小为3,符合条件
# 插入字段b大小为6,不符合条件
zxy=# insert into ods.bit_table values(B'100',B'100000');
ERROR:  bit string too long for type bit varying(5)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/626647.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式光伏运维平台在提高光伏电站发电效率解决方案

摘要&#xff1a;伴随着能源危机和环境恶化问题的日益加重&#xff0c;科技工作者进一步加大对新能源的开发和利用。太阳能光伏发电作为新型清洁能源的主力军&#xff0c;在实际生产生活中得到了广泛的应用。然而&#xff0c;光伏发电效率偏低&#xff0c;成为制约光伏发电发展…

机器学习算法实战案例:LSTM实现单变量滚动风电预测

文章目录 1 数据处理1.1 数据集简介1.2 数据集处理 2 模型训练与预测2.1 模型训练2.2 模型滚动预测2.3 结果可视化 答疑&技术交流机器学习算法实战案例系列 1 数据处理 1.1 数据集简介 实验数据集采用数据集5&#xff1a;风电机组运行数据集&#xff0c;包括风速、风向、…

【软件测试学习笔记3】缺陷管理

执行结果和预期结果不一样&#xff0c;就叫缺陷&#xff0c;俗称bug 1.软件缺陷判定标准 少功能&#xff1a;软件未实现需求&#xff08;规格&#xff09;说明书中明确要求的功能 功能错误&#xff1a;软件出现了需求&#xff08;规格&#xff09;说明书中指明不应该出现的错…

cookie、Web Storage

前端知识汇编 1. cookie1.1 cookie的限制1.2 cookie的构成1.3 JavaScript中的cookie1.4 子cookie1.5 使用cookie的注意事项 2. Web Storage2.1 Storage类型2.2 sessionStorage对象2.3 localStorage对象2.4 存储事件2.5 限制 1. cookie cookie是客户端与服务器端进行会话时使用…

自写代码来理解 get_global_id 和 get_global_size

<2022-01-24 周一> 《OpenCL编程指南》第三章 自写代码来理解get_global_id和get_global_size 使用本书第三章中关于输入信号卷积的代码来进行理解&#xff0c;见随书代码“src/Chapter_3/OpenCLConvolution”&#xff0c;附代码如下&#xff1a; // // Book: O…

webpack打包可视化分析工具:webpack-bundle-analyzer

在对webpack项目进行优化的时候,可以使用webpack-bundle-analyzer这个可视化插件来快速分析我们包的结构,能快速定位需要优化的地方,对开发者非常友好 下载安装 下载依赖包 npm i webpack-bundle-analyzer 使用 const BundleAnalyzerPlugin require(webpack-bundle-analy…

qt.qpa.plugin: Could not find the Qt platform plugin “windows“ in ““

系统环境&#xff1a;Win10家庭中文版 Qt : 5.12.9 链接了一些64位的第三方库&#xff0c;程序编译完运行后出现 qt.qpa.plugin: Could not find the Qt platform plugin "windows" in "" 弹窗如下&#xff1a; 网上搜了一些都是关于pyQt的&#xff0c…

【实战记录】 vagrant+virtualbox+docker 轻松用虚拟机集成组件

用途 最近要学一大堆组件&#xff0c;不想直接安装本机上&#xff0c;然后gpt说&#xff1a;你可以用vagrant起个虚拟机&#xff08;然后docker拉取各种组件的镜像&#xff09;&#xff1b;或者k8s 实战的整体思路 首先安装virtualbox和vagrant。然后cmd依次键入三条命令 安…

负载均衡 LoadBalancer

负载均衡 负载均衡一般分为服务端负载均衡和客户端负载均衡 服务端负载均衡&#xff1a; 指在服务器端进行负载均衡的策略。在这种策略下&#xff0c;负载均衡器位于服务器端&#xff08;如 Nginx&#xff09;&#xff0c;当客户端发起服务调用时&#xff0c;根据服务器的负…

旧衣回收小程序搭建:降低企业成本,提高回收效率!

在人们环保意识提升下&#xff0c;旧衣回收行业受到了大众的关注&#xff0c;同时旧衣回收具有门槛低、利润大的优势。在我国&#xff0c;回收行业不仅帮助普通人就业获利&#xff0c;还对环保做出了较大贡献。因此&#xff0c;旧衣回收行业成为了当下的热门商业模式&#xff0…

时尚女童冲锋衣外套

上身时尚又好看的外套 日常穿着或者出行游玩 应对早晚温差&#xff0c;兼具时尚和功能 保暖也可以很轻盈 率性闲适的洒脱范 版型百搭好穿 下摆有橡筋收紧更加保暖了 简直就是一件实用与时尚并存的时尚单品

Swift爬虫程序采集招聘信息代码示例

今天我将用Swift写一个爬虫程序&#xff0c;主要是爬取招聘信息网站得。我们知道Selenops是一个简单的Swift Web爬虫工具&#xff0c;可以用于爬取网页内容。您可以使用Selenops的三种方式之一来进行爬虫操作&#xff1a;Swift游乐场、Swift脚本或马拉松脚本SwiftUI是一种用于构…

linux nginx配置链接访问图片

nginx 安装 sudo apt update sudo apt install nginxnginx 启动命令 sudo systemctl restart nginx # 重启 sudo systemctl start nginx #开启 sudo systemctl stop nginx # 关闭 sudo systemctl status nginx # 状态 sudo systemctl restart nginx.service #重启nginx安装成…

SEM优化三种方式

百度搜索引擎优化的三种方式 大搜&#xff1a;关键词推广&#xff0c;投入产出比更好百益&#xff1a;图片广告&#xff0c;这些图片广告会出现在站长的网站上&#xff0c;比如小说的网站上&#xff0c;用户点击图片了就会从账户里扣钱信息流&#xff1a;转化低&#xff0c;一…

100个实战项目——在树莓派4B+Ubuntu20.04桌面版配置下运行智能小车(一)

主机SSH远程链接从机 查看python版本 python 我的是python3.8 所以我需要安装pip3 sudo apt install python3-pip 接着安装程序需要的引脚库 sudo pip3 install RPi.GPIO 注意必须要有sudo&#xff0c;因为我是远程遥控的树莓派&#xff0c;没有权限运行程序&#xff0…

前端生成CRC16

一、代码 /**CRC16检验 用例&#xff1a;CRC.ToModbusCRC16(FF2233FF)*/ var CRC {}; CRC._auchCRCHi [0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0…

如何进行时间管理 待办事项软件帮你成为时间管理大师

在这个快节奏的现代社会&#xff0c;时间显得格外宝贵。每个人都在与时间赛跑&#xff0c;试图在有限的时间里完成更多的事情。我曾经也深陷于这样的困境&#xff0c;每天都被无数的杂事裹挟着&#xff0c;仿佛永远都抓不住时间的尾巴。 那时&#xff0c;我常常感到焦虑和疲惫…

操作系统详解(5.2)——信号(Signal)的题目进阶

系列文章&#xff1a; 操作系统详解(1)——操作系统的作用 操作系统详解(2)——异常处理(Exception) 操作系统详解(3)——进程、并发和并行 操作系统详解(4)——进程控制(fork, waitpid, sleep, execve) 操作系统详解(5)——信号(Signal) 操作系统详解(5.1)——信号(Signal)的相…

SpringMVC mss整合

建库建表 CREATE TABLE account (id int(11) NOT NULL AUTO_INCREMENT,name varchar(20) DEFAULT NULL,money double DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8;首先 &#xff1a;先创建一个工程 其次添加配置&#xff1a; pom.xml <?xml vers…

MySQL进阶45讲【1】基础架构:一条SQL查询语句是如何执行的?

1 前言 我们经常说&#xff0c;看一个事儿千万不要直接陷入细节里&#xff0c;应该先鸟瞰其全貌&#xff0c;这样能够帮助你从高维度理解问题。同样&#xff0c;对于MySQL的学习也是这样。平时我们使用数据库&#xff0c;看到的通常都是一个整体。比如&#xff0c;有个最简单的…