データベース:データ定義言語(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つ以上のテーブルを指定(結合)
- 集合関数
- 相関副問合せ
【試験対策】
- データ型の分類を理解する。詳細まで理解する必要はない。
- 各制約の意味とその使用法を理解する。
- 外部キー制約は、参照先テーブルの更新・削除時のアクションについても理解する。
- ビューの更新可能条件について理解する。