phpMyAdminユーザー向けMySQL Workbench入門:テーブル確認からSQL実行まで
作成日:2026.10.10
phpMyAdminに慣れた人向けに、MySQL Workbenchの基本操作を解説します。両ツールの動作場所と接続経路の違いから、接続設定、テーブル・カラムの構造確認、SQLの実行、結果とエラーの見方までを紹介。SELECTを試す前にEXPLAINで実行計画を確認する手順も扱います。
目次
MySQL Workbenchは、MySQLへ接続してテーブルの構造やデータを確認したり、SQLを実行したりできるクライアントツールです。
phpMyAdminに慣れていると、MySQL Workbenchを開いても「テーブルの一覧はどこ?」「カラムの型を見たいだけなのに、どこをクリックするんだろう」と迷うことがあるかと思います。
Workbenchでは、左側のSchemasでテーブルやカラムをたどり、構造はTable Inspector、取得したデータはResult Gridで確認します。この使い分けが分かると、画面を追いやすくなります。
今回は、接続先の登録から、テーブル・カラムの確認、SELECTの実行までを整理します。phpMyAdminでDBの確認やSQL実行を行っている人向けの入門です。
phpMyAdminとの違い:ツールが動く場所
Workbenchは、手元のPCにインストールして使うデスクトップアプリです。一方、phpMyAdminはWebサーバー上のPHPで動くWebアプリで、手元のPCからはブラウザーで操作します。phpMyAdminにWebサーバーとPHPが必要なことは、phpMyAdminの公式動作要件にも記載されています。
- Workbench:手元のPC上のWorkbench → MySQLサーバー
- phpMyAdmin:手元のPCのブラウザー → Webサーバー上のphpMyAdmin → MySQLサーバー
どちらもSQL自体を実行するのはMySQLサーバーです。また、WebサーバーやMySQLサーバーは別のマシンにあるとは限らず、手元のPCで動かす構成もあります。
この違いがあるため、phpMyAdminで接続できていても、手元のPCのWorkbenchから同じDBへ接続できるとは限りません。Workbenchでは、手元のPCから利用できる接続先と、そこから接続するユーザーの権限を確認しておきます。
今回の対象と準備
説明の対象は、Windows 11上のMySQL Workbench 8.0系と、接続先のMySQL 8.0です。ボタンや表示の配置は、利用するバージョンや設定によって異なる場合があります。
Workbenchだけをインストールしても、接続先のDBサーバーは用意されません。起動済みのMySQLサーバー、利用できる検証用DB、そのDBへ接続するユーザーを用意しておきます。
Windows版は、MySQL Workbenchの公式ダウンロードページから取得できます。単体のMSIパッケージなどで導入でき、必要なランタイムや権限については、Windows版の公式インストール手順を確認してください。
Workbenchの公式マニュアルでは、MySQL Server 8.0で開発・テストされており、8.4以降に接続できても一部機能が動かない可能性があるとされています。この記事は8.0の操作・仕様の説明であり、新しく用意するDBのバージョンを一律に8.0へ合わせるという意味ではありません。別バージョンでは、使う機能ごとに確認してください。
接続先を登録する
起動後のホーム画面で、MySQL Connectionsの右にある+から接続先を追加します。今回はローカルの検証用MySQLへStandard (TCP/IP)で接続する例です。
| 項目 | 入力する内容 |
|---|---|
Connection Name | Workbench内で見分けるための接続名。例えばlocal-demo |
Connection Method | 今回はStandard (TCP/IP) |
Hostname | MySQLサーバーの接続先。ローカルの例なら127.0.0.1 |
Port | その接続先で待ち受けているポート |
Username | 検証用DBへ接続できるMySQLユーザー名 |
接続名は自由に付ける表示用の名前で、DB名とは別です。ユーザー名やパスワードは、phpMyAdminでログインしているDBユーザーなど、接続先で許可されている認証情報を使います。ここで新しいDBユーザーが作られるわけではありません。
設定したらTest Connectionで接続を確認し、必要に応じてパスワードを入力します。接続を保存した後、ホーム画面の接続タイルを開くとSQLエディターへ進めます。設定項目は、Standard TCP/IP接続の公式説明も参照してください。
ポートは、MySQLの一般的な値である3306をそのまま入れればよいとは限りません。例えば、Docker ComposeでLaravel環境を作る記事の設定では、Windows側のクライアントからは127.0.0.1:33060へ接続します。Container内のLaravelが使うdb:3306とは接続元が違います。
Schemasからテーブル一覧を見る
接続後は、左側のNavigatorにあるSchemasタブを開きます。MySQLでは、ここに並ぶスキーマを、phpMyAdminで選んでいたデータベースに対応するものと考えればOKです。
DB名の左にある三角を開き、その下のTablesを開くとテーブル一覧が見られます。テーブル名ではなく、左側の三角を使って階層を開くのがポイントです。
Schemas
└─ 利用するDB名
├─ Tables
│ └─ テーブル名
│ ├─ Columns
│ │ ├─ カラム名
│ │ └─ カラム名
│ ├─ Indexes
│ ├─ Foreign Keys
│ └─ Triggers
├─ Views
└─ ...
これは画面の階層を示す模式図です。テーブル名をダブルクリックしても、WorkbenchではSQLエディターへその名前が挿入されます。データを取得する操作とは別なので、ここは少し戸惑いやすいところです。
サイドバー自体が見えない場合は、View → Panels → Show Sidebarを確認します。テーブルを作った後など、一覧が古い場合は右クリックメニューのRefresh Allで更新できます。目的のDBが表示されないときは、接続先やユーザーの権限、一覧のフィルターも確認してください。
操作の詳細は、Schemasと右クリックメニューの公式説明にまとまっています。
カラムの構造と、保存されているデータを分けて見る
カラム名だけならColumns、型などを見るならTable Inspector
テーブルの左の三角を開き、その下のColumnsを開くとカラム名を確認できます。型やNULLの可否などを一覧で見たい場合は、テーブルを右クリックしてTable Inspectorを開き、Columnsタブを確認します。インデックスを調べたい場合はIndexesタブです。
まずは、カラム名、データ型、NULLを許可するか、既定値があるかを見れば十分です。主キーや複合インデックスの構成は、カラムの表示だけで判断せずIndexes側でも確認します。Table Inspectorの公式説明も参考になります。
行データを見る操作は別
保存されている行を見たい場合は、テーブルを右クリックしてSelect Rows - Limit ...を選びます。公式資料の例ではSelect Rows - Limit 200という表示ですが、表示される件数は利用環境で確認してください。この操作はSELECTを実行するので、単にテーブル構造を開く操作ではありません。
取得した行はResult Gridに表示されます。編集可能な結果では、セルの変更や行の追加・削除をApplyするとDBへ反映されるため、確認だけのつもりで編集を適用しないようにします。
| phpMyAdminで見ていたもの | Workbenchで使う場所・操作 |
|---|---|
| データベース・テーブルの一覧 | Schemas → DB名 → Tables |
| 構造・フィールド一覧 | ツリーのColumns、詳しくはTable Inspector |
| テーブルのデータ表示 | Select Rows - Limit ...、またはSELECTを実行した結果のResult Grid |
| SQLの入力・実行 | SQLエディターと実行ツールバー |
テーブル一覧、カラムの定義、行データの三つを分けて見ると、どの画面を開けばよいか判断しやすくなります。
SQLを実行する範囲を確認する
利用するDBを右クリックしてSet as Default Schemaを選ぶと、現在のSQLセッションでの既定のDBになります。SchemasではそのDB名が太字で表示されます。SQLで確認するなら、次のように書けます。
SELECT DATABASE() AS current_database, VERSION() AS server_version;
DATABASE()は現在選択されているDB名を返します。未選択ならNULLです。VERSION()で接続先のDBバージョンも確認できます。接続タイルの名前だけで、目的のDBを選んでいると思い込まないようにします。
SQLエディターには、選択部分を実行する操作と、カーソル位置のSQL文を実行する操作があります。
| 実行操作 | 対象 |
|---|---|
| 選択部分、または全体を実行 | 文字列を選択していればその範囲。未選択ならスクリプト全体 |
| カーソル位置のSQL文を実行 | カーソルが置かれているSQL文 |
例えば、次の二つを書いて、1文目だけを選択して実行すれば1文目だけが対象になります。選択を解除して全体実行すると、両方が対象です。
SELECT 1 AS first_value;
SELECT 2 AS second_value;
両方を実行した場合は、それぞれの結果を結果タブで確認します。この例の期待値は、1文目がfirst_value = 1、2文目がsecond_value = 2です。実行前にボタンのツールチップで対象を確認する癖を付けておくと、更新SQLなどが混ざったときにも取り違えを減らせます。
実行対象の違いは、SQL Query Toolbarの公式説明で確認できます。
少量のサンプルでテーブル確認とSQL実行をつなげる
ここからは、app_dbという既存の検証用DBへ、説明用のwb_demo_productsテーブルを作る例です。DB名は自分の検証用DBに読み替えてください。同名テーブルがまだ存在せず、テーブル作成・データ追加が許可されている専用の検証環境で使います。
まず、次のCREATE TABLEだけを実行します。
CREATE TABLE app_db.wb_demo_products (
id INT UNSIGNED NOT NULL,
name VARCHAR(100) NOT NULL,
price DECIMAL(10, 2) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB;
作成が成功したことを確認してから、次のINSERTを一度だけ実行します。繰り返すと主キーが重複します。作成に失敗した場合は、INSERTへ進まず原因を確認してください。
INSERT INTO app_db.wb_demo_products (id, name, price)
VALUES
(1, 'Sample Keyboard', 3000.00),
(2, 'Sample Cable', 800.00),
(3, 'Sample Mouse', 1500.00);
ここではpriceを円単位の価格とします。Schemasを更新し、app_db → Tables → wb_demo_products → Columnsをたどって、id、name、priceを確認します。Table Inspectorでは、それぞれ整数、文字列、固定小数点数の型になっているか見てみましょう。
SQLでカラムの情報を見る方法もあります。次のSHOW COLUMNSは構造の確認で、保存されている3件の商品の取得ではありません。
SHOW COLUMNS FROM app_db.wb_demo_products;
出力のFieldはカラム名、Typeはデータ型、NullはNULLの可否です。この定義では3列ともNULLを許可していないため、NullはNOになる想定です。表示項目の詳細は、SHOW COLUMNSの公式説明を参照してください。
SELECTを試す前にEXPLAINを確認する
テーブルの中身を取得するとき、特に初めて試すSQLや、対象件数が多そうなSQLでは、先に通常のEXPLAINで実行計画を見る習慣を付けておくとよいかと思います。
例えば、1000円以上の商品を取得するなら、まず次のEXPLAINだけを実行します。表形式で読むためにFORMAT=TRADITIONALを指定しています。
EXPLAIN FORMAT=TRADITIONAL
SELECT id, name, price
FROM app_db.wb_demo_products
WHERE price >= 1000.00
ORDER BY id
LIMIT 10;
表示されるのは商品の一覧ではなく、MySQLがどのようにデータを探す計画かという情報です。key、type、rowsなどを確認します。推定値から実行時間が分かるわけではなく、EXPLAINを付ければ安全性が保証されるという意味でもありません。
この例は3件しかない小さなテーブルなので、インデックス名やアクセス方法だけで良し悪しを判断する必要はありません。詳しい読み方は、MySQLのEXPLAIN入門の記事を参照してください。
計画を確認してから、EXPLAINを外したSELECTを実行します。
SELECT id, name, price
FROM app_db.wb_demo_products
WHERE price >= 1000.00
ORDER BY id
LIMIT 10;
このサンプルデータから求める期待結果は、次の2件です。MySQLでの実行結果を採取した表ではありません。
| id | name | price |
|---|---|---|
| 1 | Sample Keyboard | 3000.00 |
| 3 | Sample Mouse | 1500.00 |
EXPLAINと元のSELECTを同じタブに置く場合も、最初はEXPLAINの文だけを選んで実行します。全体実行して両方を続けて送ると、計画を確認する前にSELECTも実行されてしまいます。
また、EXPLAIN ANALYZEは対象SQLを実際に実行する別の機能です。事前に計画だけを確認したい場面で、通常のEXPLAINと取り違えないようにしてください。詳細は、MySQL公式のEXPLAINの説明で確認できます。
右クリックのSelect Rows - Limit ...はそのまま行を取得します。先に計画を見たい場合は、今回のようにSQLエディターへSELECTを書き、EXPLAINから確認します。
結果とエラーは別の場所で確認する
SELECTが返した列と行はResult Gridで確認します。一方、実行時のエラーやサーバーからの応答は、画面下部のOutputにあるAction Outputで確認します。結果が0件なのか、SQLが失敗したのかを分けて見るのが大事です。
例えばDB未選択のエラーなら、Schemasの既定のDBとSELECT DATABASE()を確認します。テーブルが見つからない場合は、DB名とテーブル名を確認します。今回のapp_db.wb_demo_productsのようにDB名を付けて書くと、参照するDBを明示できます。
取得件数が想定と違う場合は、SQLのWHEREやLIMITに加え、ツールバーの件数制限も確認します。Workbenchは件数制限の設定に応じてSELECTへLIMITを追加するため、少ない件数が表示されただけでテーブル全体を見終えたとは限りません。LIMITも、検索で調べる行数そのものを保証するものではありません。
表示と操作の詳細は、Result Gridの公式説明と、Output Panelの公式説明を参照してください。
まずはSchemasでテーブルとカラムを見つけ、Table Inspectorで構造を確認するところから始めればOKです。その後は、SQLの実行範囲を選び、EXPLAINで計画を確認してからSELECTを試す、という流れで進めると、画面の役割をつかみやすいかと思います。
奈良市を拠点に、27年以上の経験を持つフリーランスWebエンジニア、阿部辰也です。
これまで、ECサイトのバックエンド開発や業務効率化システム、公共施設の予約システムなど、多彩なプロジェクトを手がけ、企業様や制作会社様のパートナーとして信頼を築いてまいりました。
【制作会社・企業様向けサポート】
Webシステムの開発やサイト改善でお困りの際は、どうぞお気軽にご相談ください。小さな疑問から大規模プロジェクトまで、最適なご提案を心を込めてさせていただきます。
ぜひ、プロフィールやWeb制作会社様向け業務案内、一般企業様向け業務案内もご覧くださいね。
MySQLのWITH句入門:SELECTの結果を加工・集計する方法
2026.10.09
MySQLのWITH句を使って、SELECTの取得結果を加工・集計する方法を解説します。注文データを例に、CTE(共通テーブル式)の基本と複数CTEの書き方、サブクエリとの違い、利用時の注意点を紹介します。
MySQLのEXPLAIN入門:実行計画の読み方と遅いSQLの調べ方
2026.10.05
MySQLのEXPLAINの使い方と、key・type・rows・Extraなどの読み方を、注文検索の例で解説します。複合インデックスの改善候補を比較する手順や、推定値と実測の違い、LIMIT付きの検索を検証するときの注意点もまとめます。
Laravelのコードレビューで遅いSQLの候補を洗い出す
2026.10.02
Laravelのコードレビューで、ループ内のDBアクセスやEloquentのN+1、大量取得、検索条件とインデックスなど、性能問題につながりやすい箇所を候補として洗い出します。Laravelで発行SQLと実行時間を確認し、MySQLのEXPLAINや実データに近い環境での計測へつなげる方法を紹介します。コードレビューだけではSQLの実行時間を断定できない点も説明します。
XAMPPのMariaDBでERROR 1130が発生したときの復旧手順
2026.08.05
XAMPPのMariaDBでERROR 1130が発生し、phpMyAdminやCLIから接続できなくなった際の復旧手順を紹介します。接続先とプロセスを確認し、データディレクトリをバックアップした上で、復旧モードから破損したmysql.global_privを検査・修復し、通常起動後の接続確認まで行います。