・ユーザの追加 postgres をアクセスするユーザを作成 $ su # useradd UserName # grep UserName /etc/passwd UserName:x:500:500::/home/UserName:/bin/bash DB操作のチェックが終了したら shell を /bin/false や /usr/bin/passwd に変更すること ・ユーザの追加と削除 (ユーザ:postgres で行う) # su - postgres ユーザの追加 (31バイトまで,[A-Za-z0-9_]+) postgres$ createuser UserName Enter user's postgres ID or RETURN to use unix user ID: 500 -> UserNameの ID が 500 のままで OK なので [ENTER] で送る Is user "UserName" allowed to create databases (y/n) y ---------- DB作成権を与える Is user "UserName" a superuser? (y/n) n ------------------ 特権は与えない createuser: UserName was successfully added ユーザの削除 postgres$ destroyuser UserName destroyuser: delete of user UserName was successful. postgres$ exit # exit $
・DBの作成と削除 (各ユーザで行う) DB の作成 $ su # su - UserName UserName$ createdb DBName DBName 省略時はユーザIDがDB名になる DB の削除 $ su # su - UserName UserName$ destroydb DBName
・psql の操作 テーブルの作成 $ psql DBName DBName=> create table TableName (TermName text, TermValue int); データの挿入 DBName=> insert into TableName values ('Term1', 100) ; DBName=> insert into TableName values ('Term2', 150) ; DBName=> select * from TableName; TermName|TermValue --------+--------- Term1 | 100 Term2 | 150 (2 rows) 特定のデータに 10 を加算 (対象は TermValue) DBName=> update TableName set TermValue = TermValue +10 where TermName = 'Term1'; DBName=> select * from TableName; TermName|TermValue --------+--------- Term1 | 110 Term2 | 150 (2 rows) 全てのデータに 10 を加算 (対象は TermValue) DBName=> update TableName set TermValue = TermValue +10; DBName=> select * from TableName; TermName|TermValue --------+--------- Term1 | 120 Term2 | 160 (2 rows) 特定のデータを削除 DBName=> delete from TableName where TermName = 'Term1'; DBName=> select * from TableName; TermName|TermValue --------+--------- Term2 | 160 (1 rows) テーブルの削除 DBName=> drop table TableName; テーブルの内容をファイルに出力 (セパレータ=TAB(0x09), 改行=LF(0x0A)) DBName=> \copy TableName to CSV-PATH テーブルの内容をファイルから追加 (セパレータ=TAB(0x09), 改行=LF(0x0A)) DBName=> \copy TableName from CSV-PATH
アクセス権設定 DBName=> grant PermitList on TableName to public DBName=> revoke PermitList on TableName from public PermitList: select,insert,update,delete,rule,all ※ public は一般ユーザの意味 アクセス権の確認 DBName=> \z Database = DBName +-----------+--------------------------+ | Relation | Grant/Revoke Permissions | +-----------+--------------------------+ | TableName | {"=","foo=Permit"} | +-----------+--------------------------+ Permit: r select a insert w update/delete R rule ※ "=" は一般ユーザの意味 (右辺には何の権限もない)
PostgreSQL | SQL92 | 意味 |
---|---|---|
char | character または char | 1バイト文字。マルチバイト文字は格納できない。1バイトを占有 |
char(n) | character(n) または char(n) | 固定長文字列 4+n バイトを占有。 入力文字が指定桁に満たなければ空白文字で詰められる。 n は 4096 以下。 オーバー分は捨てられる。 |
varchar(n) | character varying(n) または char varying(n) または varchar(n) | 可変長文字列 4+n バイトを占有 n は 4096 以下 オーバー分は捨てられる。 |
float4/8 | float(p) | 精度pの浮動小数点 |
float8 | double precision | 倍精度浮動小数点 |
float8 | real | 単精度浮動小数点 |
int4 | integer または int | 符号付き整数 |
int2 | smallint | 小桁符号付き整数 |
int4 | numeric(p,s) | 任意精度の 10 進数数値 |
int4 | decimal(p,s) | 任意精度の 10 進数数値 |
date | date | 年月日 '2001-01-01' |
time | time (with timezone) | 時分秒 '20:30:10.555' (24 時間制) |
timsetamp | timestamp (with timezone) | 年月日時分秒 '1901-12-14 00:00:00' - '2038-01-19 23:59:59' SQL92 とは実装が違う |
timespan | interval | 時間間隔 |
PostgreSQL | SQL3 | 意味 |
bool | boolean | true/falseを示す |
PostgreSQL | 意味 | 使い方 |
box | 矩形 | 左下と右上の点を指定 |
circle | 円 | (x,y),<r> または x,y,r として指定 |
lseg | 直線 | [(x1,y1),(x2,y2)] (x1,y1),(x2,y2) x1,y1,x2,y2 (x1,y1,x2,y2) のいずれか |
path | 経路 | [(x1,y1),(x2,y2),..] (x1,y1),(x2,y2),.. x1,y1,x2,y2,.. (x1,y1,x2,y2,..) のいずれか |
point | 点 | (x,y) x,y のいずれか |
polygon | 多角形 | (x1,y1),(x2,y2),.. x1,y1,x2,y2,.. (x1,y1,x2,y2,..) のいずれか |
text | 可変長テキスト | PostgreSQL では varchar では無く text を推奨 4+x バイトを占有 |
int8 | 8バイト整数 | contrib に添付。非サポートのプラットホームもある |
datetime | 8バイト浮動小数点 | SQL92 の timestamp 型よりも高機能 timestamp型よりも広い範囲で精度が高い |