Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
1 第3回バックエンド勉強会 2023.10.04 rare0b 速習SQL
Slide 2
Slide 2 text
2 目次 1. はじめに 2. 基本構文 3. その他Tips
Slide 3
Slide 3 text
3 はじめに
Slide 4
Slide 4 text
4 ● 放送大学(通信制大学) 情報コース 3年 ● 大学在学中、1年半の社会人経験有り ● 元データベース管理者 ● SQL Roadmap全部分かるのが自慢 https://roadmap.sh/sql ● 最近はReact/Go [会員 バックエンド] れあ 自己紹介 はじめに
Slide 5
Slide 5 text
5 話すこと はじめに ● INSERT、UPDATE、DELETEも基礎はSELECT(思想強) ○ SELECTわかればなんとかなる ● 句を列挙してるだけ ○ 丁寧な実行結果添えたかった ○ 体力尽きた SELECT文の話
Slide 6
Slide 6 text
6 表、行、列 はじめに 行(レコード)(件) 列(カラム) 表(テーブル)
Slide 7
Slide 7 text
7 基本構文
Slide 8
Slide 8 text
8 1. SELECT a. 集約関数 2. FROM a. JOIN 3. WHERE 4. GROUP BY 5. HAVING 6. ORDER BY 7. 集合演算 一覧 基本構文
Slide 9
Slide 9 text
9 ● SELECT 列名1(, 列名2, …) ● SELECT * は全列取得 ● 冒頭に表名or表別名をつけると どの表の列か明示できる ○ u.usernameのu. 列を選ぶ SELECT 基本構文
Slide 10
Slide 10 text
10 ● SUM(合計)、AVG(平均) …数値型のみ ● MIN(最小値)、MAX(最大値) …日付型、文字列型なども可 ● COUNT(行数) …型によらず、集約後の行数を返す 集約方法を指定 集約関数 SELECT
Slide 11
Slide 11 text
11 ● FROM 表名1(, 表名2, …) ○ 表名2以降は JOIN句で指定することが多い ● 表別名をつけられる ○ users uのu 表を選ぶ FROM 基本構文
Slide 12
Slide 12 text
12 ● INNER JOIN…条件一致行 ● LEFT OUTER JOIN…条件一致行+条件不一致の左側全行 (右側しかない列はNULLが入る) ● RIGHT OUTER JOIN…条件一致行+条件不一致の右側全行 (左側しかない列はNULLが入る) ● FULL OUTER JOIN…条件一致行+条件不一致の左右全行 (片側しかない列はNULLが入る) ● CROSS JOIN…すべての組み合わせ行、いわゆるデカルト積、 JOIN句の基礎 ● 自己結合…同じ表を2つ以上使う結合、違う表別名をつけて同じ表を別の表のように扱う 列をつけ足す JOIN FROM 「左側」はFROMで先に指定した方 可読性のため基本は左側結合 (右側結合を使わない )
Slide 13
Slide 13 text
13 ● 等号、不等号 ○ 不等号は<>か!= ○ BETWEEN a AND bでa以上b以下 ● IN、NOT IN (値1(, 値2, …)) ● IS NULL、IS NOT NULL ● EXISTS、NOT EXISTS 行を選ぶ WHERE 基本構文
Slide 14
Slide 14 text
14 ● LIKE '%abc%’ ○ %は任意の文字列 ○ ‘%abc’なら前方曖昧一致、 ’abc%'なら後方曖昧一致 ● ANY、ALL…存在、全称 ● AND、OR…複数条件 行を選ぶ WHERE 基本構文
Slide 15
Slide 15 text
15 ● GROUP BY 列名1(, 列名2, …) ● 指定した列の値が同じ行を集約して それぞれ集約関数を適用する ● 右の場合、 user_idごとに、wallet表のamountの合計 を求めている 列の値が同じ行を集約 GROUP BY 基本構文
Slide 16
Slide 16 text
16 ● 集約関数の条件指定を書ける ● 他に書ける内容はWHEREと同じ ● WHEREに書けることはWHEREに書く ○ 先に行を削れば GROUP BYの効率が良くなる 行を選ぶ(GROUP BYの後) HAVING 基本構文
Slide 17
Slide 17 text
17 ● ORDER BY 列名1(, 列名2, …) ● デフォルト昇順 降順にしたいときは 列名の後にDESC指定 ● SELECTにない列名も 指定できる 行を並び替え ORDER BY 基本構文
Slide 18
Slide 18 text
18 ● UNION、UNION ALL…行をつけ足す ○ UNIONは重複削除&ソートされる ○ UNION ALLはつけ足すだけ ● EXCEPT…行を引く ● INTERSECT…共通行を取得 行を足し引き 集合演算 基本構文 画像出典: https://hrzine.jp/article/detail/249
Slide 19
Slide 19 text
19 1. SELECT a. 集約関数 2. FROM a. JOIN 3. WHERE 4. GROUP BY 5. HAVING 6. ORDER BY 7. 集合演算 一覧(再掲) 基本構文
Slide 20
Slide 20 text
20 その他Tips
Slide 21
Slide 21 text
21 1. FROM 2. WHERE 3. GROUP BY 4. HAVING 5. SELECT 6. ORDER BY FROMが最初、SELECTは最後 実行順序 その他Tips
Slide 22
Slide 22 text
22 ● 手元で確認するとき何かと便利 ○ OFFSETも ● GORM(GoのORM)で内部的に使用されている ○ 1件のみ取ってくる想定の SQL 出力件数を指定 LIMIT その他Tips
Slide 23
Slide 23 text
23 ● サブクエリとも言う ● どの句にも書ける ○ よくある使い方は、他の SELECT結果からWHEREで絞り込む、など ● 相関サブクエリができたら一人前 (独断と偏見) 主軸のSELECT以外のSELECT文 副問合せ その他Tips
Slide 24
Slide 24 text
24 ● 他の行を参照する処理が簡単にかける ○ 1行前を取得、移動平均を取得、列値のランキング取得、など ● モダンめな技術 ● 気合があればサブクエリでも書ける ○ 計算速度はwindow関数の勝ち 表を俯瞰した演算ができる window関数その他Tips
Slide 25
Slide 25 text
25 サンプルデータベース(PostgreSQL) https://github.com/rare0b/postgres-practice