CREATE文でテーブルを作成するSQL実践講座(10)

» 2001年03月23日 00時00分 公開
[篠原光太郎@IT]

 今回は、新しいテーブルの作成に挑戦してみましょう。これまでのSELECT文に代わって、「CREATE」文の登場です。

 CREATE文は、テーブルのみならず、さまざまなデータベース上のオブジェクトを作成するために使われます。また、データベースそのものを作成する場合にも使用します。今回は、新たにMEMBER CARDの情報を保存する「CardInfo」テーブルを作成してみましょう。

新しいテーブルの作成準備

 テーブルを作成する前に、CardInfoにどのような情報が必要なのかを洗い出す必要があります。次のような項目のリストを作成してみました。

項目名 内容
カード番号 6桁の数字のカード番号
顧客 カード発行先の顧客
発行日 発行した年月日
有効期限 有効期限の年月日(通常は、発行日から1年間)
発行した従業員 カードを発行した従業員

 この項目リストをもとに、各項目をどのようにデータベース上に格納するかを検討します。ここで検討が必要なのは、データを直接テーブルへ格納するか、ほかのテーブルの情報を参照するキー値を格納するかです。今回の例では、顧客と従業員の項目は、それぞれCustomersテーブルとEmployeesテーブルを参照するように、キー値であるID列を格納することにしました。データベースの設計方法については、ここでは詳細には触れませんが、回を改めて解説したいと考えています。

項目名 内容
カード番号 カード番号を文字情報としてテーブルへ格納する
顧客 CustomersテーブルのCustomerIDをテーブルへ格納する
発行日 日付情報としてテーブルへ格納する
有効期限 日付情報としてテーブルへ格納する
発行した従業員 EmployeesテーブルのEmployeeIDをテーブルへ格納する

 これらの情報をもとに、テーブルの列の定義を次のとおりとします。CustomerIDとEmployeeIDは、それぞれCustomers、Employeesの定義と同じデータ型としている点に注意してください。

項目名 列名 データ型
カード番号 CardID nchar(6)
顧客 CustomerID nchar(5)
発行日 IssueDate datetime
有効期限 ExpireDate datetime
発行した従業員 EmployeeID int

SQL Serverで扱えるデータ型

 SQL Serverで取り扱える主なデータ型は、次のリストのとおりです。

分類 データ型名 説明
数値型 int 整数データを格納するデータ型
記憶域サイズ:64bits
範囲:-2^31 (-2,147,483,648) 〜 2^31 - 1 (2,147,483,647)
decimal 固定長桁数、固定長小数桁数を持つ数値データを格納するデータ型
範囲:桁数最大38桁(標準セットアップでは28桁)
money 通貨を格納するデータ型
記憶域サイズ:64bits
範囲:-2^63(-922,337,203,685,477.5808)〜2^63 - 1(+922,337,203,685,477.5807)
float 浮動小数点数値を格納するデータ型
記憶域サイズ:64bits、128bits
範囲:- 1.79E + 308 〜1.79E + 308
文字列型 char、nchar 8000文字以内の固定長の文字列を格納するデータ型。UNICODEで格納する場合はncharを使用する(4000文字以内)
varchar、nvarchar 8000文字以内の可変長の文字列を格納するデータ型。UNICODEで格納する場合はnvarcharを使用する(4000文字以内)
text、ntext 約20億文字以内の可変長の文字列を格納するデータ型。UNICODEで格納する場合はntextを使用する(約10億文字以内)
日付型 datetime 日付を格納するデータ型
範囲:1753 年 1 月 1 日〜9999 年 12 月 31 日
精度:3.33ミリ秒

 ほかにも幾つかのデータ型がありますので、用途に応じて使い分ければよいでしょう。

 なお、UNICODEへの対応がこのバージョンより拡張されており、頭に「n」が付く文字列データ型が追加されています。これまでサンプルとして使用してきた、「Northwind」データベースも、UNICODE対応の「n」文字型を使用しています。今後の例題では、Northwindデータベースに倣って「n」文字型を使用していきます。実際のアプリケーションでデータベースを作成していく際は、特に文字数の制限が制約とならない場合は、「n」文字型の使用を標準としていくことをお勧めします。

実際にテーブルを作成する

 では、実際にテーブルを作成してみましょう。次のSQL文を実行します。

【例1】

CREATE TABLE CardInfo (
  CardID nchar(6),
  CustomerID nchar(5),
  IssueDate datetime,
  ExpireDate datetime,
  EmployeeID int
)
画面1 「CREATE TABLE」を実行して、テーブルを作成したところ(画面をクリックすると拡大表示します) 画面1 「CREATE TABLE」を実行して、テーブルを作成したところ(画面をクリックすると拡大表示します)

 CREATE文はまず、「何」を作成するのかの指定をCREATEの後に記述します。ここでは、テーブルを作成するので、CREATE TABLEとしました。このほかに、CREATE DATABASEやCREATE VIEWのように、オブジェクトのタイプを指定することができます。CREATE TABLEの後には、( )の中に、カラム名をデータ型の指定とともに列挙します。ncharの後ろの( )の中の数字は、文字列の桁数の指定です。

 さて、テーブルが実際に作成されたかどうかを確認するために、次のSQL文を実行してみましょう。

【例2】

SELECT * FROM CardInfo
画面2 SELECT文でテーブルが作成されたかの確認をする。画面のように、0件のデータが入ったテーブルが作成されていることが分かる(画面をクリックすると拡大表示します) 画面2 SELECT文でテーブルが作成されたかの確認をする。画面のように、0件のデータが入ったテーブルが作成されていることが分かる(画面をクリックすると拡大表示します)

 データが1件も登録されていないテーブルが作成されたのが分かりますね。テーブルがカラム名を含めて、指定したとおりに作成されたかどうかを確認するには、次のコマンドを実行することでも可能です。

【例3】

sp_help CardInfo

 sp_helpというコマンドは、データベースオブジェクトの定義情報を返すシステムストアドプロシージャです。ストアドプロシージャは、SQLによるユーザー定義の関数です。SQL Serverは、システムの管理を容易にするために、幾つかのストアドプロシージャを標準で提供しています。sp_helpも標準で提供されるストアドプロシージャの1つです。sp_helpの後にテーブル名などのデータベースオブジェクト名を指定すると、その定義を結果としてリストします。

画面3 sp_helpを使用して、作成したテーブルの内容を表示させたところ(画面をクリックすると拡大表示します) 画面3 sp_helpを使用して、作成したテーブルの内容を表示させたところ(画面をクリックすると拡大表示します)

 テーブル名が「CardInfo」で、5つのフィールドが指定どおりに作成されていることが確認できますね。画面には表示しきれていないですが、右側にスクロールすると、データ型の確認もできますので、参照してみてください。

SQL Server Enterprise Managerでテーブルを作成する

 CREATE文を使用しなくても、SQL Server Enterprise Managerでテーブルの作成が可能です。その手順を紹介しましょう。

 まずは、スタートメニューから「SQL Server Enterprise Manager」を起動し、Northwindデータベースを左側の階層リストから選択し、さらに「テーブル」を選択します。

画面4 SQL Server Enterprise Managerのテーブル一覧を開いたところ(画面をクリックすると全体を表示します) 画面4 SQL Server Enterprise Managerのテーブル一覧を開いたところ(画面をクリックすると全体を表示します)

 いま追加した、「CardInfo」テーブルがリストされているのが分かりますね。まずは確認のために、定義情報を表示させてみましょう。CardInfoテーブルを右クリックし、「プロパティ」を選択します。

画面5 画面4でテーブルを選択した状態で、マウスを右クリックしてメニューを開き、「プロパティ」を選択する(画面をクリックすると全体を表示します) 画面5 画面4でテーブルを選択した状態で、マウスを右クリックしてメニューを開き、「プロパティ」を選択する(画面をクリックすると全体を表示します)
画面6 CardInfoのプロパティを表示したところ(画面をクリックすると拡大表示します) 画面6 CardInfoのプロパティを表示したところ(画面をクリックすると拡大表示します)

 確認が済んだら、プロパティ画面を閉じ、左側のペインの「テーブル」オブジェクトを右クリックし、「新規テーブル」を選択します(右側のテーブルリストが表示されている個所を右クリックしても「新規テーブル」は選択可能です)。

<strong>画面7 SQL Server Enterprise Managerで新規にテーブルを作成する場合には、最初にテーブル名を入力する(画面をクリックすると全体を表示します)</strong>

 新規に作成するテーブル名を入力します。ここでは、「CardInfo2」とします。

 次に、CardInfoと同じ内容でカラムを定義します。「列名」「データ型」を順に入力していきます。ncharのフィールドは、「長さ」も同様に入力しましょう。入力が終わったら、左上のディスクのアイコンをクリックし、保存をするとテーブルが作成されます。

画面8 テーブル名を入力したら、次は各カラムの要素を決める(画面をクリックすると全体を表示します)

 先ほどのCardInfoと同様にテーブルが作成されているか、SQL Server Enterprise Managerかsp_helpで確認しましょう。

今回のまとめ

今回は、CREATE文とEnterprise Managerでのテーブルの作成の解説をしました。次回は、テーブル定義の詳細について解説をしていきます



「SQL実践講座」バックナンバー

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。