zoukankan      html  css  js  c++  java
  • Postgresql数据类型

    1 数值类型

    数值类型由 2 字节、4 字节或 8 字节的整数以及 4 字节或 8 字节的浮点数和可选精度的十进制数组成

     2 货币类型

    money 类型存储带有固定小数精度的货币金额。

     3字符类型

    4日期和时间类型

     5布尔类型

    PostgreSQL 支持标准的 boolean 数据类型。

    boolean 有"true"(真)或"false"(假)两个状态, 第三种"unknown"(未知)状态,用 NULL 表示。

     6枚举类型

    枚举类型是一个包含静态和值的有序集合的数据类型。

    PostgtesSQL中的枚举类型类似于 C 语言中的 enum 类型。

    与其他类型不同的是枚举类型需要使用 CREATE TYPE 命令创建

    create table person ( name text , current_mood  mood);

    insert into person  VALUES ('Moe','happy');

    SELECT * FROM person  WHERE  current_mood = 'happy';

     7集合类型

    几何数据类型表示二维的平面物体。

    下表列出了 PostgreSQL 支持的几何类型。

    最基本的类型:点。它是其它类型的基础。

     8JSON类型

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

    此外还有相关的函数来处理 json 数据

     9数组类型

    PostgreSQL 允许将字段定义成变长的多维数组。

    数组类型可以是任何基本类型或用户定义类型,枚举类型或复合类型。

    声明数组:

    创建表的时候,我们可以声明数组,方式如下

    CREATE TABLE  sal_emp ( 

               name                              text,

               pay_by_quarter              integer[],

               schedule                         text[][],

    );

    INSERT INTO sal_emp

                VALUES ( 'BILL',   ' {10000,10000,10000,10000}',  '{{"MEETING" ,"LUNCH"},{"TRAINNING","PRESENTATION"}}');

    INSERT INTO sal_emp

                VALUES ('Carol',  '{20000,25000,25000,25000}'   '{{"breakfast","consulting"},{"meeting","lunch"}}');

    SELECT name  FROM  sal_emp  WHERE pay_by_quarter[1] <>pay_by_quarter[2];

    修改数组:

    UPDATE sal_emp  SET  pay_by_quarter = ['25000,25000,27000,27000']  WHERE name = 'Carol';

    或者使用array构造器语法

    UPDATE sal_emp  SET  pay_by_quarter = ARRAY[25000,25000,27000,27000]  WHERE name = 'Carol';

    数组组检索:

    SELECT  *  FROM  sal_emp   WHERE   pay_by_quarter [1] =  10000 OR

                                                                   pay_by_quarter [2] =  10000 OR

                                                                   pay_by_quarter [3] =  10000 OR

                                                                   pay_by_quarter [4] =  10000;

    SELECT * FROM  sal_emp     WHERE  10000 = ALL (pay_by_quarter);

    10复合类型

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

     CREATE TYPE inventory_item  AS(

                            name              text,

                            supplier_id      integer,

                            price               numeric

    );

    语法类似于 CREATE TABLE,只是这里只可以声明字段名字和类型。定义了类型,我们就可以用它创建表:

    CREATE   TABLE   on_hand (

                          item         inventory_item,

                          count       integer

    );

    INSERT INTO on_hand  VALUES  (ROW ('FUZZY DICE',42,1.99),1000);

    SELECT item.name FROM  on_hand WHERE  item.price > 9.99;

    这样将不能工作,因为根据 SQL 语法,item是从一个表名字选取的, 而不是一个字段名字。你必须像下面这样写:

    SELECT (item).name FROM  on_hand WHERE  (item).price > 9.99;

    11对象标识符类型

    PostgreSQL 在内部使用对象标识符(OID)作为各种系统表的主键。

    同时,系统不会给用户创建的表增加一个 OID 系统字段(除非在建表时声明了WITH OIDS 或者配置参数default_with_oids设置为开启)。oid 类型代表一个对象标识符。除此以外 oid 还有几个别名:regproc, regprocedure, regoper, regoperator, regclass, regtype, regconfig, 和regdictionary。

    12伪类型

    PostgreSQL类型系统包含一系列特殊用途的条目, 它们按照类别来说叫做伪类型。伪类型不能作为字段的数据类型, 但是它可以用于声明一个函数的参数或者结果类型。 伪类型在一个函数不只是简单地接受并返回某种SQL 数据类型的情况下很有用。

    下表列出了所有的伪类型:

                     

     

  • 相关阅读:
    C/C++中变量的作用域和存储类型简介
    Java与JavaScript的区别你明白吗?
    js-2018-11-09 关于Array中的srot()方法和compare()方法
    js-2018-11-01 关于break和continue语句
    0427表格学习
    0426基础标签学习
    css3部分整理
    img图片占不满整个div
    基于google protobuf 的 socket udp 通信
    微信小程序echarts学习记录
  • 原文地址:https://www.cnblogs.com/wangnengwu/p/12446501.html
Copyright © 2011-2022 走看看