-
PostgreSQLは■の主な機能をサポートしている。
標準規格 SQL: 2016
-
PostgreSQLは■によリコミュニティベースで開発や配布が行われている。
(PostgreSQL Global DevelopmentGroup (PostgreSQL グローバル開発グループ)
-
PostgreSQLのライセンスは■のライセンスである。
BSDスタイル
-
PostgreSQLのライセンスは■で、 ■にできる。
商用/非商用を問わず無償で利用可能
改変も自由
-
開発コミュニティサイトのURLは、■である。
https://www.postgresql.org/
-
開発コミュニティサイトから■を入手できる。
ソースコードやバイナリコード
-
PostgreSQLのユーザ会は■がある。
世界各国に存在し、 日本国内にもユーザ会
-
DBMSの機能として、■、■、■、■などがある。
データの機密保護
トランザクションの同時実行制御
障害からの回復
アプリケーションプログラムへのインタフェースの提供
-
データベースを構築する範囲を■という。
対象世界
-
対象世界をモデル化したものを■という。
データモデル
-
概念データモデルは■。
DBMSに依存しない
-
論理データモデルは■が使用する論理構造を意識して作成するため、■ 。
DBMS
DBMSに依存する
-
階層モデルのエンティティの親子関係は■である。
1:多
-
ネットワークモデルのエンティティの親子関係は■である。
多:多
-
関係モデルは■でデータを表現する。
表構造
-
関係モデルにおける行は、■、■、■などと呼ばれる。
タブル
組
ロー
-
関係モデルにおける列は、■、■、■などと呼ばれる。
アトリビュート
属性
カラム
-
SQLは■、■、■に分類される。
DDL
DML
DCL
-
論理データモデルへの変換において、■の関係は運関エンティティを追加して、■、■の関係に置き換える。
多:多
1:多
多:1
-
更新時異常を防止するために、■を行う。
正規化
-
参照専用で■は正規化しなくてもよい。
追加/変更/削除しないテーブル
-
候補キーから1つ選択して■とする。
主キー
-
主キーを構成する属性には■。
NULLを含められない
-
候補キーを構成する属性には■。
NULLを含めてもよい
-
いずれの候補キーにも含まれない属性を■という。
非キー属性
-
属性(もしくは属性の組) Aの値を決めれば、 属性(もしくは属性の組) B の値が一意に決まるとき、BはAに■するという。
関数従属
-
YがXに関数従属し、 Xの任意の部分集合にはYが関数従属しないとき、 YはXに■するという。
完全関数従属
-
YがXに関数従属し、 Xのある部分集合Xにも関数従属するとき、 YはXに■するという。
部分関数従属
-
候補キーをX. 候補キー以外の属性(もしくは属性の組) をY, 非キー属性をZとする。 YがXに関数従属し、 ZがYに関数従属し、 XはYに関数従属しないという関係が成り立つとき、ZはXに■するという。
推移関数従属
-
非正規形は、■テーブルである。
繰り返し項目を含む
-
第1正規形は、■テーブルである。
繰り返し項目がなく、 各属性が単純定義域になっている
-
第2正規形は、第1正規形の条件を満たし、かつ■テーブルである。
すべての非キー属性が候補キーに完全関数従属する(部分関数従属が存在しない)
-
第3正規形は、第2正規形の条件を満たし、 かつ■テーブルである。
推移関数従属が存在しない
-
ボイスコッド正規形は、■テーブルである。
すべての候補キーAについて、A以外のすべての属性A'がAに完全関数従属する
-
データベースクラスタの実体は、■である。
ファイルシステム上の1つのディレクトリ
-
データベースクラスタとPostgreSQLサーバは■で対応する。
1対1
-
■、■、■データベースは最初から定義されている。
template0
template1
postgres
-
データベースクラスタの作成は■で行う。
initdb
-
initdbを■で実行することはできない。
root
-
新しいデータベースは、デフォルトでは■をテンプレートにして作成される。
template1
-
template■は内容を変更できるが、template■はできない。
1
0
-
■を実行したOSユーザが、 PostgreSQLの管理ユーザとなる。
initdb
-
■は無効にすることが推奨される。 無効にするには、--no-localeまたは--locale=Cを■に指定する。
ロケール
initdb
-
■と■はデータベース単位で設定できる。
ロケール
エンコーディング
-
データベース側で使える主な日本語エンコーディングは■。クライアント側では■である。
UTF8、EUC_JP
UTF8、EUC_JP、SJIS
-
PostgreSQLの起動は■、停止は■、再起動は■、ファイルの再読み込みは■、状態確認は■で行う。
pg_ctl start
pg_ct stop
pg_ctl restart
pg_ctl reload
pg_ctl status
-
pg_ctl は、PostgreSQLの管理ユーザが■からのみ実行できる。
ローカルのホスト
-
デフォルトでは、pg_ctl start およびstopは双方ともにPostgreSQLの起動/停止完了まで最大■間待する。
60秒
-
■は、すべての接続が切断されるまで待ってからPostgreSQLを停止する。
スマートシャットダウン(pg_ctl stop -m smart)
-
■は、すべての接続を強制的に切断してからPostgreSQLを停止する。
高速シャットダウン(pg_ctl stop -m fast)
-
■では、 PostgreSQLはクラッシュした場合と同じ状況になる。
即時シャットダウン(pg_ctl stop -m immediate)
-
pg_ctl stopのデフォルトのシャットダウンモードは、■である。
高速シャットダウン(pg_ctl stop -m fast)
-
データベースユーザは、■とは別物である。
OSユーザ
-
データベースユーザは、■で共通である。
データベースクラスタ全体
-
スーパーユーザには、■。
あらゆる操作が許されている
-
■は、■権限を持った初期ユーザを作成する。
initdb
スーパーユーザ
-
データベースユーザの作成は■。削除は■で行う。
createuser
dropuser
-
■と■は対話式でも実行できる。
createuser
dropuser
-
ユーザの作成/削除には、 ■もしくは■が必要である。
スーパーユーザ権限
ユーザの作成権限
-
データベースの作成は■。削除は■で行う。
createdb
dropdb
-
createdbには、■、■、■、■を指定できる。
テンプレートデータベース
ロケール
エンコーディング
所有者
-
データベースの作成には、■もしくは■が必要である。
スーパーユーザ権限
ユーザの作成権限
-
データベースの作成時にロケールやエンコーディングを変更するには、 ■をテンプレートに指定しなければならない。
template0
-
PL/PgSQLは■で登録されている。
デフォルト
-
■、■、■はpsqlで行う。
データベースへの接続
SQLの発行
結果の表示
-
■はフロントエンドであり、実際にSQLを処理するのは■である。
psql
PostgreSQL
-
■では、SQLは複数行に分けて入力でき、その終わりは■で判断される。
psql
セミコロン
-
接続先のデータベース名が未指定の場合、 psqlは■する。
接続に使うデータベースユーザと同名のデータベースに接続
-
バックスラッシュ(\)から始まるメタコマンドの大半は、■で実行される。
PostgreSQL側
-
データベースの一覧を表示するには■もしくは■を実行する。
psql -
メタコマンド\I
-
psqlを実行するOSユーザは、■である必要はない。
PostgreSQLの管理ユーザ
-
■でWALやタイムラインに関する制御情報を確認することができる。
pg_controldata
-
postgresql.confでは、■はコメントとして扱われる。
#から行末まで
-
論理値のパラメータに設定できるのは、 ■、■、■、■、■、■、■、■、■、■、■、■である。
on、off、true、false、yes、no、1、0、t、f、y、n
-
パラメータには■があるため、すべてを設定する必要はない。
デフォルト値
-
バラメータごとに設定の反映タイミングが異なる。(■、■、■、■)
起動
設定ファイルの再読み込み
スーパーユーザでSET文
一般ユーザでSET文
-
■、■、■を設定変更するには、PostgreSQLの再起動が必要である。
listen_addresses
port
max_connections
-
listen_addressesには■側のIPアドレスを設定する。
PostgreSQL
-
PostgreSQLのポート番号のデフォルト値は■である。
5432
-
サーバログの出力先には、■、■、■を設定できる。
stderr
csvlog
syslog
-
ログメッセージは、その深刻度から■、■、■などに分類されている。
PANIC
FATAL
LOG
-
サーバログにタイムスタンプとプロセスIDを出力するには、■に■を設定する。
log_line_prefix
%tと%p
-
SET文の書式は、SET ■である。
パラメータ名 TO 設定値
-
SET文による設定変更は、■に効果がある。
そのSET文を実行したセッションのみ
-
UNIX ドメイン接続を認証するには■、TCP/IP接続ならば■を■に設定する。
local
host
pg_hba.conf
-
キーワード■は、任意のデータベースやデータベースユーザを意味する。
all
-
認証方法■は常に接続を許可、■は接続を拒否、■や■は暗号化されたバスワードで認証、■は平文のパスワードで認証する。
trust
reject
md5やscram-sha-256
password
-
pg_hba.confは、■で設定変更を反映できる。
pg_ctl reload
-
pg_hba.confの複数行に一致する接続があった場合、認証に使われるのは、■である。
より先頭に記述されたもの
-
■/■コマンドは、 PostgreSQLの稼働中にバックアップを取得できる。
pg_dump
pg_dumpall
-
■コマンドは、データベースを指定したバックアップを取得できる。
pg_dump
-
■コマンドは、データベースクラスタ全体をバックアップする。
pg_dumpall
-
平文形式で取得したバックアップは、 ■コマンドでリストアする。
psql
-
平文以外の形式で取得したバックアップは、■コマンドでリストアする。
pg_restore
-
■によるバックアップ&リカバリでは、■にベースバックアップを取得し、■でロールフォワードのリカバリを実行する。
PITR
PostgreSQLの稼働中
PostgreSQLが停止した状態
-
サーバ側のファイルとデータベース間でデータをやりとりする場合は、 ■を使用する。
COPY文
-
クライアント側のファイルとデータベース間でデータをやりとりする場合は、■を使用する。
\copyコマンド
-
COPY文や\Copyコマンドでは、■できる。
CSV形式や区切り文字を指定
-
■を使用してベースバックアップを取得することができる。
非排他的低レベルバックアップ
-
■でデータベースユーザのパスワードや権限を変更できる。
ALTER USER
-
現在のユーザは■または■で確認できる。
SELECT current_user;
SELECT user;
-
現在接続しているデータベースのバージョンは■で確認できる。
SELECT version();
-
■は更新/削除で発生した不要領域を回収する。
VACUUM
-
■は統計情報を更新する。
ANALYZE
-
■でVACUUMとANALYZEをまとめて実行できる。
VACUUM ANALYZE
-
■はVACUUMとANALYZEを自動的に実行する。
自動バキューム(autovacuum)
-
■は標準規格で規定されている。
情報スキーマ
-
データベースに登録されているテーブルは■を参照して調べることができる。
information_schema.tables
-
PostgreSQL固有の情報は■に登録されている。
システムカタログ
-
ユーザに関する情報をシステムカタログで参照すると、パスワード欄は、pg_rolesでは■、pg_authidでは■表示となる。
******
md5やscram-sha-256
-
テーブル単位の権限設定は■と■を使用する。
GRANT文
REVOKE文
-
GRANT文では■/■/■などの権限をテーブルに設定できる。
SELECT/INSERT/UPDATE
-
REVOKE文では■ができる。
GRANT文で設定した権限を取り消すこと
-
■は、デフォルトでASCによる■の並び替えであり、DESCを付けることで■の並び替えとなる。
ORDER BY
昇順
降順
-
■は出力する件数、■は先頭から何件をスキップして出力するかをそれぞれ指定する。
LIMIT
OFFSET
-
■で集約した場合、 ■は除去される。
GROUP BY
重複行
-
■は、 ■で集約した結果に対して条件を適用できる。
HAVING
GROUP BY
-
副問い合わせは■で囲み、■を付与しなければならない。
()
別名(エイリアス)
-
■は結合するテーブルの直積であり、結果として得られる行数は■となる。
CROSS JOIN
結合対象のテーブル行数の積(N×M×・・・)
-
■は結合対象とならない左テーブルの行を、■は結合対象とならない右のテーブルの行を、 ■は結合対象とならない双方のテーブルの行をそれぞれ出力する。
LEFT OUTER JOIN
RIGHT OUTER JOIN
FULL OUTER JOIN
-
■は2つのSELECTの和となり、■は2つのSELECTの和から重複行を除去する。
UNION ALL
UNION
-
char(n)のnには文字数を指定し、nに満たない文字列の挿入時には■。
文字の右(後方)に半角空白が不足数分だけ埋め込まれる
-
論理値 (boolean) 型は■などを受け付けるが、■は受け付けない。
1'や'0'
数値の1や0
-
NULLの判別には■ではなく、■や■を使用する。
「=」
IS NULL
IS NOT NULL
-
■制約は NULL値と重複値を許可しないが、■制約はNULL値を許可する。
主キー
ユニーク
-
シーケンスの現在値は■、新規の値の払い出しは■、値のリセットなどは■をそれぞれ使う。
currval()
nextval()
setval()
-
■や■を行っても■が払い出した値は巻き戻らない。
ABORT
ROLLBACK
シーケンス
-
インデックスの作成にはデフォルトで使用される■の他、■、■、■といった種類が利用できる。
btree
gist、gin、hash
-
トリガは、■/■、■/■/■データ変更前後の発動契機がそれぞれ選択できる。
行/SQL文
UPDATE/INSERT/DELETE
-
テーブルのパーティショニングをサポートしており、■/■/■の形式を指定可能である。
LIST/RANGE/HASH
-
テーブルスペースを使い、■や■に配置可能である。
任意のテーブル
インデックスを異なるテーブルスペース
-
マテリアライズドビューは、通常のビューとは異なり■を持つ。
実体
-
PostgreSQLのレプリケーションには、■レプリケーションと■レプリケーションがある。
ストリーミング
ロジカル
-
■は対象のテーブルの行数をカウントするが、■は列名が■である行数をカウントしない。
count(*)
count(列名)
NULL値
-
■関数ともに、 引数とした列が■である行は無視する。
avg(), sum ()
NULL値
-
■は引数より小さい最大の整数値、■は引数より大きい最小の整数値をそれぞれ返す。
floor()
ceil
-
■は引数の小数部分を四捨五入し、■は小数部分を切り捨てる。
round()
trunc()
-
■は0以上1未満の乱数を返す。
random()
-
正規表現によるパターンマッチにおいて、■は大文字・小文字を区別するが、■は大文字・小文字を区別しない。
~演算子
~*演算子
-
■、■は、ともに引数の文字列の文字数を返す。
length()
char_length()
-
■、■が先頭に付く日付/時刻関数は■が付かない。
current、local
末尾に()
-
■はSQL開始時のタイムスタンプ、■は関数実施時のタイムスタンプ、それ以外の日付/時刻関数はトランザクション開始時の日付と時刻をそれぞれ返す。
statement_timestamp ()
clock_timestamp()
-
■、■は、タイムスタンプ値からそれぞれ指定したフィールドの部分を返す。
extract()、date_part()
-
■は、タイムスタンプ値から指定した精度の情報を返す。
date_trunc()
-
to_char() によるタイムスタンプの「西暦 月 日 時(12時間):分:秒」の形式への文字列変換フォーマットは■となる。
YYYY-MM-DD HH:MISS
-
to_char() による'9'を用いた桁数指定の数値からの文字列変換では、■。
桁数に満たない数値の先頭に半角の空白が不足桁数だけ埋め込まれる
-
PostgreSQLのデフォルトのトランザクション分離性(Isolation)は■である。
read committed
-
現在のセッションのトランザクション分離性は■で設定できる。
「SET default_transaction_isolation TO '分離レベル'」
-
トランザクションのトランザクション分離性は、■、もしくは■で設定できる。
「BEGIN ISOLATION LEVEL 分離レベル」
「SET transaction_isolation TO '分離レベル'」
-
■では他のトランザクションのコミットした結果が見え、■では他のトランザクションのいかなるコミット結果も見えない。
Read committed
Serializable
-
トランザクションの開始は■、もしくは■で行う。
BEGIN
START TRANSACTION
-
トランザクションのコミットは■、■で行う。
COMMIT END
END TRANSACTION
-
トランザクションのロールバックは■、もしくは■で行う。
ABORT
ROLLBACK
-
■を利用することで、トランザクションの■が可能になる。
SAVEPOINT
ROLLBACK(部分的な取り消し)
-
行に対するロックには共有ロックと排他ロックがあり、■同士は衝突しないが、■と■、 および■同士は衝突する。
共有ロック
共有ロックと排他ロック
排他ロック
-
■により、対象行の排他ロックを取得できる。
SELECT FOR UPDATE
-
■により、対象行の共有ロックを取得できる。
SELECT FOR SHARE
-
■をオプションなしで実施すると、■となり、ロックをかけたプロセス以外は参照もできない。
LOCK TABLE
ACCESS EXCLUSIVE MODE
-
■発生時は、■を検知したトランザクションが■される。
デッドロック
デッドロック
自動的にアボート
-