psqlの開始・終了
データベースの一覧表示
ターミナル
psql -h ホスト名 -U ユーザー名 -l
psqlの開始
ターミナル
psql -d データベース名
データベース内の全テーブルの表示
psql
\dt
psqlの終了
psql
\q
テーブルの作成・削除
テーブルの作成
CREATE TABLE テーブル名
(
列名1 データ型1,
列名2 データ型2
);
デフォルト値(初期値)
CREATE TABLE テーブル名
(
列名1 データ型1 DEFAULT デフォルト値,
列名2 データ型2
);
検査制約
CREATE TABLE テーブル名
(
列名1 データ型1 CHECK (式),
列名2 データ型2
);
例:価格を必ず正の数にする
price numeric CHECK (price > 0)
非NULL制約
CREATE TABLE テーブル名
(
列名1 データ型1 NOT NULL,
列名2 データ型2
);
一意性制約
CREATE TABLE テーブル名
(
列名1 データ型1 UNIQUE,
列名2 データ型2
);
プライマリキー(主キー)
CREATE TABLE テーブル名
(
列名1 データ型1 PRIMARY KEY,
列名2 データ型2
);
プライマリキーに複数列を指定する場合
列名1 データ型1,
列名2 データ型2,
PRIMARY KEY (列名1, 列名2)
外部キー
CREATE TABLE テーブル名
(
列名1 データ型1,
列名2 データ型2 REFERENCES 参照先テーブル名 (参照先列名)
);
レコード削除の制限およびカスケード
- 削除の制限:子テーブルから参照されている自レコードは、削除されない
- カスケード:親テーブルにある参照先レコードが削除されたら、自レコードも削除する
CREATE TABLE テーブル名
(
列名1 データ型1 REFERENCES 子テーブル名 ON DELETE RESTRICT,
列名2 データ型2 REFERENCES 親テーブル名 ON DELETE CASCADE
PRIMARY KEY (列名1, 列名2)
);
テーブルの削除
DROP TABLE テーブル名;
テーブルの変更
テーブル名の変更
ALTER TABLE 変更前のテーブル名 RENAME TO 変更後のテーブル名;
列の追加
ALTER TABLE テーブル名 ADD COLUMN 列名 データ型;
デフォルト値の追加
ALTER TABLE テーブル名 ALTER COLUMN 列名 SET DEFAULT デフォルト値;
検査制約の追加
ALTER TABLE テーブル名 ADD CHECK (式);
外部キー制約の追加
ALTER TABLE テーブル名
ADD FOREIGN KEY (外部キーを付けるテーブルの列名) REFERENCES 参照先テーブル名 (参照先列名);
列のデータ型の変更
ALTER TABLE テーブル名 ALTER COLUMN 列名 TYPE 変更後のデータ型;
列の削除
ALTER TABLE テーブル名 DROP COLUMN 列名;
インデックスの作成
CREATE INDEX インデックス名 ON テーブル名 (列名1 ,列名2);
インデックスの削除
DROP INDEX インデックス名;
データの操作
データの参照
SELECT 列名1, 列名2 FROM テーブル名;
データの挿入
INSERT INTO テーブル名 (列名1 ,列名2) VALUES (値1 ,値2), (値1 ,値2);
データの更新
UPDATE テーブル名 SET 列名1 = 値1, 列名2 = 値2, WHERE 条件;
データの削除
DELETE FROM テーブル名 WHERE 条件;