Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

SQLのcreate tableについてまとめています。

SQL create tableの構文

create table文の構文は、以下の通り。カラム名の定義は、カラム名、データ型、NULL許可、デフォルト値を指定に加え、特定のカラムをプライマリキーに指定することが可能です。

以下は、MySQLにてデモデータベースのemployeesのemployeesテーブル(データベース名とテーブル名が同じ)を作成するSQLです。

CREATE TABLE `employees` (
  `emp_no` int NOT NULL,
  `birth_date` date NOT NULL,
  `first_name` varchar(14) DEFAULT NULL,
  `last_name` varchar(16) NOT NULL,
  `gender` enum('M','F') NOT NULL,
  `hire_date` date NOT NULL,
  PRIMARY KEY (`emp_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

create tableには多彩なオプションがあり、Oracle、MySQLなどデータベース管理ソフトごとに異なる拡張がされています。ここでは、主要なデータベースに共通している部分のみ紹介します。

例えば、MySQLのcreate tableの正確な構文は以下の通り。

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    (create_definition,...)
    [table_options]
    [partition_options]
 :
 :

create definition(create定義)、table options(テーブルオプション)、partition optons(パーティションオプション)などの詳細はこちらを参照してください。

参考)MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.1.17 CREATE TABLE 構文

作成したテーブルの構造は、descにて確認できます。

mysql> desc employees;
+------------+---------------+------+-----+---------+-------+
| Field      | Type          | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+-------+
| emp_no     | int           | NO   | PRI | NULL    |       |
| birth_date | date          | NO   |     | NULL    |       |
| first_name | varchar(14)   | YES  |     | NULL    |       |
| last_name  | varchar(16)   | NO   |     | NULL    |       |
| gender     | enum('M','F') | NO   |     | NULL    |       |
| hire_date  | date          | NO   |     | NULL    |       |
+------------+---------------+------+-----+---------+-------+
6 rows in set (0.01 sec)

Fieldはカラム名、Typeはデータ型、NULLはNOの場合NULL不許可を表します。KeyにPRIとあるのはプライマリキー、Defaultはデフォルト値、Extraはカラムごとにコメント(注釈)をつけたときに表示される項目です。

なお、作成済みのテーブルのカラム情報を変更したり、プライマリキーを変更するには一度テーブルをドロップしてから再度create tableを実行する(データはすべて削除される)か、alter tableで属性を変更します。

【関連記事】
SQL ALTER TABLEのサンプルSQL データベース製品によって、機能拡張が異なる 

SQL create tableの使い方

既存のテーブルから、create文を生成する

SQL形式でのダンプ機能を持つDBMSの場合、既存のテーブルからcreate table文を生成することが可能です。

例えば、MySQLの場合はmysqldumpというコマンドで、SQL形式でのデータダンプが可能。

mysqldump -u ユーザ名 -pパスワード --no-data employees > dump.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.

–no-dataはデータはダンプせず、テーブル構造だけダンプするオプションです。出力先のダンプファイル名をdump.sqlとしています。また、Warningはコマンドラインでパスワードを直接指定したことによる警告です。

全テーブルがダンプされるので、目的のテーブル部分だけ抜き出せば、create table文が取得できます。以下は、ダンプしたファイルのうち、employees(社員)テーブルをcraete tableする箇所です。

 :
 :
--
-- Table structure for table `employees`
--

DROP TABLE IF EXISTS `employees`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `employees` (
  `emp_no` int NOT NULL,
  `birth_date` date NOT NULL,
  `first_name` varchar(14) DEFAULT NULL,
  `last_name` varchar(16) NOT NULL,
  `gender` enum('M','F') NOT NULL,
 :

SQL形式でのダンプに対応していないデータベースの場合、ネイティブな管理ソフトウェアに「逆エンジニアリング」機能が付属していることがあります。また、フリーウェアA5:SQL Mk-2を使って、create table文を生成することも可能です。

【関連記事】
MySQLのテーブル作成 既存DBからのDDL生成はエクスポート機能を使う 

まとめ

ポテパンダの一言メモ
  • create tableはカラム定義やプライマリキーを指定してテーブルを作成するコマンド
  • 作成済みのテーブルのカラム攻勢を変更するにはdropして再度create tableするかalter tableを実行
  • 既存テーブルからダンプ機能や管理ツールでcreate table文を逆生成することもできる

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。