SQL入門 第2回 テーブルについて

前回は「データベースとは」というテーマでデータベースについての概要について触れました。

SQL入門 第1回 データベースとは

今回は、RDBにおいてある意味最も重要な要素である「テーブル」について説明する回になります。

テーブルについて

テーブルとは

テーブルとは「同じ構造のデータを1つにまとめた表」のことです。
こんなのです⇩

前回の「データベースとは」で出てきたエンティティという概念は、DB上で「テーブル」として実体化・作成されます。

前回説明したER図を用いると、この「生徒」「教科」「テスト得点」のエンティティそれぞれが、DB上ではテーブルとして存在することになります。

テーブルに関する名称

●テーブルの見出し部分のことを「カラム」または「」よ呼びます。この例のテーブルは「出席番号、姓、名、クラス」の4列(4カラム)を持つ構造になっています。

●そして、テーブルの本体、つまりデータの部分のことを「」または「レコード」と呼びます。この例のテーブルは現在5行のレコードを保持しています。

テーブル周りに関する名称

テーブルはデータベースの中に作られますが、そのデータベースは「インスタンス」と呼ばれるDBやファイルを管理するメモリ構造の中に作成されます。

テーブルの作成

ここからはいよいよSQLを使ってテーブルを作成する方法について説明していきます。

SQLとは・・・

リレーショナルデータベースの操作を行うための言語の1つ

SQLは大きく3種類に分けられます

SQLの種類説明
DCL:Data Control Language
(データ制御言語)
テーブルやデータの操作以外で、SQLの実行に関する権限やトランザクションの操作の際に使用するGRANT
REVOKE
COMMIT
ROLLBACK
DDL:Data Definition Language
(データ定義言語)
ベータベースやテーブルなど、DBオブジェクトを作成・変更・削除する際に使用するCREATE
ALTER
DROP
DML: Data Manipulation Language
(データ操作言語)
テーブルに対して、データを検索・挿入・変更・削除する際に使用するSELECT
INSERT
UPDATE
DELETE

なので、テーブルを作成するSQLは「DDL(データ定義言語)」の1つになります。

テーブルを作成する

テーブルを作成するには、CREATE文を使います。以下、CREATE文の構文です。

CREATE TABLE テーブル名
(
    列名1 データ型,
    列名2 データ型,
    ・・・
) 

以下、生徒テーブルを作成するSQLの例です。

CREATE TABLE 生徒
(
    出席番号 INT,
    姓 VARCHAR(20),
    名 VARCHAR(20),
    クラス  VARCHAR(20)
)

このようにして、テーブル名と列名・データ型のセットを記述してテーブルを作成します。

※SQLの書き方はRDBMSの種類によって若干異なるのですが、大枠の書き方は変わりません。今回はどのRDBMSなのかを意識しない範囲で説明を続けます。

データ型には決まった型を指定します。
よく使うデータ型の例⇩

説明範囲
INT整数型 -2147483648
 ~2147483647
CHAR(n) 固定長文字型 n(文字数指定):0~255文字
VARCHAR(m) 可変長文字型 n(バイト数指定):0~65535バイト
DATETIME 日付時刻型 yyyy-MM-dd hh:mm:ss

指定したデータ型に合わないデータを入れることはできません。

また、各カラムにはデフォルト値や制約を設定することができます。

CREATE TABLE 生徒
(
    出席番号 INT PRIMARY KEY,
    姓 VARCHAR(20) DEFAULT '不明',
    名 VARCHAR(20) DEFAULT '不明',
    クラス  VARCHAR(20) NOT NULL
)

PRIMARY KEY」は主キーに設定したい列にしていします。主キーに設定されたカラムは値が他の行と重複することができなくて、NULLを設定することもできません。

DEFAULT」値を設定したカラムには、値を設定せずにデータを挿入したらデフォルトでその値が設定されます。

NOT NULL」を設定したカラムには、必ず何か値を入れる必要があります。何も「NULL」を設定するとNULLを許可することができます。(何も設定しなかったら「NULL」と同じになります。)

テーブル定義を変更する

テーブル定義を変更するには、ALTER文を使います。

例えば、テーブルに列を追加するには以下のように記述します。

ALTER TABLE '生徒' ADD '性別' VARCHAR(2) NULL 

テーブルを削除する

テーブルを削除するには、DROP文を使います。

DROP TABLE '生徒'

練習問題

問題

Q.「テスト得点」テーブルのCREATE文を作りなさい。
列の定義は以下とする。

  • 教科名(主キー)
  • 出席番号
  • 点数
  • テスト実施日


答え

A.以下、解答例です。

CREATE TABLE テスト得点
(
    教科 VARCHAR(5) PRIMARY KEY,
    出席番号 INT NOT NULL,
    点数 INT NOT NULL,
    テスト実施日 DATETIME
)

上記はあくまでも解答例です。

点数列は、NULLを許可するように設計してもいいかもしれないし、クラスの文字数を2バイトに制限してもいいかもしれません。


第2回「テーブルについて」は以上です。

次回、第3回は「レコードの追加・更新・削除」です。

→SQL学習の入門・初心者にオススメの書籍3選

SQL入門 第3回 レコードの追加、更新、削除