PostgreSQLでデータベース作成などをするDDLの基本

2 min読了の目安(約2200字TECH技術記事

はじめに

DDL(Data Definition Language)とは、データ定義言語と呼ばれ、データベースやテーブルなどを作成、削除などを行うSQL文です。

この記事はPostgreSQLでデータベース作成などDDLについてのまとめを備忘録として残すことを目的に書きます。

この記事が他の人の参考になれば幸いです。
また、この記事の内容に間違った記載がありましたら、指摘していただけるとありがたいです。

環境

2020年10月30日時点。

名前 バージョン
macOS Catalina 10.15.7
PostgreSQL 12.4

CREATE 文でデータベース、テーブルの作成

CREATE DATABASEでデータベースを、CREATE TABLEでテーブルを新しく作成します。
データベースの作成は空のデータベースを作成するだけなので単純ですが、テーブルはカラム名、カラムのデータ型、カラムの制約、テーブルの制約を作成しないといけません。
また、データベース名やテーブル名に使えるのはアルファベット、数字、_ (アンダーバー)だけであり、数字から始めることはできません。

PostgreSQLの利用できるカラムのデータ型はPostgreSQL 12.3 文書 第 8 章 データ型で確認できます。

制約はPostgreSQL 12.3 文書 5.4 制約で確認できます。

データベースの作成

psql
=# CREATE DATABASE <データベース名>;

-- 例
=# CREATE DATABASE theater;
CREATE DATABASE

テーブルの作成

psql
=# CREATE TABLE <テーブル名>
(<カラム名> <データ型> <カラムの制約>,
<カラム名> <データ型> <カラムの制約>,
...
<テーブルの制約>,
<テーブルの制約>,
...
);

-- 例
=# CREATE TABLE movies
(movie_id INTEGER NOT NULL,
title CHAR(50) NOT NULL,
synopsis VARCHAR(200) NOT NULL,
release_date DATE,
last_date DATE,
PRIMARY KEY (movie_id)
);
CREATE TABLE

DROP 文でデータベース、テーブルの削除

DROP DATABASEでデータベースを、DROP TABLEでテーブルを削除します。
簡単に削除できてしまうので十分に注意して実行しなければなりません。

データベースの削除

psql
=# DROP DATABASE <データベース名>;

-- 例
=# DROP DATABASE theater_db;

テーブルの削除

psql
=# DROP TABLE <テーブル名>;

-- 例
=# DROP TABLE movies;

ALTER 文でテーブル定義の変更

ALTER TABLE 文で後からカラムを追加したり、削除することができます。
また、テーブル名を変更することもできます。

テーブルにカラムを追加

psql
=# ALTER TABLE <テーブル名> ADD COLUMN <カラム名> <データ型> <カラムの制約>;

-- 例
=# ALTER TABLE movies ADD COLUMN sub_title VARCHAR(50) NOT NULL;

テーブルのカラムを削除

psql
=# ALTER TABLE <テーブル名> DROP COLUMN <カラム名>;

-- 例
=# ALTER TABLE movies DROP COLUMN sub_title;

テーブル名の変更

psql
=# ALTER TABLE <元のテーブル名> RENAME TO <新しいテーブル名>;

=# ALTER TABLE movies RENAME TO movie;

参考