0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【SQL】初心者のためのSQLメモ

Last updated at Posted at 2025-11-07

概要(SQL とは)

構造化照会言語 (SQL) は、リレーショナルデータベースに情報を格納および処理するためのプログラミング言語です。リレーショナルデータベースは、情報を表形式で格納します。行と列は、さまざまなデータ属性と、データ値間のさまざまな関係を表します。SQL ステートメントを使用して、データベースから情報を格納、更新、削除、検索、および取得できます。また、SQL を使用して、データベースのパフォーマンスを維持したり、最適化したりすることもできます。引用:© 2024, Amazon Web Services

1. データを取得する(SELECT)

▶ 基本構文

SELECT カラム名 FROM テーブル名;

▶ すべてのデータを取得

SELECT * FROM users;

→ 「users」テーブルのすべてのカラムを取得します。

▶ 特定のカラムを取得

SELECT name, age FROM users;

→ 「name」と「age」だけを取り出します。

▶ 計算式を使う

SELECT name, age * 2 AS double_age FROM users;

→ 「年齢 × 2」を「double_age」という名前で表示します。

▶ 重複を除く

SELECT DISTINCT country FROM users;

→ 重複しない国名だけを取得します。


2. データを作成する(INSERT)

▶ 基本構文

INSERT INTO テーブル名 (カラム名1, カラム名2)
VALUES (1, 2);

▶ 例

INSERT INTO users (name, age)
VALUES ('Alice', 25);

→ 新しいユーザー「Alice(25歳)」を追加します。


3. データを更新する(UPDATE)

▶ 基本構文

UPDATE テーブル名
SET カラム名 = 新しい値
WHERE 条件;

▶ 例

UPDATE users
SET age = 26
WHERE name = 'Alice';

→ 名前が「Alice」の人の年齢を26に更新します。


4. データを削除する(DELETE)

▶ 基本構文

DELETE FROM テーブル名
WHERE 条件;

▶ 例

DELETE FROM users
WHERE name = 'Alice';

→ 「Alice」のデータを削除します。


5. データを集計する(GROUP関数)

関数 内容
COUNT(カラム) 件数を数える COUNT(*) AS num
SUM(カラム) 合計を出す SUM(price)
AVG(カラム) 平均を出す AVG(age)
MAX(カラム) 最大値を出す MAX(score)
MIN(カラム) 最小値を出す MIN(score)

▶ 例:グループごとに件数を数える

SELECT country, COUNT(*) AS num
FROM users
GROUP BY country;

→ 国ごとにユーザーの人数を集計します。


6. データの条件を指定する(WHERE / HAVING)

▶ WHERE:行ごとに条件を絞る

SELECT * FROM users
WHERE age >= 20 AND country = 'Japan';

→ 20歳以上かつ日本のユーザー。

▶ HAVING:集計結果に条件をつける

SELECT country, COUNT(*) AS num
FROM users
GROUP BY country
HAVING COUNT(*) >= 3;

→ 3人以上のユーザーがいる国を表示。

▶ 条件式

条件式 意味
IS NULL / IS NOT NULL 値がNULLかどうか
AND / OR 条件の組み合わせ
LIKE '%文字%' 部分一致検索
<> 等しくない(≠)
IN (サブクエリ) 特定の集合に含まれるか

▶ サブクエリ例

SELECT name
FROM users
WHERE id IN (
  SELECT user_id FROM orders WHERE total > 1000
);

→ 合計金額1000以上の注文をしたユーザー名を取得。


7. 並べ替えと件数制限

▶ 並べ替え

SELECT * FROM users
ORDER BY age DESC;

→ 年齢の高い順に表示。

オプション 説明
ASC 昇順(小さい→大きい)
DESC 降順(大きい→小さい)

▶ 件数を制限する

SELECT * FROM users
LIMIT 5;

→ 上位5件だけ取得。


8. テーブルを結合する(JOIN)

▶ INNER JOIN(内部結合)

SELECT A.name, B.title
FROM users AS A
INNER JOIN books AS B
ON A.id = B.user_id;

→ 両方のテーブルで「対応するデータ」があるものだけを取得。

▶ LEFT JOIN(左外部結合)

SELECT A.name, B.title
FROM users AS A
LEFT JOIN books AS B
ON A.id = B.user_id;

→左側(users)のすべてのデータを取得。
(対応する右側(books)がなければ NULL)

▶ RIGHT JOIN(右外部結合)

SELECT A.name, B.title
FROM users AS A
RIGHT JOIN books AS B
ON A.id = B.user_id;

→右側(books)のすべてのデータを取得。
(左側(users)に対応がなければ NULL)

▶ FULL OUTER JOIN(完全外部結合)

SELECT A.name, B.title
FROM users AS A
FULL OUTER JOIN books AS B
ON A.id = B.user_id;

→左右どちらかに存在するデータをすべて取得。
(どちらかが存在しない場合は NULL)

▶ CROSS JOIN(クロス結合)

SELECT A.name, B.title
FROM users AS A
CROSS JOIN books AS B;

→両テーブルの全データを組み合わせて表示。

▶ JOINまとめ表

JOINの種類 表示されるデータ NULLが入る側 MySQL対応
INNER JOIN 両方に共通する行のみ なし
LEFT JOIN 左テーブルのすべて
RIGHT JOIN 右テーブルのすべて
FULL OUTER JOIN 両方のすべて どちらも ×(UNIONで代用)
CROSS JOIN 全組み合わせ なし

学習におすすめのサイト

学習におすすめの書籍

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?