スタートページ>
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 };