• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >PostgreSQL > PostgreSQL教程(四):数据类型详解

PostgreSQL教程(四):数据类型详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了postgresql教程,postgresql安装教程,postgresql使用教程,postgresql视频教程,postgresql数据库教程等相关知识,希望本文的分享对您有所帮助

一、数值类型:

    下面是PostgreSQL所支持的数值类型的列表和简单说明:

1. 整数类型:

    类型smallint、integer和bigint存储各种范围的全部是数字的数,也就是没有小数部分的数字。试图存储超出范围以外的数值将导致一个错误。常用的类型是integer,因为它提供了在范围、存储空间和性能之间的最佳平衡。一般只有在磁盘空间紧张的时候才使用smallint。而只有在integer的范围不够的时候才使用bigint,因为前者(integer)绝对快得多。

    2. 任意精度数值:

    类型numeric可以存储最多1000位精度的数字并且准确地进行计算。因此非常适合用于货币金额和其它要求计算准确的数量。不过,numeric类型上的算术运算比整数类型或者浮点数类型要慢很多。
    numeric字段的最大精度和最大比例都是可以配置的。要声明一个类型为numeric的字段,你可以用下面的语法:
      NUMERIC(precision,scale)
 </div>
    比如数字23.5141的精度为6,而刻度为4。
    在目前的PostgreSQL版本中,decimal和numeric是等效的。
    
    3. 浮点数类型:

    数据类型real和double是不准确的、牺牲精度的数字类型。不准确意味着一些数值不能准确地转换成内部格式并且是以近似的形式存储的,因此存储后再把数据打印出来可能显示一些缺失。
    
   4. Serial(序号)类型:
    serial和bigserial类型不是真正的类型,只是为在表中设置唯一标识做的概念上的便利。
      CREATE TABLE tablename (
        colname SERIAL
    );
 </div>
    等价于
      CREATE SEQUENCE tablename_colname_seq;
    CREATE TABLE tablename(
        colname integer DEFAULT nextval('tablename_colname_seq') NOT NULL
    );
 </div>
    这样,我们就创建了一个整数字段并且把它的缺省数值安排为从一个序列发生器取值。应用了一个NOT NULL约束以确保空值不会被插入。在大多数情况下你可能还希望附加一个UNIQUE或者PRIMARY KEY约束避免意外地插入重复的数值,但这个不是自动发生的。因此,如果你希望一个序列字段有一个唯一约束或者一个主键,那么你现在必须声明,就像其它数据类型一样。
    还需要另外说明的是,一个serial类型创建的序列在其所属字段被删除时,该序列也将被自动删除,但是其它情况下是不会被删除的。因此,如果你想用同一个序列发生器同时给几个字段提供数据,那么就应该以独立对象的方式创建该序列发生器。

二、字符类型:

    下面是PostgreSQL所支持的字符类型的列表和简单说明:

SQL 定义了两种基本的字符类型,varchar(n)和char(n),这里的n是一个正整数。两种类型都可以存储最多n个字符长的字串,试图存储更长的字串到这些类型的字段里会产生一个错误,除非超出长度的字符都是空白,这种情况下该字串将被截断为最大长度。如果没有长度声明,char等于char(1),而varchar则可以接受任何长度的字串。
    MyTest=> CREATE TABLE testtable(first_col varchar(2));
    CREATE TABLE
    MyTest=> INSERT INTO testtable VALUES('333');   --插入字符串的长度,超过其字段定义的长度,因此报错。
    ERROR:  value too long for type character varying(2)
    --插入字符串中,超出字段定义长度的部分是空格,因此可以插入,但是空白符被截断。
    MyTest=> INSERT INTO testtable VALUES('33 ');  
    INSERT 0 1
    MyTest=> SELECT * FROM testtable;
     first_col
    -----------
     33
    (1 row)
</div>
    这里需要注意的是,如果是将数值转换成char(n)或者varchar(n),那么超长的数值将被截断成n个字符,而不会抛出错误。
    MyTest=> select 1234::varchar(2);
     varchar
    ---------
     12
    (1 row)
</div>
    最后需要提示的是,这三种类型之间没有性能差别,只不过是在使用char类型时增加了存储尺寸。虽然在某些其它的数据库系统里,char(n)有一定的性能优势,但在PostgreSQL里没有。在大多数情况下,应该使用text或者varchar。
   
三、日期/时间类型:

    下面是PostgreSQL所支持的日期/时间类型的列表和简单说明:

1. 日期/时间输入:
    任何日期或者时间的文本输入均需要由单引号包围,就象一个文本字符串一样。
    1). 日期:
    以下为合法的日期格式列表:

2). 时间:
    以下为合法的时间格式列表:

3). 时间戳:

    时间戳类型的有效输入由一个日期和时间的联接组成,后面跟着一个可选的时区。因此,1999-01-08 04:05:06和1999-01-08 04:05:06 -8:00都是有效的数值。
  
   2. 示例:
    1). 在插入数据之前先查看datestyle系统变量的值:
      MyTest=> show datestyle;
     DateStyle
    -----------
     ISO, YMD
    (1 row)
 </div>
    2). 创建包含日期、时间和时间戳类型的示例表:
      MyTest=> CREATE TABLE testtable (id integer, date_col date, time_col time, timestamp_col timestamp);
    CREATE TABLE

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • CentOS 7下安装PostgreSQL 9.6的教程分享
  • windows PostgreSQL 9.1 安装详细步骤
  • 深入解读PostgreSQL中的序列及其相关函数的用法
  • PostgreSQL教程(二十):PL/pgSQL过程语言
  • PostgreSQL教程(十九):SQL语言函数
  • PostgreSQL教程(十六):系统视图详解
  • PostgreSQL教程(十五):系统表详解
  • PostgreSQL教程(十四):数据库维护
  • PostgreSQL教程(十二):角色和权限管理介绍
  • PostgreSQL教程(十一):服务器配置

相关文章

  • 2017-09-08postgresql 数据库时间间隔数据查询
  • 2017-05-11Linux CentOS 7安装PostgreSQL9.3图文教程
  • 2017-05-11PostgreSQL教程(十四):数据库维护
  • 2017-05-11Windows下PostgreSQL安装图解
  • 2017-05-11PostgreSQL之分区表(partitioning)
  • 2017-05-11PostgreSQL教程(一):数据表详解
  • 2017-05-11Mac OS上安装PostgreSQL的教程
  • 2017-05-11phpPgAdmin 配置文件参数说明中文版
  • 2017-05-11PostgreSQL新手入门教程
  • 2017-05-11PostgreSQL教程(十九):SQL语言函数

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • PostgreSQL教程(八):索引详解
    • windows PostgreSQL 9.1 安装详细步骤
    • SQLite教程(七):数据类型详解
    • PostgreSQL教程(十一):服务器配置
    • Windows下PostgreSQL安装图解
    • PostgreSQL 数据库性能提升的几个方面
    • PostgreSQL教程(二十):PL/pgSQL过程语言
    • PostgreSQL教程(十七):客户端命令(1)
    • PostgreSQL教程(三):表的继承和分区表详解
    • Windows下Postgresql数据库的下载与配置方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有