茨の道も一歩から

インフラ構築からプログラミング(Python・JavaScript)までITに関するブログです。

データベース:データ定義言語(DDL:Data Definition Language)

■ データ定義言語(DDL:Data Definition Language)

  • テーブルやビューを定義する言語である。またデータ型や制約を定義する。

テーブルの作成

  • テーブルの作成には、CREATE TABLE文を使用する。

CREATE TABLE文の基本構文

CREATE TABLE テーブル名 (
    列名1 データ型 列制約,
    列名2 データ型 列制約,
    …
  表制約
)

◇データ型

分類 データ型(説明)
文字列型 CHAR(固定長), NCHAR(可変長), VARCHAR(可変長)
数値型 NUMBER, INT(整数), NUMERIC(固定小数点数)
日付時刻型 DATE(日付時刻)

◇制約

【列制約】

  • NOT NULL:NULL値を許可しないという制約である。
  • DEFAULT:値を明示せずに行を追加する場合に、設定する値を指定する。

【表制約】

  • CHECK:設定可能な値の範囲などを指定する。
  • FOREIGN KEY:外部キー制約を定義する。
    • 参照先のデータ更新・削除時のアクションを指定できる。

【列・表制約】

  • UNIQUE:一意性制約を定義する。
    • NULL値は複数行存在しても可。
  • PRIMARY KEY:主キー制約を定義する。
    • 一意性制約と、NULL値を許可しない制約である。

◇アクション

アクション 説明
CASCADE 連鎖して、更新・削除する。
SET NULL NULL値をセットする。
SET DEFAULT デフォルト値をセットする。
NO ACTION 連鎖して、更新・削除しない。

CREATE TABLE文の例文

CREATE TABLE 社員 (
    社員コード CHAR(5) PRIMARY KEY,
    氏名 NCHAR(20) NOT NULL,
    年齢 INT,
    所属コード CHAR(2),
  FOREIGN KEY (所属コード)
  REFERENCES (部課) ON DELETE NO ACTION ON UPDATE CASCADE,
  CHECK (年齢 <= 65)
)
  • 社員コード:5桁固定長で、一意性制約がありNULL値不可。
  • 氏名:全角10文字までの可変長で、NULL値不可。
  • 年齢:整数値で、表制約により65歳以下に制限。
  • 所属コード:2桁の固定長で、部課テーブルを参照先とする外部キー制約。
  • 部課テーブルで、所属コードが更新されると社員テーブルの該当行も同時に更新される。
  • また、部課テーブルでデータ削除時は社員テーブルに影響しない。

ビューの作成

  • ビューの作成には、CREATE VIEW文を使用する。

CREATE VIEW文の基本構文

CREATE VIEW ビュー名 (列名1, 列名2, …)AS SELECT

◇ビューの更新可能条件

  • 以下が使用されているビューは更新・追加・削除の操作が出来ない。
    • DISTINCT
    • GROUP BY
    • FROM句に2つ以上のテーブルを指定(結合)
    • 集合関数
    • 相関副問合せ

【試験対策】

  • データ型の分類を理解する。詳細まで理解する必要はない。
  • 各制約の意味とその使用法を理解する。
  • 外部キー制約は、参照先テーブルの更新・削除時のアクションについても理解する。
  • ビューの更新可能条件について理解する。

目次へ戻る