SQLではデータの操作・定義・制御の3つができ、DML(データ操作言語)を使ってデータベースを操作する。
- CREATE(作成) :INSERT文
- READ(読み取り) :SELECT文
- UPDATE(更新) :UPDATE文
- DELETE(削除) :DELATE文
頭文字をとって「CRUD」や、「(SQLの)4大命令」とも呼ばれる。
INSERT文
INSERT文はテーブルに行(レコード)を追加するとき使う。
INSERT INTO テーブル名(列名1, 列名2, …)
VALUES (値1, 値2, …);
INTOと組み合わせて取得したいテーブル名を指定する。- テーブル名の後の列名を省略することもできるが、VALUES句では全ての列(カラム)の順番で値を指定する。
- VALUES句をカンマ(,)で区切ると、複数の行を一括で追加できる。
INSERT INTO customers (id, name, age) VALUES (3, ’John’, 20);
SELECT文
SELECT文はデータを取得するときに使う。
- SELECT文の記述順
SELECT 列名1, 列名2, ・・・
FROM テーブル名
[WHERE]
[GROUP BY]
[HAVING]
[ORDER BY]
SELECT name, age FROM customers
- SELECTの列名をアスタリスク(*)にすると、全ての列を指定できる。
- SELECTの列名をカンマ(,)で区切ると、複数の列を指定できる。
FROM句と組み合わせて取得したいテーブル名を指定する。
SELECT文の実行順序
SQLは記述した上から順に実行されるのではなく、
句ごとに決まった実行順序で処理される。
①FROM :テーブルの読み込み
②JOIN :テーブル同士の結合
③WHERE :取得条件で絞り込み
④GROUP BY : グループ化
⑤HAVING :④のグループから絞り込み
⑥SELECT :結果を表示するカラムを指定
⑦DISTINCT :⑥の結果から重複する行を除外
⑧ORDER BY :⑦の結果から並び替え
⑨LIMIT :⑧の結果から取得する件数を指定する
UPDATE文
UPDATE文はデータを書き換えるときに使う。
UPDATE テーブル名
SET 列名=値
WHERE 列名=値
- WHEREで行を指定しないと、全件更新される。
- SET句で列名=値を,(コンマ)で区切ると、複数の値を指定できる。
- 実行後は元に戻せない。→トランザクション処理
UPDATE customers SET name=’Mike’ ,age=22 WHERE id=3;
DELETE文
DELETE文は行(レコード)を削除するときに使う。
DELETE
FROM テーブル名
WHERE 列名=値;
- WHEREで行を指定しないと、全件更新される。
- 複数の行を指定する場合は、論理演算子(AND, OR, IN)を使う。
- 実行後は元に戻せない。→トランザクション処理
DELETE FROM customers WHERE id=3;
FROM句
テーブルを選択しデータの読み込みをする。
- JOIN句を使うと複数のテーブルを指定できる。
- 副問い合わせを指定でき、一時的なテーブルとして扱うことができる。
WHERE句
テーブル全体から条件の絞り込みをする。
検索する前に対象の行を絞る。
WHERE 条件式
- WHERE句を指定しないと、テーブル全体が処理対象になる。
全ての行(レコード)の更新など。 - SELECT、UPDATE、DELETE文で使える。
条件式は結果が必ず真か偽になるように指定する。
LIMIT句
結果から行数を制限する。
LIMIT 取得したい行数
OFFSET句と組み合わせて、先頭から何行スキップするかを指定できる。
(LIMIT句に2つの引数を渡すことで、OFFSET句を省略も可能)
SELECT name FROM customers LIMIT 10 OFFSET 5;
☀︎6〜15行目だけを取得できる。
AS句(エイリアス)
テーブル名やカラム名に一時的な別名をつけること。
- テーブル名が長いときや、複雑な結果に名前をつけたいときに使い、読みやすくできる。
- SELECT文の実行順序によって使える範囲がある。
(エイリアスが定義された後の句であれば使える。)