¾�ΥС�������ʸ�� �� 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

8.1. ���ͥǡ�����

���ͥǡ������ˤ�2��4��8�Х��������ȡ�4��8�Х�����ư������������������꤬��ǽ�ʿ�������ޤ��� 表8-2�˻��Ѳ�ǽ�ʷ�����󤷤ޤ���

表 8-2. ���ͥǡ�����

��̾��Ǽ�����������ϰ�
smallint2�Х������ϰϤ�����-32768����+32767
integer4�Х���ŵ��Ū�˻��Ѥ�������-2147483648����+2147483647
bigint8�Х������ϰ�����-9223372036854775808����+9223372036854775807
decimal����Ĺ�桼���������١��������������ޤǤ�131072�塢�������ʹߤ�16383��
numeric����Ĺ�桼���������١��������������ޤǤ�131072�塢�������ʹߤ�16383��
real4�Х����������١�������6������
double precision8�Х����������١�������15������
smallserial2�Х������ϰϼ�ư����1����32767
serial4�Х�����ư��ʬ����1����2147483647
bigserial8�Х������ϰϼ�ư��ʬ����1����9223372036854775807

���ͥǡ��������Ф�������ι�ʸ��項4.1.2���������Ƥ��ޤ��� ���ͥǡ������ˤ��б����뻻�ѱ黻�Ҥȴؿ��ΰ켰��·�äƤ��ޤ��� �ܺ٤�第9章�򻲾Ȥ��Ƥ��������� ����ǥǡ������ˤĤ��ƾܤ����������ޤ���

8.1.1. �����ǡ�����

smallint��integer��bigint�ϳƼ��ϰϤ��������Ĥޤ꾮�����ʲ���ü�����ʤ������ݻ����ޤ��� �����ϰϤ��鳰�줿�ͤ���¸���褦�Ȥ���ȥ��顼�ˤʤ�ޤ���

integer���Ͽ��ͤ��ϰϡ���Ǽ�������������ǽ�ˤ����ƺǤ���礤�����Ƥ��ޤ��Τǡ�����Ū�˻��Ѥ���ޤ��� smallint�����̾�ϥǥ��������̤����¤��դ��Ƥ�����ˤΤ߻��Ѥ��ޤ��� bigint����integer�ε����ϰϤǤϽ�ʬ�ǤϤʤ����ˤΤ߻��Ѥ��٤��Ǥ���

���ˤ鷺���ʥ��ڥ졼�ƥ��󥰥����ƥ��bigint���ϡ�8�Х��������򥳥�ѥ��餬���ݡ��Ȥ��Ƥ��뤫�ɤ����˰�¸���ޤ��Τ�����˵�ǽ����Ȥϸ¤�ޤ��� ���Τ褦�ʥޥ���Ǥ�bigint��integer��Ʊ���褦�˿��񤤤ޤ������ΰ��8�Х��Ȥޤ�ɬ�פǤ��� �ʤ��ξ��������ƤϤޤ�Ƕ�Υץ�åȥե�������İ����Ƥ��ޤ��󡣡�

SQL�Ǥ������η��Ȥ���integer�ʤޤ���int�ˤ�smallint��bigint�Τߤ��ꤷ�Ƥ��ޤ��� int2��int4�����int8�ϳ�ĥ�Ǥ����������Ĥ�¾��SQL�ǡ����١��������ƥ�Ǥ�Ȥ��Ƥ��ޤ���

8.1.2. Ǥ�դ����٤���Ŀ�

numeric���ϡ������礭�ʷ���ǿ��ͤ��Ǽ�Ǥ������Τʷ׻���Ԥ��ޤ��� �̲߶�ۤ䤽��¾����������������̤���¸��������äˡ����η���侩���ޤ��� �Ȥϸ��äƤ⡢numeric���ͤ��Ф��뻻�ѱ黻��ư��ϼ���������������������⤷������ư�������ǡ���������Ӥ������٤��ʤ�ޤ���

���θ�������Ǥϡ������Ѹ����Ѥ��ޤ��� numeric���̼���Ȥϡ��������α�¦�ξ������ʲ��η���򤤤��ޤ��� numeric�������ȤϿ������Τ�ͭ������Ǥ��� ���ʤ������������Ϥ���Ǥ���ξ¦�η���ι�פǤ��� ���Τ��ᡢ23.5141�Ȥ������ͤ����٤�6�ǰ̼���4�Ȥʤ�ޤ��� �����ΰ̼��ϡ������Ǥ���Ȥߤʤ����Ȥ��Ǥ��ޤ���

numeric��ο��ͤκ������٤Ⱥ���̼��ϤȤ�����ꤹ�뤳�Ȥ��Ǥ��ޤ��� ��Υǡ�������numeric���������ˤϼ��ι�ʸ��Ȥ��ޤ���

NUMERIC(precision, scale)

���٤��������̼���0�⤷���������Ǥʤ���Фʤ�ޤ��� ¾��

NUMERIC(precision)

�ϰ̼�꤬0�Ǥ��뤳�Ȥ����򤷤ޤ���

NUMERIC

���٤ޤ��ϰ̼��λ��꤬�ʤ���硢��������Ƥ���³������٤ޤǡ������ʤ����٤��뤤�ϰ̼����ͤ��Ǽ�Ǥ����󤬺���ޤ��� ���������Ϥ����ʤ�����ΰ̼����Ф��Ƥ������ͤ��פ��ޤ��󤬡�������줿�̼������numeric��������ͤˤ��ΰ̼����פ��ޤ��� ��ɸ��SQL�ϥǥե���ȤȤ��ư̼��0���׵ᤷ�Ƥ��ơ��������Ф��븷̩���������Ƥ��ޤ��� ��������������ˡ�Ϥ��ޤ����Ω���ʤ��Ȼפ��ޤ��� �⤷�ܿ������ۤ���ʤ顢������٤Ȱ̼�������Ū�����ꤷ�Ƥ�����������

注意: ����Ū�˷�����ǻ��ꤵ�����˵������������٤�1000�Ǥ��� ���٤λ��꤬�ʤ�NUMERIC��表8-2�������������¤˽����ޤ���

��Ǽ������ͤΰ̼�꤬������줿��ΰ̼�����礭���ä���硢�����ƥ�ϻ��ꤵ�줿�������η�ޤ��ͤ�ݤ�ޤ��� �����ơ��������κ�¦�η������������줿���٤���������줿�̼��򺹤�����������Ķ������˥��顼�Ȥʤ�ޤ���

���ͤ�ʪ��Ū����Ƭ��������0����Ϳ����뤳�Ȥʤ���Ǽ����ޤ��� �������äơ����������줿���٤Ȱ̼��Ϻ���Ǥ��ꡢ����Ū�˳�����Ƥ��Ƥ��ޤ��� �ʤ��ΰ�̣�Ǥ�numeric��char(n)����varchar(n)�˻��Ƥ��ޤ����� �ºݤγ�Ǽ��ɬ�פ����̤ϡ�10�ʿ�4��Τ��줾��Υ��롼�פ��Ф���2�Х��Ȥȡ�3����8�Х��ȤΥ����ХإåɤǤ���

�̾�ο��ͤ˲ä���numeric���ϡ�"�����"���̣����NaN�Ȥ������̤��ͤ��뤳�Ȥ��Ǥ��ޤ��� NaN���Ф������Ϥ��٤ơ��̤�NaN���������ޤ��� �����ͤ�SQL���ޥ�ɤ�����Ȥ��Ƶ��Ҥ�����ϡ��㤨��UPDATE table SET x = 'NaN'�Τ褦�ˡ�������Ǥ�����ʤ���Фʤ�ޤ��� ���Ϥκݤϡ�NaN�Ȥ���ʸ�������ʸ����ʸ���ζ��̤ʤ�ǧ������ޤ���

注意: �ۤȤ�ɤ�"���"�μ����ˤ����ơ�NaN�ϡ�NaN��ޤ��¾�ο��ͤ������ˤʤ�Ȥߤʤ���Ƥ��ޤ��� numeric�ͤ򥽡��ȤǤ��롢�ޤ����ĥ꡼���ˤ�������ǥå����ǻ��ѤǤ���褦�ˡ�PostgreSQL��NaNƱ�Τ������������٤Ƥ�NaN�ʳ����ͤ����礭���ͤȤʤ��ΤȤ��ư����ޤ���

decimal��numeric���������Ǥ��� 2�ĤΥǡ������ϤȤ��ɸ��SQL�˽��äƤ��ޤ���

8.1.3. ��ư�������ǡ�����

real��double precision�������Τʲ������٤ο��ͥǡ������Ǥ��� �ºݤˤϤ����Υǡ������ϡ����Ѥ��Ƥ���ץ����å������ڥ졼�ƥ��󥰥����ƥप��ӥ���ѥ��餬���ݡ��Ȥ��Ƥ���С��̾�ϡʤ��줾��ñ���٤���������٤Ρ˥Х��ʥ���ư�������黻�Ѥ�IEEE����754�μ����Ǥ���

�����ΤȤ����Τϡ������ͤϤ��Τޤޤ������������Ѵ����줺�˶���ͤȤ�����¸�����Ȥ������ȤǤ��� �Ǥ����顢��¸���褦�Ȥ����ͤ���Ф��褦�Ȥ����ͤδ֤�¿���κ��ۤ�ǧ����ޤ��� �����Υ��顼��������׻��ˤ�ä�������ɤ����뤫�ˤĤ��Ƥϡ����ؤȥ���ԥ塼���ʳؤη������٤Ƥ˴ؤ�뤳�Ȥǡ��ʲ��������������ޤ���

�ۤȤ�ɤΥץ�åȥե�����Ǥ�real�Ϻ���6������٤���ä����ʤ��Ȥ�-1E+37��+1E+37���ϰϤǤ��� double precision���̾����15������٤Ǥ��褽-1E+308��+1E+308���ϰϤǤ��� �礭�᤮���꾮���᤮���ͤϥ��顼�θ����Ȥʤ�ޤ��� �����ͤ����٤���᤮����ϴݤ���뤳�Ȥ�����ޤ��� �����˸¤�ʤ��ᤤ�ͤǡ������⥼���Ȥ϶��̤���Ƥ���褦�ˤߤʤ���ʤ����ͤϥ�������ե������顼������������ޤ���

注意: ��ư��������ޤ��ͤ��ƥ����ȷ����Ѵ�������硢extra_float_digits�ˤ�ä�ͭ�����������椷�ޤ��� �ǥե�����ͤ�0�����ꤵ��Ƥ����硢���Ϥ�PostgerSQL�򥵥ݡ��Ȥ������ƤΥץ�åȥۡ����Ʊ���Ǥ��� �����ͤ��礭�����뤳�Ȥdz�Ǽ���줿�ͤ�����̩��ɽ���Ǥ��ޤ������ץ�åȥۡ���֤ΰܿ����������뤫�⤷��ޤ���

�̾�ο��ͤ˲ä�����ư���������Ǥϰʲ����ü���ͤ���ޤ���

Infinity
-Infinity
NaN

�����Ϥ��줾�졢IEEE 754���ü���͡�"̵����"��"���̵����"��"�����"��ɽ���ޤ��� ����ư�������׻���IEEE 754�˽���ʤ��ޥ���Ǥϡ��������ͤϤ����餯������ư��ޤ��󡣡� �������ͤ�SQL���ޥ�ɤ�����Ȥ��Ƶ��Ҥ����硢�㤨��UPDATE table SET x = 'Infinity'�Τ褦�˰�����Ǥ�����ɬ�פ�����ޤ��� ���Ϥκݡ�������ʸ�������ʸ����ʸ���ζ��̤ʤ�ǧ������ޤ���

注意: IEEE754�Ǥϡ�NaN�ϡ�NaN��ޤ��¾�Τ��٤Ƥ���ư�������ͤ���٤����������Ǥʤ���Фʤ�ʤ��ȵ��ꤷ�Ƥ��ޤ��� ��ư�������ͤ򥽡��ȤǤ��롢�ޤ����ĥ꡼���ˤ�������ǥå����ǻ��ѤǤ���褦�ˡ�PostgreSQL��NaNƱ�Τ������������٤Ƥ�NaN�ʳ����ͤ����礭���ͤȤʤ��ΤȤ��ư����ޤ���

�ޤ���PostgreSQL�Ǥ������Τʿ��ͷ����ꤹ��ɸ��SQL��float��float(p)�򥵥ݡ��Ȥ��Ƥ��ޤ��� �����ǡ�p��2�ʿ�����Ǻ�������դ������٤���ꤷ�ޤ��� PostgreSQL��float(1)����float(24)��real�����򤹤��ΤȤ��Ƽ����դ���float(25)����float(53)��double precision�����򤹤��ΤȤ��Ƽ����դ��ޤ��� �����ϰϳ���p���ͤϥ��顼�ˤʤ�ޤ��� ���ٻ���Τʤ�float��double precision�Ȥ��Ʋ�ᤵ��ޤ���

注意: 7.4�������PostgreSQL�Ǥϡ�float(p)�����٤�10�ʿ�����Ȥ��Ʋ�ᤵ��ޤ����� ����ϡ�2�ʿ���������٤��ꤹ��ɸ��SQL�˰��פ���褦���ѹ����줿��ΤǤ��� real��double precision�β��������줾��24�ӥåȤ�53�ӥåȤǤ���Ȥ�������ϡ�IEEEɸ����ư�������μ����Ǥ���������ΤǤ��� ��IEEE�Υץ�åȥե�����Ǥϡ�����̵���ˤʤ��ǽ��������ޤ�����ñ�㲽�Τ���ˤ��٤ƤΥץ�åȥե������p���ϰϤ�Ʊ��Ǥ���

8.1.4. Ϣ�ַ�

smallserial��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������ɲä��뤳�Ȥ��侩����ޤ���������ϼ�ưŪ�ˤϹԤ��ޤ��󡣡� �Ǹ�ˡ��������󥹤����"����ͭ"������ΤȰ����դ��ޤ��� �������äơ��ơ��֥���󤬺�����줿���˥������󥹤Ϻ������ޤ���

注意: smallserial�� serial�����bigserial�ϥ������󥹤�ȤäƼ�������Ƥ��뤿�ᡢ�Ԥκ�����Ԥ��Ƥ��ʤ��Ȥ⡢���"��"��Ϣ�֤�ȴ����ȯ�����뤫�⤷��ޤ��󡣤ޤ����ơ��֥���������������Ƥ��ʤ��ˤ�ؤ�餺���������󥹤��ͤ�"���񤷤Ƥ��ޤ�"���Ȥ⤢��ޤ�������ϡ��㤨�����������ȥ�󥶥�����󤬥�����Хå����줿����ȯ�����뤳�Ȥ�����ޤ����ܺ٤�項9.16��nextval()�򻲾Ȥ��Ƥ���������

注意: PostgreSQL 7.3������Ǥϡ�serial��UNIQUE���̣���Ƥ��ޤ����� ���ߤǤϼ�ưŪ�ˤϹԤ��ޤ��� Ϣ�֤���˰��������⤷���ϥץ饤�ޥꥭ������Ϳ���������ϡ�¾�Υǡ�����Ʊ�ͻ��ꤷ�ʤ���Фʤ�ޤ���

serial��˥������󥹤μ����ͤ���������ˤϡ�serial��ˤ��Υǥե�����ͤ������Ƥ�褦���ꤷ�Ƥ��������� ����ϡ�INSERTʸ����ꥹ�Ȥ��餽�����������롢�⤷����DEFAULT������ɤ���Ѥ��뤳�ȤǹԤ����Ȥ��Ǥ��ޤ���

serial��serial4�Ȥ�������̾�Τ������Ǥ��� �Ȥ��integer���������ޤ��� bigserial��serial8�Ȥ�������̾�Τ�bigint���������뤳�Ȥ������Ʊ�����񤤤򤷤ޤ��� �⤷�ơ��֥����Ѥ�����֤�231�ʾ�μ��̻Ҥ���Ѥ����ͽ¬������硢bigserial����Ѥ��ʤ���Ф����ޤ���smallserial��serial2�Ȥ�������̾�Τ�ޤ���smallint���������뤳�Ȥ������Ʊ�����񤤤򤷤ޤ���

serial���Ѥ˺������줿�������󥹤ϡ�������ͭ�����󤬺�����줿���˼�ưŪ�˺������ޤ��� ����������˥������󥹤������뤳�Ȥ��Ǥ��ޤ���������ˤ�궯��Ū����Υǥե���ȼ����������ޤ���