SELECT文と基本操作
SELECT文と基本操作
Section titled “SELECT文と基本操作”SQLの基本であるSELECT文と、データの取得・操作の基本を解説します。
SELECT文の基本構文
Section titled “SELECT文の基本構文”基本的なSELECT文
Section titled “基本的なSELECT文”-- すべてのカラムを取得SELECT * FROM users;
-- 特定のカラムを取得SELECT id, name, email FROM users;
-- カラムにエイリアスを付けるSELECT id AS user_id, name AS user_name FROM users;WHERE句による条件指定
Section titled “WHERE句による条件指定”-- 条件に合う行を取得SELECT * FROM users WHERE age >= 18;
-- 複数の条件を組み合わせるSELECT * FROM usersWHERE age >= 18 AND status = 'active';
-- IN句を使用SELECT * FROM usersWHERE id IN (1, 2, 3, 4, 5);
-- LIKE句を使用(パターンマッチング)SELECT * FROM usersWHERE name LIKE 'A%'; -- Aで始まる名前ORDER BYによる並び替え
Section titled “ORDER BYによる並び替え”-- 昇順で並び替えSELECT * FROM users ORDER BY name ASC;
-- 降順で並び替えSELECT * FROM users ORDER BY created_at DESC;
-- 複数のカラムで並び替えSELECT * FROM usersORDER BY status ASC, created_at DESC;LIMITによる件数制限
Section titled “LIMITによる件数制限”-- 最初の10件を取得SELECT * FROM users LIMIT 10;
-- オフセットを指定(ページネーション)SELECT * FROM users LIMIT 10 OFFSET 20; -- 21-30件目を取得JOINによる結合
Section titled “JOINによる結合”INNER JOIN
Section titled “INNER JOIN”-- ユーザーと注文を結合SELECT u.name, o.amount, o.created_atFROM users uINNER JOIN orders o ON u.id = o.user_id;LEFT JOIN
Section titled “LEFT JOIN”-- すべてのユーザーを取得(注文がないユーザーも含む)SELECT u.name, o.amountFROM users uLEFT JOIN orders o ON u.id = o.user_id;RIGHT JOIN
Section titled “RIGHT JOIN”-- すべての注文を取得(ユーザーが存在しない注文も含む)SELECT u.name, o.amountFROM users uRIGHT JOIN orders o ON u.id = o.user_id;COUNT、SUM、AVG、MAX、MIN
Section titled “COUNT、SUM、AVG、MAX、MIN”-- ユーザー数を取得SELECT COUNT(*) FROM users;
-- 条件に合うユーザー数を取得SELECT COUNT(*) FROM users WHERE status = 'active';
-- 合計金額を取得SELECT SUM(amount) FROM orders;
-- 平均金額を取得SELECT AVG(amount) FROM orders;
-- 最大金額を取得SELECT MAX(amount) FROM orders;
-- 最小金額を取得SELECT MIN(amount) FROM orders;GROUP BYによるグループ化
Section titled “GROUP BYによるグループ化”-- ユーザーごとの注文数を取得SELECT user_id, COUNT(*) AS order_countFROM ordersGROUP BY user_id;
-- ユーザーごとの合計金額を取得SELECT user_id, SUM(amount) AS total_amountFROM ordersGROUP BY user_id;HAVINGによるグループのフィルタリング
Section titled “HAVINGによるグループのフィルタリング”-- 注文数が5件以上のユーザーを取得SELECT user_id, COUNT(*) AS order_countFROM ordersGROUP BY user_idHAVING COUNT(*) >= 5;スカラーサブクエリ
Section titled “スカラーサブクエリ”-- 各ユーザーの最新注文日を取得SELECT id, name, (SELECT MAX(created_at) FROM orders WHERE user_id = users.id) AS last_order_dateFROM users;相関サブクエリ
Section titled “相関サブクエリ”-- 平均以上の金額の注文を取得SELECT *FROM orders o1WHERE amount > ( SELECT AVG(amount) FROM orders o2 WHERE o2.user_id = o1.user_id);INSERT、UPDATE、DELETE
Section titled “INSERT、UPDATE、DELETE”INSERT
Section titled “INSERT”-- 1行を挿入INSERT INTO users (name, email, age)VALUES ('Alice', 'alice@example.com', 25);
-- 複数行を挿入INSERT INTO users (name, email, age)VALUES ('Bob', 'bob@example.com', 30), ('Charlie', 'charlie@example.com', 22);UPDATE
Section titled “UPDATE”-- 条件に合う行を更新UPDATE usersSET age = 26, status = 'active'WHERE id = 1;
-- すべての行を更新(注意が必要)UPDATE usersSET updated_at = CURRENT_TIMESTAMP;DELETE
Section titled “DELETE”-- 条件に合う行を削除DELETE FROM users WHERE id = 1;
-- すべての行を削除(注意が必要)DELETE FROM users;SELECT文と基本操作のポイント:
- SELECT文: データの取得
- WHERE句: 条件によるフィルタリング
- JOIN: 複数テーブルの結合
- 集約関数: COUNT、SUM、AVGなど
- GROUP BY: グループ化
- サブクエリ: クエリ内のクエリ
- INSERT/UPDATE/DELETE: データの操作
基本的なSQL操作を理解することで、効率的にデータを操作できます。