CAST  数据类型转换函数

布尔类型:
        支持标准的boolean数据类型  只有TRUE FALSE两种状态,如果为unknown状态,则用NULL表示
数据类型:
        smalint(2字节): oracle没有此类型,使用number 代替
        int(4字节)   bigint(8字节)   
        numeric(十进制精确类型):用户声明的精度,在ORACLE中叫做NUMBER
        real、double、precision(浮点类型)
        money(货币类型)
字符类型:varchar(n)、char(n)、test三种类型
二进制数据类型:只有一种bytea,他对应与mysql中BLOB与LONGBLOB,oracle中的raw 类型可以使用bytea取代
        二进制字符串是一个字节序列。它和普通字符串的区别:
        (1)完全可以存储字节零值,普通字符串不允许存储字节零值
        (2)对二进制字符串处理,实际上处理字节;对字符串的处理,则取决于区域设置
         
位串类型:一串0和1的字符串,有bit(n)、bit varying(n)两种  其他数据库无此类型
日期和时间:date、time、timestamp。而time和timestamp 是否包括时区两种类型
         日期输入:任何日期或者时间的文本输入需要由“日期/时间” 类型加单引号包围的字符串
         如果DateStyle 参数默认为“MDY” ,则表示按照“月-日-年”解析
         设置日期类型: set datestyle='YMD';
 
枚举类型:包含一系列有序静态值集合的数据类型,与MYSQL不同,使用之前需要使用ctreate type 创建类型,等于某些编程语言中的enum类型
         每个枚举类型都是独立,不能与其他枚举类型混用;枚举类型的值大小写是敏感的。
         eg:首先建立一个“week" 的枚举类型,并建立一张测试表:
         create type week as  ENUM('Sun','Mon','Thur','Fri','Sat');
         create table duty(person text,weekday week);
         insert into duty values('张三','Sun');
         insert into duty values('李四','Mon');
         insert into duty values('王二','Tues');
         insert into duty values('赵五','Wed');
         试查询一条数据:
         select * from duty where weekday = 'Sun';
         但如果输入的字符串不再枚举类型之间,就会报错:
         select * from duty where weekday = 'Sun.';
         在plsql中,可以使用\dT 查看枚举类型的定义:
         \dT+ week
         直接查询表pg_enum 可以查看枚举类型的定义;
         select  * from pg_enum;
    
复合类型:把已有的简单类型组合成用户自定义类型,例如C语言中结构体,类似于从一个表名字里选出一个字段,需要用圆括号括起来避免SQL解析器混淆
       

eg:
          select person_info.name from author;  (x)
          select (person_info).name from author;


         

xml类型:存储XML数据类型。使用字符串类型也可以存储XML数据,但test类型不保证其中存储是合法XML数据。

Postgre 处理字符集的问题,在客户端与服务器端进行传递数据时,会自动进行字符集转换,如果两端字符集不一致,会自动进行字符集转换     
    
JSON类型:存储JSON(JavaScript Object Notion)类型数据,也可以使用text、varchar等类型存储JSON类型{
      JSON类型是把输出数据原封不动输入到数据库中,在存放前会对JSON类型进行语法检查,使用时需要重新解析数据;在JSON串中key之间多余空格、重复key值也会保留
      JSONB类型在存放时就会把解析成二进制类型;并且支持在其上建立索引,JSONB在使用时性能更高

当一个JSON字符串转换成JSONB类型,JSON字符串数据类型实际被转换成PostgreSQL 数据库类型

range:存储范围快速搜索数据,用于表示范围

create table ipdb1(
          ip_begin inet,
          ip_end inet,
          area text,
          sp text);


       
      
对象标识符类型:oid 、regproc、regclass类型
伪类型:不能作为字段数据类型、但可以作为声明函s数参数或者结果类型
其他类型:一些不好分类的类型;例如UUID、pg_lsn类型