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

MySQLのテーブル作成の方法について、サンプルSQLを紹介しながらまとめています。

以下、データベースとして、MySQLのサンプルデータベースEmployeesを使っています。SQL実行結果の表示にはphpMyAdminを使用しています。

MySQLのテーブル作成構文

create table文でテーブルを作成します。

CREATE TABLE テーブル名 (
	カラム名1 型1 NULL許可1 デフォルト値1, 
	カラム名2 型2 NULL許可2 デフォルト値2, 
     :
	カラム名n 型n NULL許可n デフォルト値n
	PRIMARY KEY ( 主キーとなるカラム名 )
) ENGINE = ストレージエンジン DEFAULT CHARSET = 文字コード

カラムの型は、varcharやtext、int、floatなどを指定します。NULL許可、デフォルト値など、カラム名と型以外は省略可能です。

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

例えば、Employeesデータベースのemployeesテーブルと全く同じ構造を持つemployees2を作成するには、以下のSQLを実行します。

CREATE TABLE `employees2` (
	`emp_no` int(11) NOT NULL, 
	`birth_date` date NOT NULL, 
	`first_name` varchar(14) NOT 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 = utf8

実行すると、以下の構造を持つemployees2が作成されます。

テーブル存在時にエラーを抑制するには、IF NOT EXISTSを使用

テーブルがすでに存在する状態で、create table文を実行すると、以下のエラーとなります。

#1050 - Table 'employees2' already exists

エラーを回避するには、以下のように「IF NOT EXISTS」を使用します。

CREATE TABLE IF NOT EXISTS `employees2` (
	`emp_no` int(11) NOT NULL, 
	`birth_date` date NOT NULL, 
	`first_name` varchar(14) NOT 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 = utf8

上記を実行すると、employees2テーブルが存在しなければテーブルを作成し、すでに存在すれば何もせずにSQLを終了します。

既存のテーブルをコピーして、テーブル作成

既存のテーブルと全く同じ構造の場合、テーブル構造をコピーして別テーブルを作成することができます。

CREATE TABLE employees3
like employees

テーブル構造に加えて、主キーやインデックスも同じテーブルが作成されます。データはコピーされません。

データをコピーするには、以下のようにします。

insert employees3
select * from employees

上記SQLを実行すると、employees(社員)テーブルからデータをコピーし、employees3テーブルに挿入します。

【関連記事】
MySQL Insert サンプルコード集 一文で一括挿入する方法とは?

既存データベースのDDL(テーブル作成用SQL)を出力する

既存データベースから、テーブル作成用のDDL(Data Define Languate。テーブルを生成するSQL)を出力するにはMySQLのエクスポート機能を利用します。

phpMyAdminからおこなう場合は、上記のイメージのように対象データベースを選択してから、「エクスポート」タブをクリックし、エクスポート方法の「詳細 – 可能なオプションを全て表示」にチェックします。

フォーマットを「SQL」に指定して、「フォーマット特有のオプション」で、「構造」にチェックを入れます。

「実行」をクリックすると、DDLがファイル出力されます。

「テーブルの構造 テーブル名」のコメントのあとに、テーブルごとのDDLが出力されています。

コマンドラインから実行する場合は、以下のコマンドを実行します。

mysqldump -u データベースユーザ名 -p パスワード -d データベース名 > 出力ファイル名

-dオプションは、データなしで構造のみデータベースダンプするためのオプションです。このオプションを指定しないと、データベースのデータを全て含む、巨大なSQLを出力してしまうので注意しましょう。

ER図ツールから、テーブル作成SQLを生成する

テーブル設計をおこなってテーブル作成SQLを生成する場合、SQL生成機能を備えたER図ツールが便利です。

MySQLの付属ツールであるMySQL WorkbenchにはER図の機能があり、既存のデータベースからER図を作成するリバースエンジニアリング機能、ER図からテーブル作成をおこなうフォワードエンジニアリング機能が備わっています。

もともと、MySQL Workbenchは英語版のみなのですが、日本語化をおこなうファイルが公開されていて、簡単に日本語化できます。

【関連記事】
MySQL Workbench 8.0を日本語化して、ER図でリバースエンジニアリング

フリーのER図ツール A5M2

20年以上ものあいだ、ずっとバージョンアップ・バグフィックスが行われているフリーのSQL開発ツール、A5:SQL Mk-2(エーファイブ・エスキューエル・マークツー)というフリーウェアがあります。

開発者の間では、通称A5M2と呼ばれています。

参考)A5:SQL Mk-2 – フリーの汎用SQL開発ツール/ER図ツール .. 松原正和

Oracle、MS SQL Server、PostgreSQL、MySQLに対応し、軽量でサクサク動くのが特徴。データベースからER図生成、ER図からデータベース生成ができます。

Excel形式のテーブル定義書の出力も可能。

テーブルが増えてきたときの視認性アップの工夫も秀逸で、ページやサブタイプという考えを取り入れて見やすく表示できるようになってます。日本の開発現場で求められるような、見栄えのようER図が、このツールで作れるんですね。

まとめ

ポテパンダの一言メモ
  • MySQLでテーブル作成をおこなうには、create table文を実行する
  • 既存のテーブルと同じ構造のテーブルを作るには、create table … like文を実行
  • MySQLのダンプ(エクスポート)機能を利用して、DDLを出力可能
  • ER図ツール、A5M2は見やすいER図とデータベース、テーブル定義書が生成できる

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

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

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

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

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

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

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

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

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

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

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