SQL(Structured Query Language)は、リレーショナルデータベースからデータを操作するための言語です。基本的なSQLの操作には、データの作成、読み取り、更新、削除(CRUD)が含まれます。
リレーショナルデータベース
リレーショナルデータベースは、エクセルの表のような構造を持ち、関連する複数の表(テーブル)から構成されています。各テーブルには、名前が付いた列(カラム)とデータが入った行(レコード)があります。
基本的なSQLクエリ
- SELECT: データを取得する
SELECT name, age FROM consumer;
- WHERE: 条件に基づいてデータをフィルタリングする.
SELECT * FROM consumer WHERE age > 20;
- ORDER BY: データを並び替える
SELECT * FROM consumer ORDER BY age DESC;
- INSERT: 新しいデータを追加する
INSERT INTO consumer (name, age) VALUES ('John', 30);
- UPDATE: 既存のデータを更新する
UPDATE consumer SET age = 31 WHERE name = 'John';
- DELETE: 既存のデータを削除する
DELETE FROM consumer WHERE age < 18;
高度なクエリ操作
- JOIN: 複数のテーブルを結合してデータを取得する
SELECT consumer.name, orders.amount FROM consumer JOIN orders ON consumer.id = orders.consumer_id;
- GROUP BY: 特定のカラムに基づいてデータをグループ化する
SELECT age, COUNT(*) FROM consumer GROUP BY age;
- HAVING: グループ化したデータに対して条件を適用する
SELECT age, COUNT(*) FROM consumer GROUP BY age HAVING COUNT(*) > 1;
データベースの設計と管理
- 正規化: データの一貫性を保つためにデータベースを構造化するプロセス
- テーブル作成: 新しいテーブルを定義する
CREATE TABLE consumer ( id INT PRIMARY KEY, name VARCHAR(100), age INT );
- テーブルの変更: 既存のテーブルに列を追加したり、削除したりする
ALTER TABLE consumer ADD COLUMN email VARCHAR(100); ALTER TABLE consumer DROP COLUMN email;
- 制約の追加: データの整合性を確保するための制約を設定する
ALTER TABLE consumer ADD CONSTRAINT chk_age CHECK (age >= 18);
SQLの実行順序
SQLクエリの実行順序は、以下のように進行します:
- FROM: テーブルを選択
- WHERE: 行をフィルタリング
- GROUP BY: 行をグループ化
- HAVING: グループをフィルタリング
- SELECT: 列を選択
- ORDER BY: 結果を並べ替え
- LIMIT: 結果の行数を制限
まとめ
SQLは、リレーショナルデータベースを操作するための強力なツールです。基本的なクエリから始めて、高度なクエリやデータベースの設計と管理まで幅広く学ぶことで、データベースの効率的な利用が可能になります。