PostgreSql 基础知识
- 格式:doc
- 大小:79.50 KB
- 文档页数:4
PostgreSQL数据库一:PostgreSQL介绍1、PostgreSQL就是以加州大学伯克利分校计算机系开发得 POSTGRES,现在已经更名为POSTGRES,版本 4、2为基础得对象关系型数据库管理系统(ORDBMS)。
PostgreSQL支持大部分 SQL标准并且提供了许多其她现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。
同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新得数据类型、函数、操作符、聚集函数、索引方法、过程语言。
并且,因为许可证得灵活,任何人都可以以任何目得免费使用、修改、与分发PostgreSQL,不管就是私用、商用、还就是学术研究使用。
2、PostgreSQL图标3.PostgreSQL优点有目前世界上最丰富得数据类型得支持支持,其中有些数据类型可以说连商业数据库都不具备,具体类型下文会说明、PostgreSQL拥有一支非常活跃得开发队伍,而且在许多黑客得努力下,PostgreSQL 得质量日益提高PostgreSQL 对接口得支持也就是非常丰富得,几乎支持所有类型得数据库客户端接口。
这一点也可以说就是 PostgreSQL 一大优点。
4.PostgreSQL缺点首先,早期得 PostgreSQL 继承了几乎所有 Ingres, Postgres, Postgres95 得问题:过于学院味,因为首先它得目得就是数据库研究,因此不论在稳定性, 性能还就是使用方方面面,长期以来一直没有得到重视,直到 PostgreSQL 项目开始以后,情况才越来越好,PostgreSQL 已经完全可以胜任任何中上规模范围内得应用范围得业务其次,PostgreSQL 得确还欠缺一些比较高端得数据库管理系统需要得特性,比如数据库集群,更优良得管理工具与更加自动化得系统优化功能等提高数据库性能得机制等。
5.目前官方最新版本:9、3、2二、windows下安装过程1、开始安装:2、选择程序安装目录:注:安装 PostgreSQL 得分区最好就是 NTFS 格式得。
PostgreSQL基础SQL是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,主要由DDL,DML,DCL,TCL四种语言组成。
1、DDL(数据定义语言)用于定义SQL模式、基本表、视图和索引的创建和撤消操作。
DDL不需要commit。
CREATEALTERDROPTRUNCATECOMMENTRENAME2、DML(数据操纵语言)分成数据查询和数据更新两类。
数据更新又分成插入、删除、和修改三种操作。
数据更新需要commit。
SELECTINSERTUPDATEDELETEMERGE3、DCL(数据库控制语言)用于授权,角色控制等。
GRANT 授权REVOKE 取消授权4、TCL(事务控制语言)用于事务控制。
SAVEPOINT 设置保存点ROLLBACK 回滚拓展:什么是事务?什么是会话?什么是进程?事务:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。
会话:当你连接到数据库用户时就建立了会话。
相当于处理SQL语句的一个平台。
连接到数据库用户开始到退出数据库结束会话就是会话的一个生命周期。
进程:进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。
例:Postgresql中的Postmaster主进程,用来启动和关闭数据库实例。
一、DDL语句1、建实体表的几种方式(1)、create table c as select * from b(含数据);(2)、create table c as select * from b where 1=2(不含数据);等同于create table c (like b);等同于create table c (like b INCLUDING DEFAULT);(3)、create table d (like b INCLUDING ALL);2、创建临时表CREATE LOCAL TEMP TABLE test(a varchar(100),b varchar(100)) ON COMMIT PRESERVE ROWS;3、TRUNCATE和Delete的区别TRUNCATE TABLE 在功能上与不带WHERE 子句的DELETE 语句相同:二者均删除表中的全部行。
old郭带你学postgresql 笔记Old郭带你学PostgreSQL 笔记在当今互联网时代,数据大爆炸已经成为家常便饭。
而PostgreSQL 作为一种高可靠、可扩展的开源数据库,逐渐成为了开发者的首选。
本文将由老师Old郭带领大家来学习PostgreSQL,并记录下本人的学习笔记。
一、PostgreSQL 的安装步骤:1.官网下载PostgreSQL2.安装后检查是否配置成功3.安装好后找到"SQL shell"打开4.输入密码二、PostgreSQL 的基本使用方法1.查看数据库\l2.连接到数据库连接到数据库后可以进行一系列操作,如创建表、插入数据等操作。
3.创建数据库在连接数据库后,输入以下命令创建一个名为"test"的数据库:CREATE DATABASE test;4.创建表在数据库中首先要创建表,这是对数据进行操作的基础。
下面的列举了一些常用的数据类型:INT:整型VARCHAR:可变长度字符串CHAR:定长字符串FLOAT:浮点数DOUBLE:双精度浮点数DATE:日期TIME:时间DATETIME:日期时间CREATE TABLE table_name(column_name data_type);例如创建一张名为"Student"的表,包含"name"和"age"两个字段:CREATE TABLE Student(name VARCHAR(20),age INT);5.插入数据INSERT INTO table_name(column1,column2,...)VALUES(value1,value2,...);例如向上一步创建的名为"Student"的表中插入一条数据:INSERT INTO Student(name,age) VALUES('Tom',18);6.查询SELECT column_name1,column_name2,... FROM table_name WHERE filter_conditions;其中,filter_conditions可以是某个具体的值,也可以是某种范围。
PostgreSQL基础教学与应用第一章:PostgreSQL简介1.1 PostgreSQL的定义和特点1.2 PostgreSQL在数据库领域的应用价值第二章:PostgreSQL的安装和配置2.1 安装PostgreSQL2.2 配置PostgreSQL第三章:PostgreSQL数据库的基本操作3.1 连接数据库3.2 创建数据库3.3 创建表3.4 插入数据3.5 查询数据3.6 更新数据3.7 删除数据第四章:PostgreSQL数据库的高级操作4.1 约束4.2 索引4.3 视图4.4 存储过程4.5 触发器第五章:PostgreSQL的高可用性5.1 水平扩展5.2 热备份5.3 流复制第六章:PostgreSQL与其他数据库的比较6.1 PostgreSQL与MySQL的比较6.2 PostgreSQL与Oracle的比较第七章:PostgreSQL的应用案例分析7.1 PostgreSQL在电子商务领域的应用7.2 PostgreSQL在大数据处理中的应用7.3 PostgreSQL在地理信息系统中的应用第八章:PostgreSQL的未来发展趋势8.1 PostgreSQL的发展历程8.2 PostgreSQL的未来发展方向第一章:PostgreSQL简介PostgreSQL是一个开源的关系型数据库管理系统,其具有可扩展性、稳定性和安全性等特点。
它被广泛应用于企业级数据库管理和大规模数据处理领域,成为了目前世界上发展最快的开源数据库之一。
第二章:PostgreSQL的安装和配置2.1 安装PostgreSQL要安装PostgreSQL,可以从官方网站上下载最新版本的安装包。
安装过程中需按照提示进行设置和配置,如选择安装路径、创建管理员用户等。
2.2 配置PostgreSQL配置文件中包含了数据库的参数设置,可以根据需求进行修改,如修改监听地址、设置最大连接数等。
第三章:PostgreSQL数据库的基本操作3.1 连接数据库使用命令行工具或可视化工具连接数据库,输入用户名和密码即可进行连接。
PostgreSQL数据库基础知识参考:1. PostgreSQL简介PostgreSQL是⼀个功能强⼤的开源对象关系数据库管理系统(ORDBMS)。
⽤于安全地存储数据; ⽀持最佳做法,并允许在处理请求时检索它们。
特点:PostgreSQL可在所有主要操作系统(即Linux,UNIX(AIX,BSD,HP-UX,SGI IRIX,Mac OS X,Solaris,Tru64)和Windows等)上运⾏。
PostgreSQL⽀持⽂本,图像,声⾳和视频,并包括⽤于C/C++,Java,Perl,Python,Ruby,Tcl和开放数据库连接(ODBC)的编程接⼝。
PostgreSQL⽀持SQL的许多功能,例如复杂SQL查询,SQL⼦选择,外键,触发器,视图,事务,多进程并发控制(MVCC),流式复制(9.0),热备(9.0))。
在PostgreSQL中,表可以设置为从“⽗”表继承其特征。
可以安装多个扩展以向PostgreSQL添加附加功能。
⼯具:psql:它是⼀个命令⾏⼯具,也是管理PostgreSQL的主要⼯具。
pgAdmin是PostgreSQL的免费开源图形⽤户界⾯管理⼯具。
phpPgAdmin:它是⽤PHP编写的PostgreSQL的基于Web的管理⼯具。
它基于phpMyAdmin⼯具管理MySQL功能来开发。
它可以⽤作PostgreSQL的前端⼯具。
pgFouine:它是⼀个⽇志分析器,可以从PostgreSQL⽇志⽂件创建报告。
专有⼯具有 -Lightning Admin for PostgreSQL, Borland Kylix, DBOne, DBTools Manager PgManager, Rekall, Data Architect, SyBase Power Designer, Microsoft Access, eRWin, DeZign for Databases, PGExplorer, Case Studio 2, pgEdit, RazorSQL, MicroOLAP Database Designer, Aqua Data Studio, Tuples, EMS Database Management Tools for PostgreSQL, Navicat, SQL Maestro Group products for PostgreSQL, Datanamic DataDiff for PostgreSQL, Datanamic SchemaDiff for PostgreSQL, DB MultiRun PostgreSQL Edition, SQLPro, SQL Image Viewer, SQL Data Sets 等等。
postgres相关知识点PostgreSQL是一款流行的开源关系型数据库管理系统,这里为大家介绍一些PostgreSQL相关知识点,让大家更好的了解和使用PostgreSQL。
1. PostgreSQL的特性PostgreSQL具有许多高级特性,如支持高级事务、多版本并发控制、全面支持SQL标准、可扩展性强等。
它还提供了许多高级数据类型和丰富的数据处理函数,使得在数据存储和查询上具有更加灵活和强大的表现。
2. PostgreSQL的安装PostgreSQL可以在多个操作系统上安装,包括Linux、Windows、macOS等。
可以从官方网站下载对应操作系统版本的安装包,也可以使用操作系统自带的包管理器进行安装。
安装完成后,需要进行基本配置,如设置密码、网络配置等。
3. 数据库的创建和删除在PostgreSQL中,可以使用CREATE DATABASE语句创建新的数据库,例如:CREATE DATABASE mydatabase;可以使用DROP DATABASE语句删除数据库,例如:DROP DATABASE mydatabase;4. 表的创建和删除在PostgreSQL中,可以使用CREATE TABLE语句创建新的表,例如:CREATE TABLE mytable (username VARCHAR(50),email VARCHAR(50));可以使用DROP TABLE语句删除表,例如:DROP TABLE mytable;5. 数据的插入、更新和删除在PostgreSQL中,可以使用INSERT语句将数据插入到表中,例如:INSERT INTO mytable (username, email) VALUES('alice','*****************');可以使用UPDATE语句更新表中的数据,例如:UPDATEmytableSETemail='***************'WHERE username='bob';可以使用DELETE语句删除表中的数据,例如:DELETE FROM mytable WHERE username='alice';6. 索引的创建和删除在PostgreSQL中,可以使用CREATE INDEX语句创建索引,例如:CREATE INDEX myindex ON mytable(username);可以使用DROP INDEX语句删除索引,例如:DROP INDEX myindex;7. 视图的创建和删除在PostgreSQL中,可以使用CREATE VIEW语句创建视图,例如:CREATE VIEW myview AS SELECT username, email FROM mytable; 可以使用DROP VIEW语句删除视图,例如:DROP VIEW myview;8. 外部数据的导入和导出在PostgreSQL中,可以使用COPY语句将数据从文件中导入到表中,例如:COPY mytable FROM '/path/to/myfile.csv' DELIMITER ',' CSV HEADER; 可以使用COPY语句将表中的数据导出到文件中,例如:COPY mytable TO '/path/to/myfile.csv' DELIMITER ',' CSV HEADER;以上就是PostgreSQL的一些常见知识点,希望可以帮助大家更好的了解和使用PostgreSQL。
postgresql 概念PostgreSQL是一种开源的关系型数据库管理系统(RDBMS),它采用了SQL(结构化查询语言)作为查询和操作数据的方式。
PostgreSQL 在许多方面与Oracle数据库相似,但它们之间也存在一些差异。
以下是PostgreSQL中的一些概念:1. 表:用于存储数据的基本结构,由行和列组成。
2. 列:表中的单元,用于存储特定类型的数据。
3. 行:表中的数据记录,由多个列组成。
4. 索引:用于加速数据检索的数据结构,它可以帮助数据库快速找到特定行的位置。
5. 数据类型:用于表示表中列的数据种类,如整数、字符串、浮点数、日期等。
6. 约束:用于确保表中数据的完整性,如主键约束、唯一约束等。
7. 视图:是一种虚拟表,其内容基于查询结果。
视图本身不包含数据,而是在查询时动态生成。
8. 存储过程:一组SQL语句,用于执行特定任务。
存储过程可以接受参数、返回结果,并在数据库内部执行。
9. 函数:与存储过程类似,但它们不返回结果集。
函数可以用于执行一系列操作,如计算、数据转换等。
10. 事务:一个序列of SQL 语句,它们作为一个单元执行。
事务可以确保数据的一致性,例如在更新数据后进行回滚操作。
11. 隔离级别:用于控制事务之间并发访问数据的方式。
较高的隔离级别可以减少并发访问时的冲突,但可能降低性能。
12. 窗口函数:PostgreSQL提供的一类分析函数,用于对数据进行排序、计算百分比等。
13. 全文索引:一种特殊类型的索引,用于全文搜索功能。
它可以快速在大量文本数据中查找关键词。
14. 数据库:存储多个表的容器。
每个数据库都有自己的权限、表空间等设置。
15. 用户:数据库的访问者,具有特定的权限和角色。
用户可以创建、查询、更新和删除数据。
16. 权限:用于控制用户对数据库对象的访问权限,如创建表、插入数据等。
17. 角色:一组相关权限的集合,用于简化用户权限管理。
这些概念有助于了解PostgreSQL的基本结构和功能。
学会使用PostgreSQL进行关系数据库管理和查询Chapter 1: 介绍PostgreSQL数据库PostgreSQL是一个强大且高度可定制的开源对象关系数据库管理系统(ORDBMS),被广泛应用于各种项目和企业中。
本章将介绍PostgreSQL的基本概念和特点,以及为什么选择使用PostgreSQL作为关系数据库管理系统。
1.1 PostgreSQL的特点PostgreSQL拥有强大的功能和众多高级特性,包括复杂的查询和数据操作、事务支持、数据完整性、并发性和安全性。
它还支持JSON、XML、文本搜索和地理信息系统(GIS)等扩展功能,可以满足各种应用场景的需求。
1.2 PostgreSQL的安装和配置在本节中,将介绍如何从官方网站下载和安装PostgreSQL,并进行基本的配置。
包括设置用户名和密码、创建数据库、配置连接等。
Chapter 2: 数据库管理本章将介绍如何进行数据库管理,包括创建和删除数据库、表、索引和视图。
此外,还将讨论数据库备份和恢复、权限管理和查询性能优化等内容。
2.1 数据库的创建和删除详细介绍如何使用PostgreSQL命令行工具或GUI工具创建和删除数据库。
包括指定数据库名字和字符集、设置数据库所有者等。
2.2 表的创建和删除说明如何创建和删除表,包括指定表名和列的定义、设置主键、外键和约束等。
2.3 索引和视图管理讲解如何创建和删除索引,优化查询性能。
还将介绍如何创建和使用视图,以及视图的作用和用法。
2.4 数据库备份和恢复介绍如何进行数据库的备份和恢复,以及选择合适的备份策略。
包括使用pg_dump和pg_restore命令、基于时间点恢复等。
2.5 权限管理详细讨论如何设置用户和角色,以及为不同用户分配不同的权限。
还将介绍如何创建和使用数据库架构,限制用户对数据库对象的访问权限。
Chapter 3: 查询数据本章将重点介绍使用PostgreSQL进行数据查询的技术和方法。
PostgreSQL数据库基础教程一、数据库基础知识1.1 数据库的定义和作用数据库是指存储和组织数据的集合,通过数据库可以方便地对数据进行管理和查询。
数据库的作用包括存储数据、保证数据的一致性和完整性、提供数据的安全性和可靠性等。
1.2 关系型数据库和非关系型数据库关系型数据库是指使用关系模型将数据组织成表格的数据库,而非关系型数据库则不局限于表格模型。
PostgreSQL是一种开源的关系型数据库管理系统,具有丰富的功能和灵活性。
1.3 PostgreSQL的特点和优势PostgreSQL是一个功能强大、可扩展性强的数据库管理系统,具有以下特点:- 可靠性:支持事务管理和崩溃恢复机制,保证数据的一致性和可靠性。
- 可移植性:支持跨多个操作系统的安装和使用。
- 扩展性:支持插件式架构,允许用户根据需求添加自定义的功能。
- 多版本并发控制:采用MVCC(多版本并发控制)机制,提供高并发性能。
- 开放性:作为开源软件,PostgreSQL的源代码可以公开查看和修改。
二、安装和配置PostgreSQL2.1 下载和安装PostgreSQL首先,在PostgreSQL官网上下载适合操作系统的安装包,并按照安装向导进行安装。
2.2 配置数据库集群安装完成后,需要进行数据库集群的配置。
可以通过编辑配置文件来为数据库设置参数,如监听地址、端口号、连接数限制等。
2.3 创建用户和数据库PostgreSQL默认使用操作系统的用户名作为数据库的用户名,可以通过以下命令创建一个新的用户,并为其分配权限。
三、数据库操作3.1 登录和退出数据库在命令行中输入`psql -U 用户名 -d 数据库名`可以登录到指定的数据库。
3.2 数据表的创建和删除使用`CREATE TABLE`命令可以创建新的数据表,使用`DROP TABLE`命令可以删除数据表。
3.3 数据表的数据插入和查询使用`INSERT INTO`命令可以向数据表中插入新的数据,使用`SELECT`命令可以查询数据并返回结果集。
postgresql的语法【原创实用版】目录1.PostgreSQL 简介2.PostgreSQL 语法基础3.数据类型与自定义类型4.索引与触发器5.存储管理与查询优化6.PostgreSQL 的发展历程与未来展望正文一、PostgreSQL 简介PostgreSQL 是一款功能强大的开源数据库,支持丰富的数据类型(如JSON 和 JSONB 类型、数组类型)和自定义类型。
它提供了丰富的接口,可以很容易地扩展功能,如在 GiST 框架下实现自己的索引类型等。
PostgreSQL 还支持使用 C 语言、Perl 语言、Python 语言等编写自定义函数和触发器。
二、PostgreSQL 语法基础PostgreSQL 的语法基础主要包括以下几个方面:1.创建数据库:使用 CREATE DATABASE 语句创建新的数据库,如:CREATE DATABASE 数据库名 WITH ENCODING 等。
2.表:创建表需要使用 CREATE TABLE 语句,包括表名、列名和数据类型等,如:CREATE TABLE 表名 (列名 1 数据类型,列名 2 数据类型,列名 3 数据类型等)。
3.索引:创建索引可以使用 CREATE INDEX 语句,包括索引名、表名和索引列等,如:CREATE INDEX 索引名 ON 表名 (列名);4.插入数据:使用 INSERT 语句插入数据,如:INSERT INTO 表名 (列名 1, 列名 2, 列名 3) VALUES (值 1, 值 2, 值 3);5.查询数据:使用 SELECT 语句查询数据,如:SELECT 列名 1, 列名 2, 列名 3 FROM 表名 WHERE 条件;6.更新数据:使用 UPDATE 语句更新数据,如:UPDATE 表名 SET 列名 1=值 1, 列名 2=值 2, 列名 3=值 3 WHERE 条件;7.删除数据:使用 DELETE 语句删除数据,如:DELETE FROM 表名WHERE 条件;三、数据类型与自定义类型PostgreSQL 支持多种数据类型,如数值型、日期型、字符串型、数组型等。
PostgreSql 常见数据类型
1.CREATE TYPE命令增加新的数据类型
2.数据类型
3.数值类型
3. 整数类型
smallint, integer, bigint 类型存储各种范围的全部是数字的数,也就是没有小数部分的数字。
试图存储超出范围以外的数值将导致一个错误。
常用的类型是 integer ,因为它提供了在范围、存储空间、性能之间的最佳平衡。
一般只有在磁盘空间紧张的时候才使用 smallint 。
而只有在 integer 的范围不够的时候才使用 bigint ,因为前者绝对快得多。
bigint 类型可能不是在所有平台上都运转正确,因为它依赖编译器对八字节整数的支持。
在那些没有八字节整数支持的机器上,bigint 的作用和 integer 一样(但是仍然占据八字节存储)。
不过,我们目前还没听说过有这样的平台。
SQL 只声明了整数类型 integer(或 int) 和 smallint 。
类型 bigint 和类型别名 int2, int4, int8 都是扩展,并且也在许多其它 SQL 数据库系统中使用。
4.任意精度数值
numeric 类型可以存储最多 1000 位精度的数字并且准确地进行计算。
特别建议将它用于货币金额和其它要求精确计算的场合。
不过,numeric 类型上的算术运算比整数类型要慢很多。
术语:一个 numeric 类型的标度(scale)是小数部分的位数,精度(precision)是全部数据位的数目,也就是小数点两边的位数总和。
因此数字 23.5141 的精度为 6 而标度为 4 。
你可以认为整数的标度为零。
numeric 字段的最大精度和最大标度都是可以配置的。
要声明一个字段的类型为 numeric ,你可以用下面的语法:
NUMERIC(precision, scale)
精度必须为正数,标度可以为零或者正数。
另外,
NUMERIC(precision)
选择了标度为 0 。
不带任何精度与标度的声明
NUMERIC
则创建一个可以存储一个直到实现精度上限的任意精度和标度的数值,一个这样类型的字段将不会把输
入数值转化成任何特定的标度,而带有标度声明的 numeric 字段将把输入值转化为该标度。
SQL 标准要求缺省的标度是 0(也就是转化成整数精度)。
如果你关心移植性,那你最好总是明确声明精度和标度。
如果一个要存储的数值的标度比字段声明的标度高,那么系统将尝试圆整(四舍五入)该数值到指定的小数位。
然后,如果小数点左边的数据位数超过了声明的精度减去声明的标度,那么将抛出一个错误。
numeric 类型的数据值在物理上是不带任何前导或者后缀零的形式存储的。
因此,字段上声明的精度和标度都是最大值,而不是固定分配的。
在这个方面,numeric 类型更类似于 varchar(n) 而不是
char(n) 。
实际存储是每四个十进制位两个字节,然后在整个数据上加上八个字节的额外开销。
除了普通的数字值之外,numeric 类型允许用特殊值 NaN 表示"不是一个数字"。
任何在 NaN 上面的操作都生成另外一个 NaN 。
如果在 SQL 命令里把这些值当作一个常量写,你必须在其周围放上单引号,比如 UPDATE table SET x = 'NaN' 。
在输入时,字符串 NaN 是大小写无关的。
类型 decimal 和 numeric 是等效的。
两种类型都是 SQL 标准。
5.浮点数类型
数据类型 real 和 double precision 是不精确的、变精度的数字类型。
如果你要求精确的计算(比如计算货币金额),应使用 numeric 类型。
如果你想用这些类型做任何重要的复杂计算,尤其是那些你对范围情况(无穷/下溢)严重依赖的事情,那你应该仔细评诂你的实现。
拿两个浮点数值进行相等性比较可能像、也可能不像你想像那样运转。
在大多数平台上,real 类型的范围是至少 1E-37 到 1E+37 ,精度至少是 6 位小数。
double precision 的范围通常是 1E-307 到 1E+308 ,精度是至少 15 位数字。
太大或者太小的数值都会导致错误。
如果输入数据的精度太高,那么将会发生园整。
太接近零的数字,如果无法与零值的表现形式相区分就会产生下溢错误。
除了普通的数字值之外,浮点类型还有几个特殊值:
Infinity
-Infinity
NaN
这些值分别表示 IEEE 754 特殊值"正无穷大"、"负无穷大"、"不是一个数字"。
在不遵循 IEEE 754 浮点算术的机器上,这些值的含义可能不是预期的。
如果在 SQL 命令里把这些数值当作常量写,你必须在它们周围放上单引号,像这样:UPDATE table SET x = 'Infinity' 。
输入时,这些值是以大小写无关的方式识别的。
PostgreSQL 还支持 SQL 标准表示法 float 和 float(p) 用于声明非精确的数值类型。
其中的 p 声明以二进制位表示的最低可接受精度。
在选取 real 类型的时候,PostgreSQL 接受 float(1) 到
float(24),在选取 double precision 的时候,接受 float(25) 到 float(53) 。
在允许范围之外的 p 值将导致一个错误。
没有声明精度的 float 将被当作 double precision 。
【注意】PostgreSQL 7.4以前,在 float(p) 里面的精度会被当作是这么多位数的十进制位。
到 7.4 已经被修改成与 SQL 标准匹配,标准声明这个精度是以二进制位度量的。
假设 real 和 double precision 分别有 24 和 53 个二进制位的位数对 IEEE 标准的浮点实现来说是正确的。
在非 IEEE 平台上,这个数值可能略有偏差,但是为了简化,我们在所有平台上都用了同样的 p 值范围。
6.序列号类型
serial 和 bigserial 类型不是真正的类型,只是为在表中设置唯一标识做的概念上的便利。
类似其它一些数据库中的 AUTO_INCREMENT 属性。
在目前的实现中,下面一个语句:
CREATE TABLE tablename (
colname SERIAL
);
等价于声明下面几个语句:
CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename (
colname integer NOT NULL DEFAULT nextval('tablename_colname_seq')
);
ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname;
因此,我们就创建了一个整数字段并且把它的缺省数值安排为从一个序列发生器读取。
应用了一个 NOT NULL 约束以确保 NULL 不会被插入。
在大多数情况下你可能还希望附加一个 UNIQUE 或 PRIMARY KEY 约束避免意外地插入重复的数值,但这个不是自动的。
最后,将序列发生器"从属于"那个字段,这样当该字段或表被删除的时候也一并删除它。
【注意】PostgreSQL 7.3以前,serial 隐含 UNIQUE 。
但现在不再如此。
如果你希望一个序列字段有一个唯一约束或者一个主键,那么你现在必须声明,就像其它数据类型一样。
要在 serial字段中插入序列中的下一个数值,主要是要注意 serial字段应该赋予缺省值。
我们可以通过在 INSERT 语句中把该字段排除在字段列表之外来实现,也可以通过使用 DEFAULT 关键字来实现。
类型名 serial 和 serial4 是等效的:两者都创建 integer 字段。
类型名 bigserial 和 serial8 也一样,只不过它创建一个 bigint 字段。
如果你预计在表的生存期中使用的标识数目可能超过 231 个,那么你应该使用 bigserial 。
一个 serial 类型创建的序列在所属的字段被删除的时候自动删除。
你可以只删除序列而不删除字段,不过这将删除该字段的缺省值表达式。