・ユーザの追加
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型よりも広い範囲で精度が高い |