每个表有如下几个内置的列:
oid tableoid xmin cmin xmax cmax ctid
其中:tableoid xmin cmin xmax cmax ctid这几列是一定会有的,用户不能使用他们来作为列名,而oid却是可以用来作为列名的,前提是要将表定义为非oid表:
WITH (
OIDS = FALSE
)
如果该表所继承的表中,有任何一个表有OID,则该表将被强制使用OID,而不管SQL中的关于OID的定义;
推荐禁用OID(推荐使用一个serial类型的列作为主键),有几个好处:
1、可以节省计算PID的CPU开销,以及磁盘上的IO开销(虽然节省的不是很多)
2、OID是一个32或者64位的一个计数器,当到达其可以表示的最大值后,又会循环重新从0开始计数,这样会导致产生重复的值,使其违反了唯一标识某一行的初衷
但是如果你没有在表上定义主键,则建议开启,并且在其上创建唯一性索引(避免因为计数超过了其能够表示的最大值,然后循环回来产生重复值)这样它可以保证表上始终有一个唯一性的主键,这样可以在一些场合中利用这个唯一主键值提高性能
一个表的列数不能超过1600.
可以定义一个组合类型:
create type t_rank as(
"salary" double precision, "level" smallint
);
然后,基于这个组合类型,定义一个表:
create table testdbschema1.employee of t_rank;
但是这种基于自定义类型的表,是不能再自定义列了,其列将完全依照类型的定义;
查询组合类型:
select * from pg_type where typtype = 'c' and typarray > 0
AND typname NOT IN (SELECT TABLE_NAME FROM information_schema.tables)
order by typname
查询所有表:
select * from information_schema.tables where table_Catalog = 'testdb1' and table_schema='testdbschema1'
表可以继承多个表,这时候将自动继承父表的所有列,并且父表中某个字段数据更新,子表也随之更新,其实就是数据都存放在父表中。如果多个父表,有类型相同的同名字段,则会报错。
相关推荐
设置Postgre数据库远程连接服务的两种方式,截图教程。
postgre最新版本手册,数据库使用手册
QGIS软件连接Postgre数据库截图操作
VC访问数据库有两种方法:一种是使用CDatabase和CRecord对象;另一种是利用ADO技术。 这个程序实现了Postgre数据库的读写,以及存储过程的调用。
postgre数据库自动备份操作教程.pdf
上海领旗postgre数据库密码修改操作方法.docx
使用postgre时的学习文档,包括:postgre安装、启动停止、命令等等。有了这个,一般数据库操作都应该够用了。学习的来源主要是pg自己提供的英文文档。
Postgre SQL数据库安全防护.pptx
postgresql数据库备份和恢复文档资料,详细介绍了PostgreSQL数据库的备份与恢复 方法,值得学习下
易语言源码 Postgre SQL 连接池。基于 http://www.sanye.cx/?id=12020 的源码 二次开发...封装了一些高级方法..包括,连接池+查询缓存+不知道真假的储存过程+慢查询记录。使用源码使用了E2EE支持库(模块部分思路借鉴...
在了解了Postgre的Copy,unlogged table 特性 之后,决定一探究竟。 二、测试用例 1.数据表结构:表示一个员工工作绩效的表(work_test):共15个字段id,no,name,sex,tel,address,provice,city,post,mobile,department...
最近学习Postgre SQL数据库,找了很久也没有找到使用libpq.dll的模块,这里自己按照资料写了一个,写得不好,权当抛砖引玉了哈。顺便说下:Postgre SQL号称是最先进的开源数据库,确实不是盖的,在我使用来看确实比...
posgre数据库驱动文件,针对Qt Creater4.8版本,MSVC中的发布和调试都包含其中(qsqlpsql4.dll,qsqlpsqld4.dll,qsqlpsqld4.pdb)
PostgreSQL 是面向目标的关系的数据库系统,它具有传统商业数据库系统的所有功能,同时又含有将在下一代 DBMS 系统的使用的增强特性。
postgre最新驱动
loadrunner 数据库测试
PostgreSQL数据库的基本使用,很好的帮助安装使用