「データ定義ってどういうこと?」
「PRIMARY KEYとかUNIQUEとか、制約ってよくわからない!」
そんな悩みを解決できる記事となっています!
もしまだ読んでいない方は、こちらもぜひお読みください!
データ定義言語の基礎知識① 実表の定義
「CREATE TABLE」文を使用することで、表を定義することができます。
定義というと感覚がつかみづらいですが、「表の設定を決めて、作成する」ようなものだと思ってください。
データ定義言語の基礎知識② 列制約
列制約は、実表を定義する際、列ごとに設定を決めることです。
例えば、「ここの値は重複しちゃダメ!」とか「ここの値は1から5までしか入れちゃダメ!」という決めごとをできます。
PRIMARY KEY
「PRIMAEY KEY」は、主キーの指定ができます。
UNIQUE制約とNOT NULL制約を兼ねる役割です。
UNIQUE
「UNIQUE」は、一意性制約と言い、値の重複を認めないという設定ができます。
出席番号や社員番号など、一意性を持たせたいもので、主キーではないものに使用します。
FOREIGN KEY
「FOREIGN KEY」は外部キーの指定ができます。
外部キーとして使う、作成したい実表の列の名前を指定します。
REFERENCES
「REFERENCES」は外部キーの指定ができ、参照制約とも言います。
参照される側の表と、参照する列を決められます。参照される列を省略すると、主キーを参照することになります。
CHECK
「CHECK」は、値の範囲を設定でき、検査制約とも言います。
例えば、テストの点数の範囲を0から100点に指定したりできます。
NOT NULL
「NOT NULL」は、空値(NULL)を認めない設定をでき、非NULL制約とも言います。
DEFAULT
「DEFAULT」は、行の挿入時、値が指定されない場合に入れる既定値を設定できます。
SQLの記事③で出てきた「INSERT」を用いる際に関わってくる設定です。
データ定義言語の基礎知識③ 表制約
列制約で述べた「PRIMAEY KEY」、「UNIQUE」、「FOREIGN KEY」は、表制約としても用いることができます。
例えば、列制約は1つの列にのみ使えるものなので、主キーや外部キーが2つ以上ある場合は使えません。そういったときに使用できるのが、表制約です。
データ定義言語の基礎知識④ データ型
その列が数値なのか、文字列なのか、のような指定をする際に用いるのが「データ型」です。
- CHAEACTER(n) → nバイトの固定長の文字列。短縮型はCHAR。
- CHARACTER VARYING(n) → 最大nバイトの可変長文字列。短縮型はVARCHAR。
- INTEGER → 整数値。短縮型はINT。
- NUMERIC(m[,n]) → 固定小数点数。mは全体の桁数、nは小数部の桁数。
- BIT(n) → nビットの固定長ビット列。
- BIT VARYING → 最大nビットの可変長ビット列。短縮型はVARBIT。
- BLOB(x) → 大きなのビット列。大きさxは、k、M、Gを用いて指定する。
実表の定義をするとこんな感じ
以上の知識を用いて実表を実際に定義すると、下記のような形になります。
CREATE TABLE 学生表
(学生番号 INTEGER,
氏名 VARCHAR(20),
部活番号 INTEGER DEFAULT 0,
平均点数 INTEGER CHECK (平均点数 BETWEEN 0 AND 100)
PRIMARY KEY(学生番号)
FOREIGN KEY(部活番号) REFERENCES 部活表(部活番号) ON DELETE CASCADE)
| 学生番号 | 氏名 | 部活番号 | 平均点数 |
| 整数型、 主キー(UNIQUE,NOT NULL) | 可変長文字列 | 外部キー、CADCADE、 既定値は0 | 整数型、 範囲は0から100まで |
| 部活番号 | 部活名 |
| 0 | 所属なし |
| 1 | 陸上部 |
| 2 | バスケットボール部 |
| 3 | テニス部 |
| 4 | 吹奏楽部 |
「部活表」はすでに作成されているものとして書いています。また、「FOREIGN KEY」にあるように、SQLの記事にまとめた参照動作、CASCADEの指定などもできます。
まとめ
今回は表の定義、制約、データ型についてまとめていきました。これで表の定義については完璧です!次回はビューの定義や処理権限などについて記事に書きたいと思いますので、ぜひ勉強にお役立てください。


コメント