SQL

SQL(DDL)

More than 1 year has passed since last update.

DDLとは

Data Definition Language=データ定義言語と呼ばれ、
DBの箱に対して色々やる以下のような命令のこと。

  • create文
  • drop文
  • alter文
  • など

CREATE TABLE テーブル作成

CREATE TABLE テーブル名(
    カラム名 型 [制約],
    カラム名 型 [制約]
);

継承

CREATE TABLE oya ( ... );
CREATE TABLE ko ( ... ) INHERITS (oya);
  • 親テーブルのカラムをすべて継承する

DROP TABLE テーブル削除

DROP TABLE テーブル名;

ALTER TABLE 列の追加・削除など

列の追加

ALTER TABLE テーブル名 ADD COLUMN 列名 型 [制約];

列の削除

ALTER TABLE テーブル名 DROP COLUMN 列名;

制約の追加

ALTER TABLE テーブル名 ADD 制約;
ALTER TABLE テーブル名 ADD FOREIGN KEY (参照する側のカラム名) REFERENCES 参照されるテーブル名 (カラム名)

非NULL制約の追加は以下

ALTER TABLE テーブル名 ALTER COLUMN カラム名 SET NOT NULL;

制約の削除

ALTER TABLE テーブル名 DROP 制約 カラム名;

非NULL制約の削除は以下

ALTER TABLE テーブル名 ALTER COLUMN カラム名 DROP NOT NULL;

COPY ファイルとテーブルの間でコピー

COPY テーブル名 TO ファイル [WITH オプション]
COPY テーブル名 FROM ファイル [WITH オプション]
  • WITH CSV:ファイルの形式を指定。他に、text(デフォ)、binary

ビュー

  • select文の結果を、通常のテーブルのように扱えるもの
  • ビューを直接更新はできない
  • 実テーブルが更新されれば、ビューも変わる

ビュー作成

CREATE VIEW ビュー名 AS クエリー

ビュー削除

DROP VIEW ビュー名

スキーマ

  • スキーマとは、一般的な説明としては構造を意味する。例えると、名前空間、ディレクトリ、のようなもの
  • DBは1つ以上の名前付きスキーマを持ち、テーブルは必ず1つのスキーマの中にある(DB→スキーマ→テーブル)
  • テーブルは、デフォルトで「public」というスキーマに入れられる

スキーマの作成

CREATE SCHEMA スキーマ名;
  • 利用時は、スキーマ名.テーブル名

スキーマの削除

DROP SCHEMA スキーマ名;

パーティショニング

  • パーティショニングとは、データを複数に分割して格納すること
  • これにより、性能やメンテンナンス性が向上する
  • テーブルを分割したり、DBを複数のノードに分割できる(クラスタ構成)
  • テーブル分割しても、アプリからは1つのテーブルとして扱える仕組みがある

パーティショニング実装方法

  • 分割元となる親テーブルを作る
  • 親テーブルを継承した子テーブルを作り、必要な制約(check等)をつける
  • この子テーブルがパーティションとなる
  • パーティションごとにインデックスを作っておく
  • 親テーブルへのトリガーを作成し、その中で子テーブルにアクセスする関数を呼ぶ