https://www.gravatar.com/avatar/8e10df0bad4c56b3464cd715f8d96c46?s=240&d=mp

PostgreSQL数据类型

类型介绍

类型分类

PostgreSQL支持的数据类型分类如表:

类型 说明 对比其他数据库
布尔类型 PostgreSQL支持SQL标准的boolean数据类型 与MySQL的BOOL、BOOLEAN类型相同,使用一字节存储空间
数值类型 整数类型有2字节的smallint、4字节的int、8字节的bigint,十进制精确类型有numeric,浮点类型有real和double precision。还有8字节的货币(money)类型 无MySQL的unsigned整数类型,也无MySQL 1字节长的tinyint整数类型和3字节长的medium int整数类型
字符类型 有varchar(n)、char(n)、text三种类型 PostgreSQL中的varchar(n)最大可以存储1GB,而MySQL中的varchar(n)最大只能是64KB。PostgreSQL中的text类型相当于MySQL中的LONGTEXT类型
二进制数据类型 只有一种bytea 对应MySQL的BLOB和LONGBLOB类型
位串类型 位串就是一串1和0的字符串,有bit(n)、bit varying(n)两种 N/A
日期和时间类型 有date、time、timestamp,而time和timestamp又分是否包括时区的两种类型 在PostgreSQL中,可以精确到秒以下,如毫秒。而MySQL的时间类型最多只能精确到秒,其日期时间的范围也与MySQL差异较大
枚举类型 枚举类型是一种包含一系列有序静态值集合的数据类型,等于某些编程语言中的enum类型 PostgreSQL使用枚举类型前需要先使用CREATE TYPE创建这个类型。MySQL也有枚举类型(ENUM)
几何类型 包括了点(point)、直线(line)、线段(lseg)、路径(path)、多边形(polygon)、圆(cycle)等类型 N/A
网络地址类型 有cidr、inet、macaddr三种类型 N/A
数组类型 可以存储一个数组 N/A
复合类型 可以把已有的简单类型组合成用户自定义的类型,就如C语言中的结构体一样 对应其他数据库的自定义类型
xml类型 可以存储XML数据的类型 N/A
json类型 可以存储json类型的数据 N/A
range类型 可以存储范围数据 N/A
对象标识符类型 PostgreSQL内部标识对象的类型,如oid类型、regproc类型、regclass类型等 N/A
伪类型 伪类型不能作为字段的数据类型,但是它可以用于声明一个函数的参数或者结果类型。有any、anyarray、anyelement、cstring、internal、language_handler、record、trigger、void、opaque N/A
其他类型 一些不好分类的类型都放到这里,如UUID类型、pg_Isn类型 N/A

为了提高SQL的兼容性,部分类型还有很多别名。

SQL入门

SQL语句分类

  • DQL(Data Query Language):数据查询语言,基本就是select语句,用于数据查询。
  • DML(Data Manipulation Language):数据操纵语言,包含insertupdatedelete三种语句。
  • DDL(Data Definition Language):数据定义语言,主要用于创建、删除或修改表、索引等数据库对象。

创建表(create table)

使用\h create table查看帮助

数组

创建数组

创建数组的最简单方法是使用数组字面值:

var empty = []; // An array with no elements
var primes = [2, 3, 5, 7, 11]; // An array with 5 numeric elements
var misc = [1.1, true, "a",]; // 3 elements of various types + trailing comma

数组字面值中的元素可以是任意的表达式。如果数组中有省略的元素,其值为undefined