•10 min read

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

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

CREATE DATABASE

Click to reveal
MySQL
新しいデータベースを作成します: CREATE DATABASE zoo_db; その後の操作で選択するには、USE zoo_db; を続ける必要があります。

CREATE DATABASE

MySQL

FOREIGN KEY

Click to reveal
MySQL
テーブル間の参照整合性を強制します: FOREIGN KEY (habitat_id) REFERENCES habitat(id)。孤立したレコードを防ぎます。

FOREIGN KEY

MySQL

GROUP BY

Click to reveal
MySQL
列でグループ化し、グループごとに集計関数(COUNT、SUM、AVG)を許可します。グループをフィルタリングするためにHAVINGと組み合わせて使用されることが多いです。

GROUP BY

MySQL

INNER JOIN

Click to reveal
MySQL
両方のテーブルで一致する値を持つ行のみを返します: INNER JOIN habitat ON animal.habitat_id = habitat.id。最も一般的な結合タイプです。

INNER JOIN

MySQL

LEFT JOIN

Click to reveal
MySQL
左側のテーブルのすべての行と、右側のテーブルの一致する行を返します。一致しない右側の列はNULLになります。オプションの関係に使用します。

LEFT JOIN

データベースを使い始めるとき、通常最初に遭遇するのはMySQLでしょう。これは実績があり、小規模なサイドプロジェクトから大規模なエンタープライズアプリケーションまで、あらゆるものを支えています。

分厚い教科書を読む代わりに、このガイドでは、80%の時間を占める20%のコマンドについて解説します!

Audio Briefing
0:00 / 0:00
クイックスタート

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)
);

Advertisement

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をマスターするには、筋肉の記憶が必要です。ターミナルを開いて、テーブルの作成やデータの結合を自然にできるようになるまで練習しましょう!

関連記事
MySQL Database SQL

こちらもおすすめ

Share this article:

Stay Updated

Get the latest posts delivered straight to your inbox.

Free Developer Utilities

Free In-Browser Developer Tools

Clean AI CLI logs, build cron expressions, decode JWTs, and calculate chmod permissions offline.

Explore Tools
Advertisement