6. phpMyAdminの基本

データベース作成

データベース新規作成

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 オプション デフォルト
email 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は、カラムデータを入力しなくてもよい制約です。新規カラム genderNULLで追加してみましょう。

カラム名 データ型 長さ 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