PostgreSQLにテーブルをつくる
前回データベースをつくったので今回はその中にテーブルをつくる。
目次
テーブル
リレーショナルデータベースのテーブルには列と行がある。
列のことをカラムやフィールドと呼んだり、行をレコードと呼んだりする。
このブログでは列をカラム、行をレコードと書く。
カラムには名前をつける。例えばボートレース(レガッタ)の結果を管理するカラムの概念は次のようになる。
カラムの概念の例
レースナンバー, 種目, 組別, 順位, クルー名, ゴールタイム, 備考
この各カラムにレース結果が入り、1件の集合となったものがレコード。
レコードの例
1, 男子エイト, 予選A組, 1, Aボートクラブ, 5:50.01, 準決勝進出
リレーショナルデータベースの概念についてはPostgreSQLのドキュメントに書かれている。
PostgreSQLドキュメント
https://www.postgresql.jp/document/10/html/tutorial-concepts.html
カラム定義
テーブルをつくるときにカラムに名前をつける。
またカラムごとに定義づけを行う。
定義の種類にはデータ型と制約がある。
データ型
データ型には数値や文字列などがある。
PostgreSQLドキュメントに詳細が載っている。
PostgreSQL データ型
https://www.postgresql.jp/document/10/html/datatype.html
制約
制約には必須項目かどうかや一意性かどうかなどがある。
制約はなくてもかまわない。
PostgreSQLドキュメントに詳細が載っている。
PostgreSQL 制約
https://www.postgresql.jp/document/10/html/ddl-constraints.html
テーブルをつくる
データベースに接続する
テーブルはデータベース内につくるので、データベースに接続している必要がある。
テーブルを操作するときはつねにデータベースに接続していることが前提。
今回は前回つくったtestデータベースに接続する。
まずはPostgreSQLサーバーを起動しておく。
起動方法はインストール時の記事を参照。
サーバー起動後、データベースに接続する。
接続するにはpsqlコマンドを使う。
Windows10版
psql -U postgres test
macOS10版
psql test
Uオプションの有無については前回の記事を参照。
接続すると次のような画面になる。
Windows10版
psql (10.3)
"help" でヘルプを表示します。test=#
macOS10版
psql (10.3)
Type "help" for help.test=#
データベース名=#
がデータベースとの接続状態をあらわす。
この状態になったらSQL文で操作をする。
SQL文についてはPostgreSQLドキュメントに詳細が載っている。
PostgreSQLドキュメント
https://www.postgresql.jp/document/10/html/index.html
テーブルをつくる
テーブルをつくるにはcreate table
を使う。
形式は次のとおり。
create table テーブル名 (カラム名 データ型 制約);
カラム名から制約までを1まとまりとして、カンマでつなぐことで同時に複数のカラムをつくることができる。
実際にtestsという名のテーブルをつくってみる。
テーブル名はデータベース名の複数形にするとRubyから扱うときに便利になるのでデータベース名 + sとする。
テーブルをつくるSQL文
(入力の際、見やすくするため改行を入れてもエラーにならない)
create table tests ( rank int, event varchar(20), crew text, goaltime text);
次のように返ってくれば作成は成功。
CREATE TABLE
コマンドの説明。
create table tests
- testsという名のテーブルをつくる
( rank int,
- カラム名rank
- データ型intは整数
- 以下カンマでつないで複数のカラムをつくる
event varchar(20),
- カラム名event
- データ型varchar(20)は20文字までの文字列
crew text,
- カラム名crew
- データ型textは文字数制限なしの文字列
goaltime text);
- カラム名goaltime
- データ型text
- 最後のセミコロンは必須
- 今回はどのカラムにも制約はつけていない
テーブルの確認
テーブル一覧を表示する
テーブルの一覧表示は\dt
をつかう。
\dt
実行すると次のように返ってくる。
Windows10版
macOS10版
テーブルの定義を確認する
テーブルの定義は\d テーブル名
で確認できる。
\d tests
返答
Windows10版
macOS10版
テーブルの削除
テーブルを削除するにはdrop table テーブル名;
をつかう。
試しにさきほどつくったtestsテーブルを削除する。
drop table tests;
次のように返ってくれば削除は成功。
DROP TABLE
削除されたかどうかテーブル一覧で確認してみる。
テーブルが1つもない状態で\dt
をつかうと次のように返ってくる。
Windows10版
リレーションが見つかりませんでした。
macOS10版
Did not find any relations.
データベースを切断する
データベースを切断するには\q
をつかう。
\q
これでデータベースと切断される。
作業が終わったらPostgreSQLサーバーを停止して終了。
次回はテーブルにデータを挿入します。
今回の動作確認環境
macOS 10.13.3
ターミナル 2.8.2
Windows10 1709
Windows PowerShell 5.1.16299.251
PostgreSQL 10.3