データベース作成
データベース新規作成
phpMyAdminでデータベースを作成してみましょう。phpMyAdminにログインし、データベース一覧から【新規作成】をクリックします。

メイン画面で、データベース名を入力、utf8-general-ci を選択して【作成】ボタンをクリックします。

utf8-general-ci はデータベースが日本語対応するための設定です。
データベースの確認
データベースが作成されました。
テーブルの作成
カラム追加
データベースを選択して構造タブが表示されます。
構造画面で名前にテーブル名を入力し【実行】をクリックします。
DLL
今回作成するテーブルのDLLです。
SQL
CREATE TABLE users (
id bigint UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
name varchar(255) NOT NULL,
created_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
id
テーブルのキーとなる id を追加します。名前を id、タイプBIGINT で入力します。
インデックスで PRIMARY KEYを選択します。
PRIMARY KEYをのダイアログで【実行】をクリックします。
AUTO INCREMENT
A_Iにチェックし、属性は UNSIGNED を選択します。A_Iはカラムを自動連番にするAUTO INCREMENT設定です。
その他のカラム
「users」テーブルに、その他のカラムの情報を追加します。
カラム名 | データ型 | 長さ | NULL | オプション | デフォルト |
---|---|---|---|---|---|
id | bigint | no | UNSIGNED, AUTO_INCREMENT | なし | |
name | varchar | 255 | no | なし | |
created_at | datetime | no | CURRENT_TIMESTAMP | ||
updated_at | datetime | no | CURRENT_TIMESTAMP |

SQLのプレビュー
【SQLのプレビュー】でSQLを確認します。

SQL実行
プレビューを確認したらダイアログを閉じて【保存する】をクリックします。
「users」テーブルにカラムが作成されました。
カラムの追加・編集
ALTER TABLE
SQLではALTER TABLEで、テーブルにカラムを追加できます。データベース一覧から「users」テーブルを選択し、メイン画面の「構造」タブをクリックします。
カラム数指定
「x 個のカラムを追加する」の欄にある【実行】ボタンをクリックします。
ここでは 1つのカラムを追加するので「1」のままです。
カラム情報の入力
カラム名 | データ型 | 長さ | NULL | オプション | デフォルト |
---|---|---|---|---|---|
varchar | 255 | no | なし |
カラムの入力画面に切り替わったら、以下のように入力し【保存する】をクリックします。

実行する SQL は以下の通りです。
SQL
ALTER TABLE users ADD email VARCHAR(255) NOT NULL;
- SQLを厳密記述するとき `(バッククォート) で囲みむこともできます。
SQL
ALTER TABLE `users` ADD `email` VARCHAR(255) NOT NULL;
カラムの確認
カラムを追加したら「構造」タブをクリックして「users」テーブルを確認します。
「email」カラムが追加されました。
NOT NULL
「name」や「email」などのカラムはNULLが「いいえ」で設定されています。NOT NULL制約は、レコードのNULLを許容しない設定で、データをNULLで更新しようとするとエラーになる入力必須の制約です。

NULL
NULLは、カラムデータを入力しなくてもよい制約です。新規カラム gender を NULLで追加してみましょう。
カラム名 | データ型 | 長さ | NULL | オプション | デフォルト |
---|---|---|---|---|---|
gender | varchar | 16 | yes | なし |
カラム追加画面で NULL にチェックしておきます。

SQL
ALTER TABLE users ADD gender VARCHAR(16);
「gender」カラムが追加されました。
UNIQUE
「Email」や「商品コード」などデータは重複しないようにする必要があります。SQLではデータ重複を防ぐ方法としてUNIQUEという制約があります。
カラムを UNIQUE にする
「email」カラムを UNIQUE にするには、カラム一覧から「その他 > ユニーク」を選択します。

ダイアログが表示されたら【OK】をクリックします。

インデックスの確認
UNIQUE は構造画面の「インデックス」で確認できます。これでもし 「email」カラムに重複した値を挿入しても SQLエラーになります。

SQLの実行
phpMyAdminで SQLを直接入力して実行することもできます。「SQL」タブをクリックすると「SQLエディタ」が表示されます。

password カラムの追加
「password」カラムの追加をSQLで実行してみましょう。
カラム名 | データ型 | 長さ | NULL | オプション | デフォルト |
---|---|---|---|---|---|
password | varchar | 255 | no | なし |
「SQLエディタ」にSQLを入力します。
SQL
ALTER TABLE users ADD password VARCHAR(255) NOT NULL;
【実行】をクリックします。
レコードの挿入
テーブルにレコードを挿入してみましょう。「users」テーブルを選択した状態で「挿入」タブをクリックします。
データを入力して【実行】します。id は未入力で自動連番、パスワードは関数欄で「password_hash()」を選択しておくと暗号化します。
レコード一覧の表示
表示タブをクリックすると、テーブルのレコード一覧が表示されます。

全てのレコードを削除
テーブルのレコードをすべて削除してみましょう。データベース一覧からデータベースを選択します。

テーブル一覧の「users」で「空にする」をクリックします。

ダイアログが表示されたら【OK】をクリックします。

TRUNCATE
データをすべてクリアにするSQLは TRUNCATE を実行します。
TRUNCATE テーブル名;
DELETE と TRUNCATE の違い
テーブルからデータ削除する SQL は DELETE が一般的です。
DELETE FROM テーブル名;
DELETE FROM テーブル名 WHERE 条件;
DELETE は、アプリで通常の削除処理で利用します。レコードを選択して削除することが多く、id の自動連番は欠番になります。一方、TRUNCATE は、シーケンス情報もすべてデータ削除するので、アプリの初期化で使われます。
テーブル削除
DROP TABLE
DROP TABLEは、データベースからテーブル削除します。テーブル一覧から「users」テーブルを 【削除】をクリックします。

- テーブルを削除すると、データも消えてしまうので注意が必要です。
DDL
今回作成した「users」テーブル定義のDLLです。
CREATE TABLE `users` (
`id` bigint(20) UNSIGNED NOT NULL,
`name` varchar(255) NOT NULL,
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP,
`email` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`gender` varchar(16) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8