PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
---|---|---|---|---|
Prev | Fast Backward | Fast Forward | Next |
PostgreSQL ���ŷḻ���������Ϳ��á� �û�����ʹ�� CREATE TYPE����Ϊ PostgreSQL �����µ��������͡�
Table 8-1 ��ʾ���������õ���ͨ�������͡� ��"����"�����г��Ĵ������ѡ���ֶ�������ʷԭ�� PostgreSQL ���ڲ�ʹ�õ����֡� ���⣬����һЩ�ڲ�ʹ�õĻ��߷���������Ҳ�����ã���û���������г���
Table 8-1. ��������
���� | ���� | ���� |
---|---|---|
bigint | int8 | �з��� 8 �ֽ����� |
bigserial | serial8 | �������ֽ����� |
bit [ (n) ] | ����� | |
bit varying [ (n) ] | varbit | �䳤λ�� |
boolean | bool | �������� ����/�٣� |
box | ƽ���еij����� | |
bytea | ���������ݣ�"�ֽ�����"�� | |
character varying [ (n) ] | varchar [ (n) ] | �䳤�ַ��� |
character [ (n) ] | char [ (n) ] | �����ַ��� |
cidr | IPv4 ���� IPv6 �����ַ | |
circle | ƽ���е�Բ | |
date | �������ڣ��꣬�£��գ� | |
double precision | float8 | ˫���ȸ������� |
inet | IPv4 ���� IPv6 �����ַ | |
integer | int��int4 | ���ֽڳ��з������� |
interval [ (p) ] | ʱ���� | |
line | ƽ���е�����ֱ�� | |
lseg | ƽ���е��߶� | |
macaddr | MAC ��ַ | |
money | ���ҽ�� | |
numeric [ (p, s) ] | decimal [ (p, s) ] | ��ѡ���ȵ�ȷ���� |
path | ƽ���еļ���·�� | |
point | ƽ���еĵ� | |
polygon | ƽ���еķ�ռ���·�� | |
real | float4 | �����ȸ����� |
smallint | int2 | �з������ֽ����� |
serial | serial4 | �������ֽ����� |
text | �䳤�ַ��� | |
time [ (p) ] [ without time zone ] | һ�����ʱ�� | |
time [ (p) ] with time zone | timetz | һ�����ʱ�䣬����ʱ�� |
timestamp [ (p) ] [ without time zone ] | ���ں�ʱ�� | |
timestamp [ (p) ] with time zone | timestamptz | ���ں�ʱ�� |
������: �������ͣ���������ƴд�ģ���SQL�����ģ� bit��bit varying��boolean�� char��character��character varying��varchar��date�� double precision��integer�� interval��numeric��decimal�� real��smallint��time ��������ʱ������ʱ���ģ��� timestamp ��������ʱ������ʱ���ģ���
ÿ���������Ͷ���һ�������������������������ⲿ������ʽ�� ����ڽ������������Եĸ�ʽ���������������Ҫô�� PostgreSQL �����еģ����缸��·����Ҫô�������м��ֲ�ͬ�ĸ�ʽ���������ں�ʱ�����͡� ��Щ�������������Dz�����ġ�Ҳ����˵�������������������ԭʼ������Ƚϵ�ʱ����ܶ�ʧ���ȡ�
��ֵ������2��4��8�ֽڵ������Լ�4��8�ֽڵĸ������Ϳ�ѡ����С����ɡ� Table 8-2 �г������п������͡�
Table 8-2. ��ֵ����
���� | �洢�ռ� | ���� | ��Χ |
---|---|---|---|
smallint | 2 �ֽ� | С��Χ���� | -32768 �� +32767 |
integer | 4 �ֽ� | ���õ����� | -2147483648 �� +2147483647 |
bigint | 8 �ֽ� | ��Χ������ | -9223372036854775808 �� 9223372036854775807 |
decimal | �䳤 | �û��������ȣ���ȷ | ������ |
numeric | �䳤 | �û��������ȣ���ȷ | ������ |
real | 4 �ֽ� | �侫�ȣ�����ȷ | 6 λʮ�������־��� |
double precision | 8 �ֽ� | �侫�ȣ�����ȷ | 15 λʮ�������־��� |
serial | 4 �ֽ� | �������� | 1 �� +2147483647 |
bigserial | 8 �ֽ� | ��Χ���������� | 1 �� 9223372036854775807 |
��ֵ���ͳ�������� Section 4.1.2 �������� ��ֵ���Ͷ�Ӧ��һ����������ѧ�������ͺ����������Ϣ��ο� Chapter 9�� ����ļ�����ϸ������Щ���͡�
���� smallint��integer���� bigint �洢���ַ�Χ��ȫ�������ֵ�����Ҳ����û��С�����ֵ����֡� ��ͼ�洢������Χ�������ֵ������һ������
���õ������� integer����Ϊ���ṩ���ڷ�Χ���洢�ռ䣬 ������֮������ƽ�⡣һ��ֻ���ڴ��̿ռ���ŵ�ʱ���ʹ�� smallint����ֻ���� integer �ķ�Χ������ʱ���ʹ�� bigint����Ϊǰ�߾��Կ�öࡣ
bigint ���Ϳ��ܲ���������ƽ̨�϶���ת��ȷ�� ��Ϊ���������������ֽ�������֧�֡�����Щû������֧�ֵĻ����ϣ� bigint �����ú� integer һ����������Ȼռ�ݰ��ֽڴ洢�������������ǻ���֪���κ��������������ƽ̨��
SQLֻ�������������� integer(��int)�� smallint������ bigint���������� int2��int4���� int8 ������չ�� Ҳ��������� SQL ���ݿ�ϵͳ��ʹ�á�
���� numeric ���Դ洢���1000λ���ȵ����ֲ���ȷ�ؽ��м��㡣 �����ر��齫�����ڻ��ҽ�������Ҫ�����ȷ��������������numeric �����ϵ�����������������ͻ���������һ�������ĸ���������Ҫ���ܶࡣ
���������������ʹ����������� һ�� numeric �������ǵ�С�����ұ�ΪֹС�����ֵ�λ���� numeric ������������������ȫ������λ����Ŀ��Ҳ����С�������ߵ�������Ŀ�� ������� 23.5141 �ľ���Ϊ6������Ϊ4���������Ϊ�����ı���Ϊ�㡣
numeric �ֶε���Ⱥ����������ǿ������õġ�Ҫ����һ������Ϊ numeric ���ֶΣ��������������
NUMERIC(precision, scale)
���ȱ���Ϊ��������������Ϊ����������� ���⣬
NUMERIC(precision)
ѡ���� 0 Ϊ�����������κξ��Ȼ��߱�������
NUMERIC
��һ�����Դ洢һ��ֱ��ʵ�־����������⾫�Ⱥͱ�������ֵ�� һ���������͵��ֶν������������ֵת�����κ��ض��ı����� �����б��������� numeric �ֶν�������ֵת��Ϊ�ñ����� ��SQL��Ҫ��ȱʡ�ı����� 0��Ҳ����ת�����������ȡ� ���Ǿ����������е�û�á�����������ֲ�ԣ��������������ȷ�������Ⱥͱ�������
���һ��Ҫ�洢����ֵ�ı������ֶ������ı����ߣ� ��ôϵͳ������Բ������ֵ��ָ����С��λ�� Ȼ�����С������ߵ�����λ�������������ľ��ȼ�ȥ�����ı����� ��ô�׳�һ������
��ֵ����ֵ�������Dz����κ�ǰ�����ߺ������ʽ�洢�ġ� ��ˣ��ֶ��������ľ��Ⱥͱ����������ֵ�������ǹ̶�����ġ� ����������棬numeric ���������� varchar(n)�� ������ char(n)����
������ͨ������ֵ֮�⣬numeric ������������ֵ NaN�� ��ʾ"����һ������"���κ��� NaN ����IJ�������������һ�� NaN�� ����� SQL ���������Щֵ����һ������д�������������Χ���ϵ����ţ����� UPDATE table SET x = 'NaN'��������ʱ���ִ� NaN ������Сд�ؿ�����
���� decimal �� numeric �ǵ�Ч�ġ� �������Ͷ���SQL����
�������� real �� double precision �Dz�ȷ�ģ��侫�ȵ��������͡� ʵ���ϣ���Щ������ IEEE �� 754 �����Ƹ������������ֱ��Ӧ����˫���ȣ���һ��ʵ�֣� ����²㴦����������ϵͳ�ͱ�����������֧�֡�
��ȷ��ζ��һЩ��ֵ����ȷ��ת�����ڲ���ʽ�������Խ��Ƶ���ʽ�洢�ģ���˴洢Ȼ��������ٴ�ӡ����������ʾһЩȱʧ�� ������Щ�����Լ���Щ����������ڼ����д�����������ѧ�ͼ������ѧ��һ�������ķ�֧�� ���Dz����������һ������������������۽��������¼��㣺
�����Ҫ��ȷ�ļ��㣨���������ҽ���Ӧʹ�� numeric ���͡�
�����������Щ�����������κ���Ҫ�ĸ��Ӽ��㣬��������Щ��Է�Χ�����������磩�������������飬����Ӧ����ϸ��ڬ���ʵ�֡�
������������ֵ��������ԱȽϿ�����Ҳ���ܲ�������������ת��
ͨ����real ���͵ķ�Χ������ -1E+37 �� +1E+37�� ���������� 6 λС����double precision ����ͨ���� -1E+308 �� +1E+308 �ķ�Χ������������ 15 λ���֡�̫�����̫С����ֵ���ᵼ�´��� �����������̫�ߣ���ô���ܷ�������̫�ӽ�������֣����������ֵ�ı�����ʽ�����־ͻ���������
������ͨ������ֵ֮�⣬�������ͻ��м�������ֵ��
Infinity
-Infinity
NaN
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 �Ѿ����ij��� SQL ��ƥ�䣬����������������Զ�����λ�����ġ����� real �� double precision �ֱ��� 24 �� 53 ��������λ��λ���� IEEE ���ĸ���ʵ����˵����ȷ�ġ� �ڷ� IEEE ƽ̨�ϣ������ֵ��������ƫ�����Ϊ�˼�����������ƽ̨�϶�����ͬ���� p ֵ��Χ��
serial �� bigserial ���Ͳ������������ͣ� ֻ��Ϊ�ڱ�������Ψһ��ʶ���ĸ����ϵı���������������һЩ���ݿ��е� AUTO_INCREMENT ���ԣ��� ��Ŀǰ��ʵ���У�����һ�仰��
CREATE TABLE tablename ( colname SERIAL );
�ȼ����������漸�仰��
CREATE SEQUENCE tablename_colname_seq; CREATE TABLE tablename( colname integer DEFAULT nextval('tablename_colname_seq') NOT NULL );
��ˣ����Ǿʹ�����һ�������ֶβ��Ұ�����ȱʡ��ֵ����Ϊ��һ�����з�����ȡֵ�� Ӧ����һ�� NOT NULL Լ����ȷ����ֵ���ᱻ��ȷ�ز��롣 �ڴ�������������ܻ�ϣ������һ�� UNIQUE ���� PRIMARY KEY Լ����������ز����ظ�����ֵ������������Զ������ġ�
ע��: �� PostgreSQL 7.3 ��ǰ��serial ���� UNIQUE�������ڲ�����ˡ� �����ϣ��һ�������ֶ���һ��ΨһԼ������һ����������ô�����ڱ�������������������������һ����
Ҫʹ�� serial �ֶβ������е���һ����ֵ�����У� ��Ҫ��Ҫע�� serial Ӧ�ø���ȱʡֵ�� ���ǿ���ͨ���� INSERT ����аѸ��ֶ��ų����ֶ��б�֮����ʵ�֣� Ҳ����ͨ��ʹ�� DEFAULT �ؼ�����ʵ�֡�
������ serial �� serial4 �ǵ�Ч�ģ� ���������� integer �ֶΡ������� bigserial �� serial8 Ҳһ����ֻ����������һ�� bigint �ֶΡ� �����Ԥ���ڱ����������ʹ�õı�ʶ��Ŀ���� 231 ������ô��Ӧ��ʹ�� bigserial��
һ�� serial ���ʹ������������������ֶα�ɾ����ʱ���Զ�ɾ��������������Dz��ᱻɾ���ġ� ����һ���� PostgreSQL �汾 7.3 ֮ǰ�ɲ�����ġ���ע�⣬�����Զ�ɾ���Ĺ�����ͨ������ 7.3 ��ǰ�����ݿ�ת����ʱ��ɲ����Զ������� ������ת���ļ���������Ҫ�������ֹ�����ϵ����Ϣ���� ���⣬���������к��ֶ�֮���������ֻ�� serial �ֶα������У� ����κ������ֶ����������У��������ֹ����� nextval �������� ��ô�����������б�ɾ���ˣ����Ǿͻᱻ�ƻ���������Ϊ����ʹ�� serial �ֶ���һ�ֲ��õ���ʽ�����������ͬһ�����з������������ֶ�ι���ݣ���ô���ǰ����з�������Ϊ����������