ぽかぽかコード日和

とっても暑い夏の日にプログラミングはじめました☀️

【SQL】DML文(INRERT・SELECT・UPDATE・DELETE)

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     :⑧の結果から取得する件数を指定する

集合演算
集計関数
SQLの関数

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文で使える。
  • 条件式は結果が必ず真か偽になるように指定する。

  • WHERE句の演算子

LIMIT句

結果から行数を制限する。

LIMIT 取得したい行数

  • OFFSET句と組み合わせて、先頭から何行スキップするかを指定できる。
    (LIMIT句に2つの引数を渡すことで、OFFSET句を省略も可能)
SELECT  name
 FROM  customers 
 LIMIT 10
 OFFSET  5;

☀︎6〜15行目だけを取得できる。

AS句(エイリアス

テーブル名やカラム名一時的な別名をつけること。

  • テーブル名が長いときや、複雑な結果に名前をつけたいときに使い、読みやすくできる。
  • SELECT文の実行順序によって使える範囲がある。
    エイリアスが定義された後の句であれば使える。)

参考にしたサイト