前回は「データベースとは」というテーマでデータベースについての概要について触れました。
今回は、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回は「レコードの追加・更新・削除」です。
最近のコメント