応用情報|SQLってどう書くの?PRIMARY KEY、UNIQUEなどDDLの基礎知識!①

※アフィリエイト広告を利用しています。
※アフィリエイト広告を利用しています。
テクノロジ系

「データ定義ってどういうこと?」

「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の指定などもできます。

まとめ

今回は表の定義、制約、データ型についてまとめていきました。これで表の定義については完璧です!次回はビューの定義や処理権限などについて記事に書きたいと思いますので、ぜひ勉強にお役立てください。

コメント

タイトルとURLをコピーしました