MySQLチートシート:実用的なクエリ集

Table of Contents
CREATE DATABASE
CREATE DATABASE
FOREIGN KEY
FOREIGN KEY
GROUP BY
GROUP BY
INNER JOIN
INNER JOIN
LEFT JOIN
LEFT JOIN
データベースを使い始めるとき、通常最初に遭遇するのはMySQLでしょう。これは実績があり、小規模なサイドプロジェクトから大規模なエンタープライズアプリケーションまで、あらゆるものを支えています。
分厚い教科書を読む代わりに、このガイドでは、80%の時間を占める20%のコマンドについて解説します!
クイックスタート
MySQLがインストールされていませんか?Dockerを使ってすぐに起動できます。
docker run --name mysql-dev -e MYSQL_ROOT_PASSWORD=secret -d mysql
1. データベースとテーブル
データベースの管理
mysql -u root -pでターミナル経由で接続します。
データベースを作成して選択します。
CREATE DATABASE zoo_db;
USE zoo_db;
リレーションシップを持つテーブルの作成
データの整合性を確保するために**外部キー(Foreign Keys)**を使用しましょう!
CREATE TABLE habitat (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(64));
CREATE TABLE animal (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(64),
habitat_id INT,
FOREIGN KEY (habitat_id) REFERENCES habitat(id)
);
2. データ操作(CRUD)
| 操作 | 構文 | 重要なポイント |
|---|---|---|
| INSERT | INSERT INTO table (col) VALUES (val) | 自動インクリメントIDは自動的に処理されます |
| UPDATE | UPDATE table SET col=val WHERE condition | 常にWHERE句を使用してください! |
| DELETE | DELETE FROM table WHERE condition | WHEREなし = 全ての行を削除! |
| SELECT | SELECT col1, col2 FROM table WHERE condition | * = 全ての列(本番環境では避ける) |
INSERT INTO habitat (name) VALUES ('River'), ('Forest');
UPDATE animal SET name = 'Quack' WHERE id = 2;
DELETE FROM animal WHERE id = 1;
常にWHEREを使用してください!
UPDATEまたはDELETEコマンドをWHERE句なしで実行すると、テーブル内のすべての行が変更または削除されます。常にクエリを再確認してください!
3. クエリと集計
GROUP BYの力
| 句 | 目的 | 例 |
|---|---|---|
| SELECT | 返す列 | species, AVG(age) |
| WHERE | グループ化する前に列をフィルタリングする | WHERE id != 3 |
| GROUP BY | 列でグループ化する | GROUP BY species |
| HAVING | 集計後にグループをフィルタリングする | HAVING AVG(age) > 3 |
| ORDER BY | 最終結果をソートする | ORDER BY AVG(age) DESC |
各動物種の平均年齢を知りたいですか?
SELECT species, AVG(age) as average_age
FROM animal
WHERE id != 3
GROUP BY species
HAVING AVG(age) > 3
ORDER BY AVG(age) DESC;
この強力なクエリは、フィルタリング、グループ化、集計、グループのフィルタリング、そして最終結果のソートを行います!
テーブルの結合
| 結合タイプ | 結果 | 使用するケース |
|---|---|---|
| INNER JOIN | 両方から一致する行のみ | 必須のリレーションシップ |
| LEFT JOIN | 左側のすべて + 一致する右側(一致しない場合はNULL) | オプションのリレーションシップ |
| RIGHT JOIN | 右側のすべて + 一致する左側(一致しない場合はNULL) | めったに使用されない(代わりにテーブルを反転させる) |
| CROSS JOIN | デカルト積(すべての組み合わせ) | テストデータの生成 |
2つのテーブルからデータを結合し、動物の名前と生息地の名前を一緒に表示するには:
SELECT animal.name AS animal_name, habitat.name AS habitat_name
FROM animal
INNER JOIN habitat ON animal.habitat_id = habitat.id;
習うより慣れろ
MySQLをマスターするには、筋肉の記憶が必要です。ターミナルを開いて、テーブルの作成やデータの結合を自然にできるようになるまで練習しましょう!
関連記事
- REST API vs GraphQL — データ層にどちらを使用すべきか
- モダンなPython開発環境 — Pythonのデータベースツール
こちらもおすすめ
Free In-Browser Developer Tools
Clean AI CLI logs, build cron expressions, decode JWTs, and calculate chmod permissions offline.
Related Articles
PostgreSQLのVACUUMとインデックス肥大化:検知、軽減、そして自動チューニング
PostgreSQLのテーブルとインデックスの肥大化を診断・解消します。自動バキュームのチューニング方法、pg_repackによるゼロダウンタイムでの再構築、MVCCの可視性マップまでを解説します。
Read more
本番環境のSQLite: WALモード、高並行性、そして実践的なPRAGMA設定
高スループットな本番環境でSQLiteをマスターしましょう。先行書き込みログ(WAL)、busy_timeoutのチューニング、読み書きの同時実行性、そして実用的なベンチマークについて解説します。
Read more
AIエージェントのメモリ構造: ベクターストア統合
短期ローリングウィンドウ、長期ベクターストア、状態永続化を用いた多層AIエージェントメモリシステム構築のためのアーキテクチャガイド。
Read more