今回はテーブル設計について解説します。
テーブルの操作
- CREATE TABLE ← テーブルの作成
- DROP TABLE ← テーブルの削除
- ALTER TABLE ← テーブルの変更
情報スキーマ
情報スキーマにはデータベースクラスタに関する情報が格納されています。
スキーマのことを「名前空間」と呼ぶこともあります。
システムカタログ
システムカタログにはデータベース管理に関する情報が格納されています。
各種制約
テーブルを作成するに当たり、以下のように各種制約を設定することができます。
- 主キー(プライマリーキー)制約
- ユニーク制約
- NOT NULL 制約
- 外部キー制約
- チェック制約
主キー制約
主キー制約とは特定のカラムに「重複する値」や「NULL値」を格納できないようにする制約を言います。
一意の値を設定したい場合に使用します。
そのため、重複する値や NULL 値は設定できません。
更に自動的にインデックスが作成されます。
主キー制約は「CREATE TABLE」や「ALTER TABLE」で設定します。
拡張表示を「on」にします。
※拡張表示(Expanded display)を「on」にすると横長ではなく縦長で表示できます。
|
postgres=# \x
Expanded display is on.
postgres=#
|
現在のデータベースを確認します。
「testdb」を利用します。
|
postgres=# \l
List of databases
-[ RECORD 1 ]—–+———————-
Name | postgres
Owner | postgres
Encoding | UTF8
Collate | en_US.UTF-8
Ctype | en_US.UTF-8
Access privileges |
-[ RECORD 2 ]—–+———————-
Name | template0
Owner | postgres
Encoding | UTF8
Collate | en_US.UTF-8
Ctype | en_US.UTF-8
Access privileges | =c/postgres
| postgres=CTc/postgres
-[ RECORD 3 ]—–+———————-
Name | template1
Owner | postgres
Encoding | UTF8
Collate | en_US.UTF-8
Ctype | en_US.UTF-8
Access privileges | =c/postgres
| postgres=CTc/postgres
-[ RECORD 4 ]—–+———————-
Name | testdb
Owner | postgres
Encoding | UTF8
Collate | en_US.UTF-8
Ctype | en_US.UTF-8
Access privileges |
postgres=#
|
testdb にアクセスします。
|
postgres=# \c testdb
You are now connected to database “testdb” as user “postgres”.
testdb=#
|
主キー制約を設定したテーブル(testtable01)を作成します。
|
testdb=# CREATE TABLE testtable01(
testdb(# no INTEGER PRIMARY KEY,
testdb(# name VARCHAR
testdb(# );
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index “testtable01_pkey” for table “testtable01”
CREATE TABLE
testdb=#
|
テーブル構造を確認します。
|
testdb=# \d testtable01
Table “public.testtable01”
Column | Type | Modifiers
——–+——————-+———–
no | integer | not null
name | character varying |
Indexes:
“testtable01_pkey” PRIMARY KEY, btree (no)
testdb=#
|
自動的にインデックスが作成されていることが分かります。
主キーの追加(ALTER TABLE)
ALTER TABLE で主キーを追加することができます。
|
ALTER TABLE testtable02 ADD PRIMARY KEY(カラム名);
|
PostgreSQL シリーズ
今まで学習した PostgreSQL の技術をシリーズとしてまとめました。
【PostgreSQL】PostgreSQL の特徴と基本【Part.1】
AWSインフラ研究所
https://go-journey.club/archives/10050
AWSを中心としたクラウドインフラ技術サイト
【PostgreSQL】【正規化】リレーショナルデータベース(RDMS)の基本【Part.2】
AWSインフラ研究所
https://go-journey.club/archives/10052
AWSを中心としたクラウドインフラ技術サイト
【PostgreSQL】PostgreSQL のインストールと初期設定【Part.3】
AWSインフラ研究所
https://go-journey.club/archives/10054
AWSを中心としたクラウドインフラ技術サイト
【PostgreSQL】PostgreSQL の標準付属ツールの説明とコマンド手順【Part.4】
AWSインフラ研究所
https://go-journey.club/archives/10056
AWSを中心としたクラウドインフラ技術サイト
【PostgreSQL】PostgreSQL の設定ファイル(postgresql.conf、pg_hba.conf)の解説【Part.5】
AWSインフラ研究所
https://go-journey.club/archives/10058
AWSを中心としたクラウドインフラ技術サイト
【PostgreSQL】PostgreSQL のバックアップ手順とリストア手順【Part.6】
AWSインフラ研究所
https://go-journey.club/archives/10060
AWSを中心としたクラウドインフラ技術サイト
【PostgreSQL】PostgreSQL の運用管理(ユーザー管理、バキューム)【Part.7】
AWSインフラ研究所
https://go-journey.club/archives/10062
AWSを中心としたクラウドインフラ技術サイト
【PostgreSQL】PostgreSQL の基本的な SQL文 とオブジェクトについて【Part.8】
AWSインフラ研究所
https://go-journey.club/archives/10064
AWSを中心としたクラウドインフラ技術サイト
【PostgreSQL】PostgreSQL の組み込み関数、ユーザー定義関数、演算子について【Part.9】
AWSインフラ研究所
https://go-journey.club/archives/10066
AWSを中心としたクラウドインフラ技術サイト
【PostgreSQL】PostgreSQL のトランザクションについて【Part.10】
AWSインフラ研究所
https://go-journey.club/archives/10068
AWSを中心としたクラウドインフラ技術サイト
【PostgreSQL】SQL文【Part.11】
AWSインフラ研究所
https://go-journey.club/archives/10082
AWSを中心としたクラウドインフラ技術サイト
【PostgreSQL】テーブル設計(データ型、制約)【Part.12】
AWSインフラ研究所
https://go-journey.club/archives/10090
AWSを中心としたクラウドインフラ技術サイト
コメント