スタートページWeb教材一覧データベース

データベース言語(SQL)の体系 DDL/DML/DCL

学習のポイント

データベース管理システムの体系-データベース言語の種類-をSQLをベースに理解します。

キーワード

データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)


SQLの命令(文)は、次の3つに大別できます。

データ定義言語(DDL:Data Definition Language)
データベースのデータ構造を定義する言語
CREATE(表の創成、定義)、DROP(表の削除)など
データ操作言語(DML:Data Manipulation Language)
既存表からのデータ検索・追加・更新・削除を行うための言語
SELECT(検索)、INSERT(追加)、UPDATE(更新)、DELETE(削除)など
データ制御言語(DCL:Data Control Language)
データベースへのアクセス制御に関する言語
GRANT(アクセス権付与)やREVOKE(権限破棄)など

データ定義言語

CREATE文:新表の創成・定義
基本形 CREATE TABLE 新表名
      列名1 データ型, 列名2 データ型. …;
DROP文:表の削除
基本形 DROP TABLE 表名;
ALTER文:列の追加・削除
基本形 ALETR TABLE 表名 ADD 新列名 データ型;

制約

CREATE TABLEにおいて、例えば、販売個数が上下限値の範囲であるとか、売上表の商品コードは商品表の商品コードが存在しなければならないなどの制約を記述することにより、誤った操作を防止することができます。それを制約といいます。

列制約と表制約
制約には、
 ・列制約;列の項目のみに適用される制約  ・表制約:列のグループに適用される制約(複合キーなど) があります。
 CREATE TABLE 文では、列定義のデータ型の後ろに列制約を追加し、最後にカンマを付けます。表制約は、テーブル定義の最後の列定義の後ろに配置し、最後に閉じカッコをつけます。
   CREATE TABLE テーブル名
   (
     列名 データ型 列制約,
     列名 データ型 列制約,
     表制約
   );
検査制約(CHECK)
売上表で個数は整数で10個以下でなければならないというような定義です。
   CREATE TABLE 売上表
   (
    商品 ・・・.
    個数 INTEGER CHECK(個数<=10),
    ・・・,
   );
非Null制約(NOT NULL)
検査制約の特殊ケースで、項目が非Nul(必ず何らかの値を持つ)である制約です。非定義項目があるデータを挿入するのを防ぐのに用います。これには表制約はありません。
   CREATE TABLE 売上表
   (
    商品 CHAR NOT NULL,
    個数 INTEGER NOT NULL,
    ・・・,
   );
一意性制約(UNIQUE)
表の中で同じ値を持つことがない項目です。商品表において、商品コード以外にも商品名など重複がない項目があります。
   CREATE TABLE 商品表
   (
    ・・・,
    商品名 CHAR UNIQUE,
    ・・・,
   );
主キー制約(PRIMARY KEY)
主キーは、非Null制約と一意性制約を満足する必要があります。
単一キー(列制約):商品表において、商品コードが主キーであることを定義します。
   CREATE TABLE 商品表
   (
    ・・・,
    商品 CHAR PRIMARY KEY,
    ・・・,
   );
複合キー(表制約):売上表において、商品と得意先の複合キーが主キーであることを定義します。
   CREATE TABLE 商品表
   (
    商品・・・,
    得意先・・・,
    ・・・,
    PRIMARY KEY(商品, 得意先)
   );
外部キー制約(FOREIGN KEY)参照制約
売上表において、商品が外部キーであり、その商品は商品表に存在するものに限る(これを参照制約といいます)ことを定義します。
   CREATE TABLE 売上表
   (
     商品・・・,
     ・・・
     FOREIGN KEY(商品) REFFERENCES 商品表(商品)
   );
ASSERTIONと表明
CHECKと同様な入力値チェックですが、CREATE TABLE文に記述するのではなく、独立した文として定義します。そのことを表明といいます。
   CREATE ASSERTION チェック名 CHECK(チェックの内容。SELECT文のような形式);

データ操作言語

SELECT文:既存の表からの検索
基本形 SELECT 列名1,列名2,・・・
     FROM 表1,表2,・・・
     WHERE 条件1 AND 条件2 …;
     INTO 新表名
参照:「SELECT文の演習」
INSERT文:新行の挿入
基本形 INSERT INTO 表名
     VALUES (列名1の値, 列名2の値, …);
DELETE文:条件に合致した行を削除
基本形 DELETE FROM 表名
     WHERE …;
UPDATE文:指定した列の値の変更
基本形 UPDATE 表名
     SET 列名1=値の式1、列名1=値の式1、・・・
     WHERE …;

データ制御言語

GRANT文:アクセス権限の付与
基本形 GRANT 権限名 ON 表名
     TO { ユーザ名 | PUBLIC };
   (PUBLIC を指定すると全ユーザが対象)
REVOKE文:アクセス権限の取消
基本形 REVOKE 権限名 ON 表名
     FROM { ユーザ名 | PUBLIC };