前回記事:MySQLテーブル設計のための、よく使うデータ型まとめでは、MySQLでテーブル定義を作成する方法と、設定できるデータ型についてご紹介しました。今回は実際にテーブルを作成・削除・変更するためのSQLや、データの登録方法について詳しくご紹介したいと思います。
目次
3.テーブル定義(カラムの情報)を確認する「SHOW COLUMNS」
4.1 テーブル定義の変更
4.2 テーブル名を変更する「RENAME」
4.3 主キーを追加する「ADD PRIMARY KEY」
4.4 主キーを削除する「DROP PRIMARY KEY」
4.5 インデックスを追加する「ADD INDEX」
4.6 インデックスを削除する「DROP INDEX」
4.7 カラム名とデータ型を変更する「CHANGE」
4.8 データ型のみを変更する「MODIFY」
4.9 カラムの追加「ADD」
4.10 カラムの削除「DROP」
1.新規テーブルを作成する「CREATE TABLE」
1.1 新規テーブルの作成
新規でテーブルを作成する場合は、「CREATE TABLE文」を使用します。
CREATE TABLE文の基本の書式は、次の通りです。
CREATE TABLE [データベース名].[テーブル名](
[カラム名1] [データ型1] [オプション],
[カラム名2] [データ型2] [オプション],
[カラム名3] [データ型3] [オプション],
...);
<注意点>
・既に特定のデータベースに接続した状態(USE文を実行している状態)では、データベース名を省略することができます。その場合、接続中のデータベース内にテーブルが作成されます。
・カラム名には、最大64バイトまで設定可能です。
・NULLを禁止する場合、オプション部分に「NOT NULL」と追加します。
・キー(主キー、プライマリキー)を設定する場合、オプション部分に「PRIMARY KEY」と追加します。
今回は関連記事:MySQLテーブル設計のための、よく使うデータ型まとめで作成したテーブル定義を例に、SQLを作成していきたいと思います。
これら2つのテーブルを「db_01」というデータベースに作成するSQLは、次のようになります。
<購入履歴(KOUNYU_RIREKI)>
CREATE TABLE db_01.KOUNYU_RIREKI(
TYUMON_NO SMALLINT(4) ZEROFILL NOT NULL PRIMARY KEY,
TYUMON_YMD DATE,
USER_ID CHAR(5),
KINGAKU INT(10)
);
<ユーザデータ(USER_DATA)>
CREATE TABLE db_01.USER_DATA(
USER_ID CHAR(5) NOT NULL PRIMARY KEY,
USER_NAME VARCHAR(300),
USER_ADD VARCHAR(300),
SOURYO_KBN CHAR(6)
);
1.2 コマンド実行結果
正常に作成完了すると、次のように表示されます。
2.テーブル一覧を表示する「SHOW TABLES」
2.1 テーブル一覧の表示
テーブルの一覧を表示するには、「SHOW TABLES文」を使用します。
SHOW TABLES文の基本の書式は、次の通りです。
SHOW TABLES FROM [データベース名];
<注意点>
・特定のデータベースに接続中の場合は、FROM以降を省略することができます。その場合、接続中のデータベース内のテーブル一覧が表示されます。
このように、先ほど作成した2つのデータベースが表示されました。
3.テーブル定義(カラムの情報)を確認する「SHOW COLUMNS」
3.1 テーブル定義の一覧を表示
テーブル定義(カラムの情報)を表示するには、「SHOW COLUMNS文」を使用します。
SHOW COLUMNS文の基本の書式は、次の通りです。
SHOW COLUMNS FROM [テーブル名] FROM [データベース名] LIKE '[抽出条件]';
<注意点>
・特定のデータベースに接続中の場合は、FROM[データベース名]の部分を省略することができます。その場合、接続中のデータベース内で該当するテーブルのカラム情報が表示されます。
・LIKE[抽出条件]を指定することで、条件に合ったカラムのみ表示させることができます。
3.2 コマンド実行結果
次の図のように、先ほど作成した2つのデータベースについてカラム情報が表示されました。
さらにLIKE以下の抽出条件を指定すると、次のように該当行だけが表示されました。
4.テーブル定義を変更する「ALTER TABLE」
4.1 テーブル定義の変更
作成済のテーブルに変更を加えたい場合、主に次のような変更が可能です。
・テーブル名の変更
・主キーの追加
・主キーの削除
・インデックスの追加
・インデックスの削除
・カラム名とデータ型の変更
・カラムのデータ型のみの変更
・カラムの追加
・カラムの削除
4.2 テーブル名を変更する「RENAME」
テーブルの名称を変更する場合、次のようなSQLを発行します。
ALTER TABLE [変更前テーブル名] RENAME TO [変更後テーブル名];
4.3 主キーを追加する「ADD PRIMARY KEY」
主キーを追加する場合、次のようなSQLを発行します。
ALTER TABLE [テーブル名] ADD PRIMARY KEY ([カラム名]);
4.4 主キーを削除する「DROP PRIMARY KEY」
主キーを削除する場合、次のようなSQLを発行します。
ALTER TABLE [テーブル名] ADD PRIMARY KEY;
4.5 インデックスを追加する「ADD INDEX」
インデックスを追加する場合、次のようなSQLを発行します。
ALTER TABLE [テーブル名] ADD INDEX [インデックス名]([カラム名]);
複合インデックスを追加する場合は、次のようにカンマ区切りで並べて入力します。
ALTER TABLE [テーブル名] ADD INDEX [インデックス名]([カラム名1, カラム名2, ...]);
4.6 インデックスを削除する「DROP INDEX」
インデックスを削除する場合、次のようなSQLを発行します。
ALTER TABLE [テーブル名] DROP INDEX [インデックス名];
4.7 カラム名とデータ型を変更する「CHANGE」
カラムの名称の変更には、データ型の変更がセットで付いてきます。
ALTER TABLE [テーブル名] CHANGE [変更前カラム名] [変更後カラム名] [変更後データ型];
なおデータ型を変更せず名称のみ変更したい場合は、同じものを変更後に指定すればOKです。
データ型のみ変更して名称を変更しない場合は、次の「MODIFY」を使います。
4.8 データ型のみを変更する「MODIFY」
名称を変更せずデータ型のみ変更したい場合は、「MODIFY」を使います。
ALTER TABLE [テーブル名] MODIFY [カラム名] [変更後データ型];
4.9 カラムの追加「ADD」
新しいカラムを末尾に追加する場合、次のようなSQLを発行します。
オプションの位置には、通常のテーブル作成時と同じく「IS NOT NULL」などが指定可能です。
ALTER TABLE [テーブル名] ADD [カラム名] [データ型] [オプション];
カラムの追加位置を先頭にしたい場合は、最後に「FIRST」と指定します。
ALTER TABLE [テーブル名] ADD [カラム名] [データ型] [オプション] FIRST;
任意の場所に追加したい場合は、「AFTER+追加したい場所の一つ手前のカラム」を指定します。
ALTER TABLE [テーブル名] ADD [カラム名] [データ型] [オプション] AFTER [前のカラム];
4.10 カラムの削除「DROP」
カラムを削除する場合、次のようなSQLを発行します。
ALTER TABLE [テーブル名] DROP [カラム名];
5.作成したテーブルに内容を追加する
5.1 「INSERT」でデータを追加
テーブルにデータ(レコード)を追加するには、「INSERT文」を使用します。
INSERT文の基本の書式は、次の通りです。
INSERT INTO [データベース名].[テーブル名] ([カラム名1], [カラム名2]...)
VALUES ([値1], [値2]...);
項番1で作成したテーブル<ユーザデータ>にデータを追加するSQLは、次のようになります。
INSERT INTO db_01.USER_DATA(USER_ID, USER_NAME, USER_ADD, SOURYO_KBN)
VALUES ('Y0001', 'ユーザA', '住所A', 'その他');
指定したカラムに抜けがあった場合、その項目にはデフォルト値が設定されます。
5.2 コマンド実行結果
上記SQLを実行すると正常終了し、レコードが登録されました。
5.3 コマンド実行結果
INSERT文を使って一行ずつレコードを追加するほかに、CSVファイルを使ってデータをまとめて取り込む方法があります。詳しくは次の関連記事をご参照下さい。
6.既存テーブルをコピーして新規テーブルを作成する
6.1 テーブルのコピー
既存のテーブルからテーブル定義やデータをコピーして、新しいテーブルを作成することが可能です。
CREATE TABLE [コピー先テーブル]
SELECT [カラム名1], [カラム名2]... FROM [コピー元テーブル];
この書き方でCREATE TABLEを実行すると、後半のSELECT文の抽出結果そのものの形で、新しいテーブルを作成することができます。
項番1で作成したテーブル<ユーザデータ>のうち2つの項目を使って新しいデータベースを作成すると、次のようになります。
CREATE TABLE db_01.USER_DATA_NEW
SELECT USER_ID, USER_NAME FROM db_01.USER_DATA;
6.2 コマンド実行結果
このように「SELECT USER_ID, USER_NAME FROM db_01.USER_DATA;」の結果をコピーして、新しいテーブルが作成されました。
なお全く同じテーブルをコピーして作りたい場合は、「SELECT * FROM [コピー元テーブル];」とすればOKです。
SELECT文の細かい条件指定の方法については、次の記事をご参照下さい。
7.テーブルを削除する「DROP TABLE」
7.1 テーブルの削除
テーブルを削除したい場合は、「DROP TABLE文」を使います。
DROP TABLE [データベース名].[テーブル名];
複数のテーブルを削除したい場合、テーブル名をカラムで区切って並べることで一括で削除することができます。
DROP TABLE [データベース名].[テーブル名1], [データベース名].[テーブル名2]...;
前項で作成したテーブル「USER_DATA_NEW」を削除する場合は、次のように指定します。
DROP TABLE db_01.USER_DATA_NEW;
7.2 コマンド実行結果
SQLを実行すると、「USER_DATA_NEW」が削除されました。
8.まとめ
次回はCSVファイルを用いたデータの入力と出力方法について、詳しくご紹介したいと思います。
よければ合わせてご覧下さい。
関連記事:
無料でも使える高機能データベース「MySQL」とは
関連記事:
MySQLのダウンロード&インストールと初期設定方法
関連記事:
MySQLのデータベースに接続する3つの方法と接続手順
関連記事:
便利な公式ツールMySQL Workbenchの使い方と日本語化方法
関連記事:
MySQLでユーザを作成し、権限を設定する方法
関連記事:
MySQLで新規にデータベースを作成・削除する方法
関連記事:
MySQLの日本語文字化け回避!文字コードを確認&変更する方法
関連記事:
MySQLテーブル設計のための、よく使うデータ型まとめ