テーブルの作成

広告

テーブルを作成します。CREATE TABLE文を使います。基本書式は次の通りです。

CREATE TABLE db_name.tbl_name
  (col_name1 data_type1, col_name2 data_type2, ...);

指定のデータベース内に指定した名前のテーブルを作成します。テーブル名は64バイト以内で指定し、Windowsの場合は大文字と小文字は区別されません。

USE文を使ってデータベースに接続している状態で、そのデータベース内にテーブルを作成する場合は次のように単にテーブル名だけを指定して作成することもできます。

CREATE TABLE tbl_name
  (col_name1 data_type1, col_name2 data_type2, ...);

テーブル名の後の括弧の中にテーブルにカラム名とカラムのデータ型をセットにして指定します。テーブルが複数のカラムを持つ場合はカンマ(,)で区切って記述して下さい。

カラム名は64バイト以内で指定して下さい。また指定可能なデータ型は「MySQLのデータ型」を参照して下さい。

実際に作成してみます。まずMySQLサーバに接続した特定のデータベースに接続していない状態で次のように入力します。

mysql> create table sampledb.personal(id int, name varchar(20));

p1-1

作成済みの「sampledb」データベースの中に「personal」テーブルが作成されました。このテーブルには「id」カラムと「name」カラムの2つのカラムが含まれ、「id」カラムのデータ型はint型、「name」カラムのデータ型はvarchar(20)型です。

では「sampledb」データベース内のテーブル一覧を表示してみます。

p1-2

「personal」テーブルが作成されていることが確認できました。

次に「sampledb」データベースに接続します。

p1-3

接続しているデータベースの中にテーブルを作成します。次のように入力します。

mysql> create table goods(id int, name varchar(20), price int);

p1-4

カレントデータベース内にテーブルを作成する場合はテーブル名だけを指定して作成できます。上記では「sampledb」データベースの中に「goods」テーブルが作成されました。

再度「sampledb」データベース内のテーブル一覧を表示してみます。

p1-5

「goods」テーブルが作成されていることが確認できました。

同じテーブル名を指定した場合

同じデータベース内に既に存在しているテーブル名を指定してテーブルを作成しようとするとエラーが発生します。

p1-6

既に存在するテーブル名を指定した場合でもエラーが発生しないようにするには「IF NOT EXISTS」を指定します。書式は次の通りです。

CREATE TABLE IF NOT EXISTS db_name.tbl_name
  (col_name1 data_type1, col_name2 data_type2, ...);

この書式を使った場合、既に存在するテーブル名を指定してテーブルを作成しようとしてもエラーにはなりません。ただし、エラーにならないというだけで新しいテーブルが作成されるわけではありません。

p1-7

実際に試してみるとエラーとはなりませんでしたが警告が1つ発生しています。次のように入力することで前回のコマンドでの警告を表示することができます。

mysql> show warnings;

p1-8

エラーが発生した時と同じメッセージが表示されました。

( Written by Tatsuo Ikura )