SQL命令文

命令文 説明 使用例
SELECT … FROM … テーブルからデータを選択する基本的なクエリ SELECT * FROM users;
→ usersテーブルの全ての列を取得する。
SELECT … FROM … WHERE … 条件に一致するデータを選択するクエリ SELECT name FROM users WHERE age > 30;
→ 30歳以上のname列のデータを取得する。
SELECT COUNT(…) FROM … 特定の列のレコード数を取得するクエリ SELECT COUNT(*) FROM users;
→ usersテーブルの全てのレコード数をカウントする。
SELECT COUNT(…) FROM … WHERE … 条件に一致するレコード数を取得 SELECT COUNT(*) FROM users WHERE age > 30;
→ 30歳以上のユーザーの数をカウントする。
ORDER BY … データを指定した列で並べ替える SELECT * FROM users ORDER BY age DESC;
→ 年齢の降順でユーザーを並べ替える。
GROUP BY … データを指定した列でグループ化する SELECT age, COUNT(*) FROM users GROUP BY age;
→ 年齢ごとのユーザー数を取得する。
INSERT INTO … VALUES … テーブルに新しいデータを挿入する INSERT INTO users (name, age) VALUES (‘John’, 25);
→ usersテーブルに新しいユーザーを挿入する。
UPDATE … SET … WHERE … 既存のデータを更新する UPDATE users SET age = 26 WHERE name = ‘John’;
→ Johnの年齢を26歳に更新する。
DELETE FROM … WHERE … 条件に一致するデータを削除する DELETE FROM users WHERE age < 18;
→ 18歳未満のユーザーを削除する。
INNER JOIN … ON … 両方のテーブルで一致するデータを結合 SELECT users.name, orders.amount FROM users INNER JOIN orders ON users.id = orders.user_id;
→ usersテーブルとordersテーブルを結合し、ユーザー名と注文額を取得する。
LEFT JOIN … ON … 左のテーブルの全てのデータと、右で一致するデータを結合 SELECT users.name, orders.amount FROM users LEFT JOIN orders ON users.id = orders.user_id;
→ 全てのユーザーとその注文額を取得、注文がない場合はNULLになる。
RIGHT JOIN … ON … 右のテーブルの全てのデータと、左で一致するデータを結合 SELECT users.name, orders.amount FROM users RIGHT JOIN orders ON users.id = orders.user_id;
→ 全ての注文とそれに関連するユーザーを取得、ユーザーがない場合はNULLになる。

その他

命令文 説明 使用例
DISTINCT 重複するデータを排除して一意のデータを取得 SELECT DISTINCT age FROM users;
→ 重複する年齢を排除して、一意の年齢だけを取得する。
LIMIT 取得するデータの行数を制限 SELECT * FROM users LIMIT 5;
→ 5行のデータを取得する。
HAVING GROUP BY で集約されたデータに条件を付ける SELECT age, COUNT(*) FROM users GROUP BY age HAVING COUNT(*) > 2;
→ 2人以上のユーザーがいる年齢のみを表示。
AS 列やテーブルに別名を付ける SELECT name AS username FROM users;
→ name列にusernameという別名を付けて表示する。
BETWEEN 範囲を指定してデータを取得する SELECT * FROM users WHERE age BETWEEN 20 AND 30;
→ 年齢が20〜30のユーザーを取得する。
IN 指定した値のリストに含まれるデータを取得 SELECT * FROM users WHERE age IN (25, 30, 35);
→ 25, 30, 35歳のユーザーを取得する。
LIKE 部分一致するデータを取得する SELECT * FROM users WHERE name LIKE ‘J%’;
→ Jで始まる名前のユーザーを取得する。
IS NULL NULL 値を持つデータを取得する SELECT * FROM users WHERE email IS NULL;
→ email がNULLのユーザーを取得する。
IS NOT NULL NULL ではないデータを取得する SELECT * FROM users WHERE email IS NOT NULL;
→ email が NULL ではないユーザーを取得する。
UNION 複数のクエリ結果を統合して取得する SELECT name FROM users UNION SELECT name FROM employees;
→ users と employees の両方から一意の名前を取得する。
UNION ALL 重複を許可してクエリ結果を統合する SELECT name FROM users UNION ALL SELECT name FROM employees;
→ users と employees の両方から名前を重複を含めて取得する。
EXISTS サブクエリの結果が存在するか確認する SELECT * FROM users WHERE EXISTS (SELECT 1 FROM orders WHERE users.id = orders.user_id);
→ 注文があるユーザーのみを取得する。
NOT EXISTS サブクエリの結果が存在しない場合のデータを取得 SELECT * FROM users WHERE NOT EXISTS (SELECT 1 FROM orders WHERE users.id = orders.user_id);
→ 注文がないユーザーを取得する。
CREATE TABLE 新しいテーブルを作成する CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(100), age INT);
→ usersテーブルを作成する。
ALTER TABLE 既存のテーブルに変更を加える ALTER TABLE users ADD email VARCHAR(255);
→ usersテーブルに email 列を追加する。
DROP TABLE テーブルを削除する DROP TABLE users;
→ usersテーブルを削除する。
TRUNCATE TABLE テーブル内の全てのデータを削除する(構造は保持) TRUNCATE TABLE users;
→ usersテーブルの全データを削除する。
CREATE INDEX インデックスを作成して検索を高速化する CREATE INDEX idx_users_name ON users(name);
→ usersテーブルのname列にインデックスを作成する。
DROP INDEX インデックスを削除する DROP INDEX idx_users_name ON users;
→ usersテーブルのname列に作成されたインデックスを削除する。
CASE 条件に基づいて値を返す SELECT name, CASE WHEN age > 30 THEN ‘senior’ ELSE ‘junior’ END AS rank FROM users;
→ 年齢が30以上のユーザーをsenior、それ以下をjuniorとして取得する。

投稿日

カテゴリー:

投稿者: