kakiro-webカキローウェブ

システム開発情報とコンピューター書籍の紹介サイト

MySQL テーブルの作成

MySQLでテーブルの作成に関するSQLについて、以下に示します。

※ここではMySQLのバージョン5.6を使用して、動作確認を行っています。

※データベースの作成については、当サイトのMySQL データベースの作成のページをご覧ください。

※データベース接続ユーザーの作成については、当サイトのMySQL データベース接続ユーザーの作成のページをご覧ください。

テーブルの作成

テーブルを作成するには、以下のようなSQLを実行します。

mysql> USE db01;
mysql> CREATE TABLE tbl01 (id CHAR(5) NOT NULL, num01 INT, txt01 VARCHAR(50), date01 DATETIME, PRIMARY KEY (id)) ENGINE InnoDB;
  • MySQLへの接続時に、使用するデータベースを指定していない場合、USE文を実行して、SQLの実行時に使用するデータベースを指定します。

    ここではデータベース「db01」を使用するようにしています。

  • 「CREATE TABLE」に続けて、作成するテーブルの名前を指定します。

    ここでは「tbl01」という名前のテーブルを作成するようにしています。

  • テーブル名の指定の後に、「()」内に列の定義を指定します。

  • 「id」という名前の列を、固定長文字列型「CHAR」のサイズ「5」で、NOT NULL制約を付けて作成するようにしています。

    「CHAR」のサイズは、バイト数単位ではなく、文字数単位になります。

  • 「num01」という名前の列を、整数型「INT」で、作成するようにしています。

    「INT」で利用可能な値の範囲は、「-2147483648」から「2147483647」になります。

  • 「txt01」という名前の列を、可変長文字列型「VARCHAR」のサイズ「50」で、作成するようにしています。

    「VARCHAR」のサイズは、バイト数単位ではなく、文字数単位になります。

  • 「date01」という名前の列を、日付、時間型「DATETIME」で、作成するようにしています。

    「DATETIME」で利用可能な値の範囲は、「1000-01-01 00:00:00」から「9999-12-31 23:59:59」になります。

  • 「PRIMARY KEY」に続けて、「()」内に主キーに使用する列の名前を指定します。

    ここでは列「id」を主キーに指定しています。

  • 列の定義の指定の後に、「ENGINE」に続けて、テーブルで使用するストレージエンジンを指定します。

    ストレージエンジンは、テーブルに対し、データの持ち方や、SQLの実行のされ方を指定するものになります。

    ここでは標準的なトランザクション機能を持ち、MySQL5.6でデフォルトのストレージエンジンである「InnoDB」を指定しています。

    ストレージエンジンには、他に読み取り処理が大半の場合に有効な「MyISAM」等があります。

尚、USE文で使用するデータベースの指定を行っていない場合、以下のようにデータベースを指定して、テーブルを作成することができます。

mysql> CREATE TABLE db01.tbl01 (id CHAR(5) NOT NULL, num01 INT, txt01 VARCHAR(50), date01 DATETIME, PRIMARY KEY (id)) ENGINE InnoDB;
  • 作成するテーブルの名前の指定を「データベース名.テーブル名」の形で指定します。

    これにより、データベース「db01」に、テーブル「tbl01」が作成されるようになります。

テーブル名の指定について

上記にも記載しましたが、SQLでテーブル名を指定する際の対象となるデータベースは、USE文で事前に指定するか、テーブル名を「データベース名.テーブル名」の形で指定することになります。

以下のSQLの例では、USE文で事前にデータベース「db01」が指定されているものとして、記載していきます。

使用中のデータベースの確認

使用中のデータベースを確認するには、以下のようなSQLを実行します。

mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| db01       |
+------------+

自動採番列を持つテーブルの作成

自動採番列を持つテーブルを作成するには、以下のようなSQLを実行します。

mysql> CREATE TABLE tbl02 (num01 INT UNSIGNED NOT NULL AUTO_INCREMENT, txt01 VARCHAR(50), date01 DATETIME, PRIMARY KEY (num01)) ENGINE InnoDB;
  • 「num01」という名前の列に、「AUTO_INCREMENT」を指定して、自動採番が行われるようにしています。

    自動採番を行う列では、負の値は不要になりますので、「UNSIGNED」を指定して符号なしの値にしたほうが、広範囲の値を扱うことができます。

    符号なしの「INT」で利用可能な値の範囲は、「0」から「4294967295」になります。

自動採番列を持つテーブルへのINSERT文は、以下のように自動採番列を省略して行います。

mysql> INSERT INTO tbl02 (txt01, date01) VALUES ('aaa', '2015-01-02 03:04:05');

前回のINSERTで、AUTO_INCREMENTにより採番された値を取得するには、以下のようなSQLを実行します。

mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                1 |
+------------------+

テーブル一覧の確認

テーブルの一覧を確認するには、以下のようなSQLを実行します。

mysql> SHOW TABLES FROM db01;
+----------------+
| Tables_in_db01 |
+----------------+
| tbl01          |
| tbl02          |
+----------------+
  • 「SHOW TABLES FROM」に続けて、テーブル一覧を確認するデータベースの名前を指定します。

    ここではデータベース「db01」に作成されているテーブル一覧を確認するようにしています。

    上記のテーブル「tbl01」、「tbl02」を作成した際の結果になっています。

  • USE文で使用するデータベースの指定を行っている場合、「FROM」でデータベースの名前を指定する必要はありません。

既存のテーブルのCREATE TABLE文の確認

既存のテーブルのCREATE TABLE文を確認するには、以下のようなSQLを実行します。

mysql> SHOW CREATE TABLE tbl01;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                                                       |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tbl01 | CREATE TABLE `tbl01` (
  `id` char(5) COLLATE utf8_bin NOT NULL,
  `num01` int(11) DEFAULT NULL,
  `txt01` varchar(50) COLLATE utf8_bin DEFAULT NULL,
  `date01` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  • 「SHOW CREATE TABLE」に続けて、CREATE TABLE文を確認するテーブルの名前を指定します。

    ここでは上記で作成した「tbl01」という名前のテーブルのCREATE TABLE文を確認するようにしています。

テーブルの削除

テーブルを削除するには、以下のようなSQLを実行します。

mysql> DROP TABLE tbl01;
  • 「DROP TABLE」に続けて、削除するテーブルの名前を指定します。

    ここでは「tbl01」という名前のテーブルを削除するようにしています。

MySQL テーブルの作成については、以上です。

SQLのテクニックに関するおすすめの書籍

当サイトの書籍紹介ページで、SQLのテクニックに関するおすすめの書籍の紹介も行っておりますので、ご覧ください。

SQLのパフォーマンスに関するおすすめの書籍

当サイトの書籍紹介ページで、SQLのパフォーマンスに関するおすすめの書籍の紹介も行っておりますので、ご覧ください。

DB設計、SQLに関するおすすめの書籍

当サイトの書籍紹介ページで、DB設計、SQLに関するおすすめの書籍の紹介も行っておりますので、ご覧ください。