テーブル(表)の作成(CREATE TABLE)
スポンサードリンク
リレーショナル型データベースでは、まず最初に表(テーブル)を定義しなければならない。
この表の定義をおこなうのがCREATE TABLE文である。CREATE TABLE文の記述形式はつぎのとおりである。
CREATE TABLEの基本的な記述形式
CREATE TABLE 表名( ← 作成する表(テーブル)の名前
列名a データ型,
列名b データ型,
列名c データ型,
列名n データ型
)
データ型は、つぎのようなデータ型がある。
データ型 | 意 味 |
---|---|
INT | 整数 |
CHAR(最大文字数) | 文字列型(最大文字数)()内で指定された最大文字数が格納できる文字列CHAR(10)のように格納する最大文字列長を指定する |
NCHAR(最大文字数) | 漢字文字列(最大文字数)()内で指定された最大文字数が格納できる漢字文字列NCHAR(10)のように格納する最大文字列長を指定する |
SMALLINT | 整数型。INTよりも小さな整数を格納する |
DEC | 10進数 |
REAL | 単精度の浮動小数点型 |
DATE | 日付型 |
TIME | 時刻型 |
また、PRIMARY KEYで主キーを指定したり、FOREIGN KEYで外部キーを指定することもできる。
主キーとは、その列の値が決まれば行を特定できる列である。例えば、クラス内の出席番号のようなものである。クラス内に限っていえば、出席番号が決まればそのクラスの誰であるかは決まる。これは、出席番号がクラス内において重複していない固有の値だからである。このように列内において重複した値がない列が主キーの列の対象となる。
外部キーは、リレーショナル型データベースは、複数の表を組み合わせて使用するがそれぞれの表どうしの関係を定義したものである。
PRIMARY KEYおよびFOREIGN KEYはつぎのように記述する。
PRIMARY KEYの記述形式
PRIMARY KEY(主キーとなる列名)
FOREIGN KEYの記述形式
FOREIGN KEY(外部となる列名) REFERENCES 表名
《例題1》
以下の学生表を定義(作成)する
学生表
主キー | 列名 | データ型 |
---|---|---|
○ | 学籍番号 | CHAR(5) |
氏名 | NCHAR(7) | |
性別 | NCHAR(1) | |
年齢 | INT | |
出身地 | NCHAR(5) | |
学科 | NCHAR(3) |
CREATE TABLE文
CREATE TABLE 学生表(
学籍番号 CHAR(5) PRIMARY KEY,
氏名 NCHAR(20),
性別 NCHAR(1),
年齢 INT
出身地 NCHAR(5),
学科 NCHAR(3)
)
《例題2》
売上表を定義する。
売上表
主キー | 列名 | データ型 |
---|---|---|
○ | 売上No | CHAR(5) |
日付 | DATE | |
数量 | INT | |
商品コード | CHAR(2) |
CREATE TABLE文
CREATE TABLE 売上表(
売上No CHAR(5) PRIMARY KEY,
日付 DATE,
数量 INT,
商品コード CHAR(2)
FOREIGN KEY (商品コード) REFERENCES 商品表 ← 外部キーの指定
)
売上表の定義はつぎのとおりであ。なお、売上表は商品表を参照するので、外部キーの指定をおこなっている。
《例題3》
商品表を定義する。
商品表
主キー | 列名 | データ型 |
---|---|---|
○ | 商品コード | CHAR(2) |
商品名 | NCHAR(10) | |
単価 | INT |
CREATE TABLE文
CREATE TABLE 商品表(
商品コード CHAR(5) PRIMARY KEY,
商品名 NCHAR(10),
単価 INT,
)
PRIMARY KEYの指定は、つぎのように記述してもよい。たとえば、売上表ならば以下のように記述する。
CREATE TABLE 売上表(
売上No CHAR(5),
日付 DATE,
数量 INT,
商品コード CHAR(2)
PRIMARY KEY (売上No) ← 主キーの指定
FOREIGN KEY (商品コード) REFERENCES 商品表 ← 外部キーの指定
)
また、列に対して入力するデータのチェックを行わせることができる。例えば、商品表の「単価」に入力される値が、0〜1000の範囲かチェックを行いたいときは、次のように指定する。
CREATE TABLE 商品表(
商品CD CHAR(3) PRIMARY KEY,
商品名 CHAR(20),
単価 INTEGER,
CHECK (単価 BETWEEN 0 AND 1000)
)
CREATE TABLE文は、表の定義をおこなっているだけである。したがって、表のデータは何も入力されていない。表へのデータの入力は、INSERT文を使って実際のデータを入力する。