PostgreSQL(ポストグレスキューエル)とは?
1980年にカリフォルニア大学を中心に開発されたMySQLと並んで世界中で人気があるオープンソースのデータベースシステムです。
特徴
SQLが、標準SQLへの準拠を強く意識した設計になっているので、最初に学ぶDBとしては最高といえるでしょう。
バージョン
バージョン | リリース日 | 説明 |
---|---|---|
6.0 | 1997年1月 | UNIQUEインデックス、IN句、BETWEEN句 |
6.1 | 1997年6月 | GEQOオプティマイザ、GROUP BY、TIMESTAMP型、TIME型、DATE型、SETコマンド、SHOWコマンド、RESETコマンド |
6.2 | 1997年10月 | JDBC、TRIGGER、TIMEZONE型、INTERVAL型、FLOAT型、DECIMAL型、NOT NULL |
6.3 | 1998年3月 | サブクエリ、マルチバイト |
6.4 | 1998年10月 | PL/pgSQL |
6.5 | 1999年6月 | MVCC、ホットバックアップ、一時テーブル、行ロック |
7.0 | 2000年5月 | 外部キー |
7.1 | 2001年4月 | WAL、TOAST、外部結合 |
7.2 | 2002年2月 | 統計情報、並行VACUUM |
7.3 | 2002年11月 | スキーマ、国際化対応、フロントエンド、バックエンドプロトコルV3対応 |
7.4 | 2003年11月 | 問い合わせ性能の向上、インフォメーションスキーマ |
8.0 | 2005年1月 | Windows対応、PITR、テーブルスペース、セーブポイント |
8.1 | 2005年11月 | 2相コミット、ロール、自動VACUUM、ビットマップスキャン |
8.2 | 2006年12月 | インデックスの同時作成、FILLFACTOR、INSERT、UPDATE、DELETE RETURNNING |
8.3 | 2008年2月 | 全文検索(tsearch2)、HOT、負荷分散チェックポイント、非同期コミット、SQL/XML |
8.4 | 2009年7月 | ウインドウ関数、共通テーブル式/再帰問い合わせ、並列リストア、VACUUMの改善 |
9.0 | 2010年9月 | 本体組み込みのレプリケーション、アクセス権限設定の拡張、DO文による関数のインライン実行、64bitWindowsへの対応 |
9.1 | 2011年9月 | 同期レプリケーション、外部テーブル、拡張モジュールのパッケージ化、真のシリアライザブルの隔離レベル、UNLOGGEDテーブル、WITH句によるデータ変更、GISTインデックスの近似検索、sepgsql |
9.2 | 2012年9月 | Index-only scan、並列実行処理性能向上、カスケードレプリケーション、JSONデータ型、範囲データ型、DDL命令改善 |
9.3 | 2013年9月 | postgres_fdw、マテリアライズドビュー、LATERAL結合、JSONデータ型の機能拡充 |
9.4 | 2014年12月 | |
9.5 | 2016年1月 | |
9.6 | 2016年9月 | |
10.0 | 2017年10月 | |
11.0 | 2018年10月 |
データベースとは?
PostgreSQLが管理するデータを実際に記録するための領域です。これをデータベースクラスタと呼んでいます。
データベース名 | 説明 | 備考 |
---|---|---|
template0 | グローバルデータ(ユーザー情報など) | 書き込みができないため常に最初の状態が保たれます。template1の最初の状態になります。今後新しく作成するDBをまっさらな状態で作りたい場合はこちらを使います。 |
template1 | システムが使う領域 | 文字通りユーザーがDBを作成しようとするとテンプレートとして使われます。今後作成するDBに共通のテーブルなど作っておきたい場合は事前に作成しておくと良いです。 |
postgres | デフォルトの接続先のデータベースです。 | |
ユーザーが作成したデータベース |
データベースへのログイン
データベースを指定してログイン
1 |
psql postgres(DB名) postgres(ユーザー名) |
ホストを指定してログイン
1 |
psql -h localhost(ホスト名) -U postgres(ユーザー名) |
データベース一覧の表示
1 |
\l |
事前にログインしておく必要があります。
データベース接続終了
1 |
\q |
スキーマとは?
データベースの中に存在する名前空間です。テーブルなどはスキーマの下に配置されます。通常はスキーマを意識せずにデータベースは利用できます。スキーマには優先度があります。
スキーマの用途
データベースは一つしかないが、利用できるテーブルをユーザーごとに別々にしたいといった場合に使えます。スキーマのサーチパスを修正すればアプリケーションのSQL文を変更せずにアクセス先のテーブルを変更できます。
ただ、実務ではあまり使う機会はないといっても良いでしょう。DB自体を分けてしまう形にしていることが多いでしょう。ただ、データベースにはこういう概念があるということだけ押さえておくと良いでしょう。
デフォルトで存在するスキーマ
スキーマ名 | 説明 |
---|---|
information_schema | インフォメーションスキーマ |
pg_catalog | システムカタログ |
pg_toast | TOAST |
pg_toast_temp_1 | TOAST用の一時スキーマ |
pg_temp_1 | 一時テーブル用スキーマ |
public | 通常利用可能なスキーマ |
コマンド
スキーマを生成するコマンド
1 |
CREATE SCHAME スキーマ名; |
スキーマを削除するコマンド
1 |
DROP SCHAME スキーマ名; |
現在優先させるスキーマを表示するコマンド
1 |
select current_schema(); |
優先させるスキーマ順(サーチパス)を確認するコマンド
1 |
SHOW search_path; |
「"$user", public」と表示された場合は、ユーザー名と同じスキーマが優先されてその次にpublicスキーマが優先されることになります。
この記事へのコメントはありません。