SQL実践の導入スライド

24 件(作成済み 5・導入不要 0・未作成 19・合計 20枚 / 5本)

レッスンの導入の索引へ戻る

SQL実践のコースサムネイル
SQL実践1レッスン

なぜ結合が必要か

導入スライド未作成
SQL実践のコースサムネイル
SQL実践2レッスン

INNER JOIN で表をつなぐ

導入スライド 4

JOIN で2つの表を噛み合わせる

users には注文が入っておらず、orders には名前が入っていません。両方を1つの結果で見るために、どの行とどの行が同じものを指すのかを ON で書きます。

SELECT u.name, o.item
FROM users u
users u左の表
JOIN orders o
orders o右の表
ON u.id = o.user_id
u.id = o.user_id何をそろえるか

結果

nameitem
佐藤
佐藤ペン
鈴木ノート
鈴木付箋
田中

田中 は注文が1件も無いので、結果から消えます。

消えた 田中 を残したいときに LEFT JOIN を使います。このあとの図解で切り替えます。

1 / 4

考えてみよう外しても進めます

users と orders をカンマで並べて FROM に書くと、3行と4行で何行になると思いますか。

選ぶと、この枚の中で答えと理由を確かめられます。

2 / 4

SQL実践 - INNER JOIN で表をつなぐ

つなぎ方で結果が変わる

つなぎ方を切り替えて、結果が何行になるか数えてください。

  • INNER は相手のいない 田中 が消える
  • LEFT は 田中 が残り、item に NULL が入る
  • カンマでつなぐと 3 × 4 で 12 行。線が全部と全部に引かれる
JOIN で表をつなぐ

3 / 4

SQL実践 - INNER JOIN で表をつなぐ

つなぎ方の早見

JOIN の種類は「相手がいない行をどうするか」の違いだけです。先に対応を覚えておくと、あとのレッスンで迷いません。

表をカンマで並べると CROSS JOIN と同じ結果になります。JOIN の ON を書き忘れた場合はエラーで止まりますが、カンマはエラーが出ないので、行数が急に増えたら真っ先に疑う場所です。

やりたいこと書き方
両方にある行だけINNER JOIN
左を全部残すLEFT JOIN
右を全部残すRIGHT JOIN
そろえる条件ON a.x = b.y
同じ列名でつなぐUSING (id)
総当たりCROSS JOIN

4 / 4

SQL実践のコースサムネイル
SQL実践3レッスン

LEFT/RIGHT OUTER JOIN

導入スライド未作成
SQL実践のコースサムネイル
SQL実践4レッスン

複数テーブルの結合

導入スライド未作成
SQL実践のコースサムネイル
SQL実践5レッスン

自己結合

導入スライド未作成
SQL実践のコースサムネイル
SQL実践6レッスン

集合演算 UNION/INTERSECT/EXCEPT

導入スライド未作成
SQL実践のコースサムネイル
SQL実践7レッスン

結合の実践演習

導入スライド未作成
SQL実践のコースサムネイル
SQL実践8レッスン

テーブル結合クイズ

導入スライド未作成
SQL実践のコースサムネイル
SQL実践9レッスン

サブクエリとは

導入スライド未作成
SQL実践のコースサムネイル
SQL実践10レッスン

WHERE句のサブクエリ

導入スライド 1

SQL実践 - WHERE句のサブクエリ

内側を先に解いて、その答えで絞る

手順を進めて、内側の戻り値が外側の比較相手になるところを見てください。

戻り値が複数なら = は使えません。内側が何行返すかで演算子が決まります。

内側を先に解いて、その答えで絞る

1 / 1

SQL実践のコースサムネイル
SQL実践11レッスン

FROM句のサブクエリ

導入スライド未作成
SQL実践のコースサムネイル
SQL実践12レッスン

SELECT句のサブクエリ

導入スライド未作成
SQL実践のコースサムネイル
SQL実践13レッスン

WITH句(CTE)の活用

導入スライド未作成
SQL実践のコースサムネイル
SQL実践14レッスン

サブクエリ実践クイズ

導入スライド未作成
SQL実践のコースサムネイル
SQL実践15レッスン

CREATE DATABASE と CREATE TABLE

導入スライド未作成
SQL実践のコースサムネイル
SQL実践16レッスン

データ型の選び方

導入スライド未作成
SQL実践のコースサムネイル
SQL実践17レッスン

INSERT で行を追加する

導入スライド 5

SQL実践 - INSERT で行を追加する

列と値は前から順に対応する

3つの場合を切り替えて、どこで対応が崩れるか見てください。

  • INSERT で書くのは、表の名前と、列の並びと、値の並びの3つ
  • 列と値は前から順に1対1で結ばれる
  • 数が合わない文は、実行される前に弾かれる
列と値の対応

1 / 5

作成ボタンの先で動いているもの

画面から見ると「作成する」を押しただけですが、その裏では3つの場所を順番に通っています。SQL が出てくるのは3番目です。

フロントエンド

入力された値をサーバーへ送る

サーバーサイド

受け取った値で INSERT 文を組み立てる

データベース

表に行を1本増やす

フロントエンド

返ってきた一覧を描き直す

このレッスンで書くのは3行目です。画面もサーバーも、最後はこの1文にたどり着きます。

2 / 5

どの表のどの列に、何を入れるか

INSERT は3つの部品でできています。表の名前、値を入れる列の名前、そして入れる値です。

INSERT INTO memos (name)
memosどの表に足すか
(name)値を入れる列
VALUES ('とまと')
'とまと'入れる値

memos

idname
1じゃがいも
2にんじん
3たまねぎ
4とまと

囲った行が増えた1本です。id は自動で採番されるので、書いていません。

列の並びと値の並びは前から順に対応します。数が合わないとエラーになります。

3 / 5

ここでつまずく

INSERT は形が単純なぶん、間違いもいつも同じところに出ます。

書いたことどうなるか

列名をまるごと省く

全部の列に値を並べる約束になる

文字列を裸で書く

列の名前だと解釈されてエラー

値の数が列より多い

実行されずにエラー

id を自分で書く

自動採番とぶつかることがある

エラーで止まるのはむしろ助かる側です。黙って入ってしまう間違いのほうが、あとで探すのに苦労します。

4 / 5

考えてみよう外しても進めます

memos の表に3行入っている状態で、同じ INSERT 文を2回実行するとどうなりますか。

選ぶと、この枚の中で答えと理由を確かめられます。

5 / 5

SQL実践のコースサムネイル
SQL実践18レッスン

UPDATE で行を書き換える

導入スライド 5

SQL実践 - UPDATE で行を書き換える

WHERE が決めるのは範囲

WHERE の行を外して、書き換わる行がどこまで広がるか見てください。

  • UPDATE は、何に書き換えるかの SET と、どれを書き換えるかの WHERE でできている
  • WHERE を省いた文はエラーにならない。表の全行が同じ値になって正常に終わる
  • 書く前に同じ条件で SELECT を流し、返ってきた行数を見るのが現場の手順
WHERE が決めるのは範囲

1 / 5

作成との違いは、どの行かを送ること

編集画面で直して送ったあとに通る場所は、作成のときと同じ3つです。違うのは、送るものと、データベースでやることの2点だけです。

INSERT のとき

送るのは値だけです。表に行が1本増えて、対象はその新しい行になります。

UPDATE のとき

値と、どの行かを一緒に送ります。既にある行の値が書き換わり、対象は WHERE で選んだ行になります。

「どの行か」を送っている点が作成との差です。これが文の中では WHERE になります。

2 / 5

SET が新しい値、WHERE が対象の行

UPDATE は2つの役割に分かれています。何に書き換えるかが SET、どれを書き換えるかが WHERE です。

UPDATE memos
SET name = 'とまと'
SET name = 'とまと'新しい値
WHERE id = 3
WHERE id = 3書き換える行

memos

idname
1じゃがいも
2にんじん
3とまと

3行目だけが書き換わりました。他の行には触れていません。

SET は列ごとにカンマで並べられます。触れなかった列の値はそのまま残ります。

3 / 5

WHERE を書き忘れると全行が変わる

UPDATE の WHERE は省略できます。省略した文はエラーになりません。表の全行が同じ値に書き換わったうえで、正常終了します。

UPDATE memos
UPDATE memos対象は表そのもの
SET name = 'とまと'

memos

idname
1とまと
2とまと
3とまと

3行とも同じ値になりました。元の値はもう表のどこにも残っていません。

書く前に同じ条件で SELECT を流し、返ってきた行数を見てから UPDATE に直すのが、現場で使われている手順です。

4 / 5

考えてみよう外しても進めます

UPDATE memos SET name = 'とまと' WHERE id = 99; を、id が 99 の行が無い表に実行するとどうなりますか。

選ぶと、この枚の中で答えと理由を確かめられます。

5 / 5

SQL実践のコースサムネイル
SQL実践19レッスン

DELETE で行を消す

導入スライド 5

SQL実践 - DELETE で行を消す

消える単位は文で変わる

3つの文を切り替えて、消える単位がどう変わるか見てください。

  • DELETE が消すのは行。WHERE で選んだぶんだけ表から無くなる
  • WHERE を省くと全行が消える。それでもエラーにはならない
  • DROP TABLE が消すのは表そのもの。列の名前も一緒に消える
どこまで消えるか

1 / 5

更新との違いは、戻せないこと

通る場所は作成や更新と同じです。違うのは、送るものが減ることと、やり直しが効かないことの2点です。

UPDATE のとき

新しい値を送ります。行は表に残るので、書き戻せば元に戻ります。

DELETE のとき

値は要らず、どの行かだけを送ります。行が表から取り除かれ、戻せるのはバックアップからだけです。

消えた行は SELECT で探しても出てきません。だから消す前に、本当に消すのかを決めておきます。

2 / 5

DELETE には SET が無い

消すのに新しい値は要らないので、DELETE にあるのは「どの表か」と「どの行か」の2つだけです。

DELETE FROM memos
memosどの表から
WHERE id = 3
WHERE id = 3消す行

memos

idname
1じゃがいも
2にんじん

3行目が表から消えました。id の 3 が空くだけで、下の行が繰り上がることはありません。

列を消すのは DELETE ではありません。あれは表の形を変える話なので ALTER TABLE の仕事です。

3 / 5

SQL実践 - DELETE で行を消す

消す前に決めておくこと

業務のデータは、消すと困るものが混ざっています。本当に取り除くのか、消えたことにするだけなのかを先に決めます。

削除フラグのやり方を論理削除と呼びます。表からは消えないので、以降の SELECT では毎回そのフラグで絞ることになります。

やり方向いている場面
DELETE で本当に消す作業中の下書きなど、残す価値が無いもの
削除フラグを立てる注文履歴など、あとから見返すもの
WHERE を省く無い。全行が消える
TRUNCATE を使う表を空にすると決めているとき

4 / 5

考えてみよう外しても進めます

注文履歴の表から、退会した人の注文を DELETE で消しました。困るのはどれですか。

選ぶと、この枚の中で答えと理由を確かめられます。

5 / 5

SQL実践のコースサムネイル
SQL実践20レッスン

物理削除と論理削除

導入スライド未作成
SQL実践のコースサムネイル
SQL実践21レッスン

ALTER TABLE で構造を変更する

導入スライド未作成
SQL実践のコースサムネイル
SQL実践22レッスン

制約 (NOT NULL / UNIQUE / DEFAULT)

導入スライド未作成
SQL実践のコースサムネイル
SQL実践23レッスン

TRUNCATE と DROP

導入スライド未作成
SQL実践のコースサムネイル
SQL実践24レッスン

DDL / DML 実践クイズ

導入スライド未作成