名称 | 別名 | 説明 |
---|---|---|
bigint | int8 | 8バイト符号付整数 |
bigserial | serial8 | 自動増分8バイト整数 |
bit | 固定長ビット列 | |
bit varying(n) | varbit(n) | 可変長ビット列 |
boolean | bool | 論理(ブール)値(真/偽) |
box | 平面上の矩形 | |
bytea | バイナリデータ | |
character varying(n) | varchar(n) | 可変長文字列 |
character(n) | char(n) | 固定長文字列 |
cidr | IPv4もしくはIPv6ネットワークアドレス | |
circle | 平面上の円 | |
date | 暦の日付(年月日) | |
double precision | float8 | 倍精度浮動小数点 |
inet | IPv4もしくはIPv6ホストアドレス | |
integer | int, int4 | 4バイト符号付整数 |
interval(p) | 時間間隔 | |
line | 平面上の無限直線(完全に実装されていません) | |
lseg | 平面上の線分 | |
macaddr | MAC アドレス | |
money | 貨幣金額 | |
numeric [ (p, s) ] | decimal [ (p, s) ] | 精度の選択可能な高精度数値 |
path | 平面上の経路(開経路および閉経路) | |
point | 平面上の幾何学的点 | |
polygon | 平面上の閉じた幾何学的経路 | |
real | float4 | 単精度浮動小数点 |
smallint | int2 | 2 バイト符号付整数 |
serial | serial4 | 自動増分 4 バイト整数 |
text | 可変長文字列 | |
time [ (p) ] [ without time zone ] | 時刻 | |
time [ (p) ] with time zone | timetz | 時間帯付き時刻 |
timestamp [ (p) ] [ without time zone ] | timestamp | 日付と時刻 |
timestamp [ (p) ] with time zone | timestamptz | 時間帯付き日付と時刻 |
CREATE TABLE tablename ( colname SERIAL );
CREATE SEQUENCE tablename_colname_seq; CREATE TABLE tablename ( colname integer DEFAULT nextval('tablename_colname_seq') NOT NULL );
型名 | 格納サイズ | 説明 | |
---|---|---|---|
character(n), char(n) | n バイト | 空白でパッドされた固定長文字列 | |
character varying(n), varchar(n) | 4 + n バイト | 制限付き可変長文字列 | |
text | 可変長 | 制限無し可変長文字列 | |
graphic, vargraphic | 2 バイト文字 | 固定長、可変長、制限無し可変長文字列 |
CREATE TABLE typetesting01 ( c CHAR(10) , v varchar(10) );
□ 結果 (PostgreSQL)
function | value | char | verchar ------------------+---------------+------+--------- character_length | Hello | 10 | 5 character_length | はろー | 10 | 3 length | Hello | 10 | 5 length | はろー | 10 | 3 octet_length | Hello | 10 | 5 octet_length | はろー | 13 | 6 (6 rows)
□ 結果 (DB2)
function | value | char | verchar ------------------+---------------+------+--------- length | Hello | 10 | 5 length | はろー | 10 | 6 (6 rows)
|--+- function ------+--+-YEAR---------+--------------------------| +- (expression) --+ +-YEARS--------+ +- constant ------+ +-MONTH--------+ +- column-name ---+ +-MONTHS-------+ '- host-variable -' +-DAY----------+ +-DAYS---------+ +-HOUR---------+ +-HOURS--------+ +-MINUTE-------+ +-MINUTES------+ +-SECOND-------+ +-SECONDS------+ +-MICROSECOND--+ '-MICROSECONDS-'
□ PostgreSQL
=> SELECT now()::DATE + 100; ?column? ------------ 2005-01-15 (1 row) => SELECT now()::DATE - 100; ?column? ------------ 2004-06-29 (1 row)
□ DB2
C:\DB2>db2 SELECT current date + 100 day FROM sysibm.sysdummy1 1 ---------- 2005-08-07 1 レコードが選択されました。 C:\DB2>db2 SELECT current date - 100 month FROM sysibm.sysdummy1 1 ---------- 1996-12-29 1 レコードが選択されました。
□ PostgreSQL
=> SELECT now()::DATE - '2000-01-01'; ?column? ---------- 1741 (1 row) => SELECT now()::DATE - '2010-01-01'; ?column? ---------- -1912 (1 row)
□ DB2
C:\DB2>db2 SELECT current date - '2000-01-01' FROM sysibm.sysdummy1 1 ---------- 50328. <- 5 年 3 ヶ月 28 日 の期間 1 レコードが選択されました。
型名 | 格納サイズ | 説明 | |
---|---|---|---|
blob | バイナリー | バイナリー | |
clob | 文字列 | 文字列 | |
dbclob | 2バイト文字列 | 可変長バイナリー |
CREATE TABLE sal_emp ( name text, pay_by_quarter integer[], schedule text[][] );
CREATE TABLE sal_emp ( name text, pay_by_quarter integer ARRAY[4], schedule text ARRAY[4][4] );
CREATE TABLE tictactoe ( squares integer[3][3] );
INSERT INTO sal_emp VALUES ('Bill', '{10000, 10000, 10000, 10000}', '{{"meeting", "lunch"}, {}}'); INSERT INTO sal_emp VALUES ('Carol', '{20000, 25000, 25000, 25000}', '{{"talk", "consult"}, {"meeting"}}');
UPDATE sal_emp SET pay_by_quarter = '{25000, 25000, 27000, 27000}' WHERE name = 'Carol'; UPDATE sal_emp SET pay_by_quarter[4] = 15000 WHERE name = 'Bill'; UPDATE sal_emp SET pay_by_quarter[1:2] = '{27000, 27000}' WHERE name = 'Carol';
pay_by_quarter[1]
schedule[1:2][1:1]