Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
非エンジニアのSQL入門
Search
ham
May 18, 2021
0
60
非エンジニアのSQL入門
ham
May 18, 2021
Tweet
Share
More Decks by ham
See All by ham
Platform Engineeringのエッセンスを小規模な開発組織に取り入れた事例紹介
ham0215
8
1.5k
開発者の定量・定性データを組み合わせて開発者体験を把握するための取り組み
ham0215
4
610
アジャイルを始めるための基礎を固める
ham0215
1
76
開発者体験を意識した開発チームの生産性向上の取り組み
ham0215
3
840
MySQLのViewを活用した安全なマルチテナントの実現方法
ham0215
2
740
開発パフォーマンスを最大化するための開発体制
ham0215
7
1.6k
今こそ思い出すGraphQLの特徴
ham0215
0
160
DevOpsメトリクスとアウトカムの接続にトライ!開発プロセスを通して計測できるメトリクスの活用方法
ham0215
2
490
CIは5分以内!素早い開発サイクルを支えるCI
ham0215
1
3.9k
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Speed Design
sergeychernyshev
24
610
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Building an army of robots
kneath
302
43k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Making Projects Easy
brettharned
115
5.9k
How to Think Like a Performance Engineer
csswizardry
20
1.1k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
Transcript
非エンジニアのSQL入門 2020/02/08 ham
はじめに データドリブンと言われるようになって久しい今日この頃、営業や企画など非エ ンジニアの方もSQLを駆使してデータを取得している場面をよく目にするように なりました。 ただ、SQLとかデータベースとかハードル高いよと感じている方も多いと思いま す。 しかしデータを参照するためのSQLだけであればすごく簡単に習得できるので是 非チャレンジしてみてください。
前提条件 • SQLを実行してデータを取得できる環境があり、エンジニア以外もそこにア クセスできること ◦ そもそもデータベースを使っていない場合は対象外です ◦ データドリブンを掲げているのであれば参照専用の環境があるはずです • SQLを毎回書いてデータを取得するのはアドホックなデータを取得したい時
です。定型データはミスなく簡単に取得できるようにシステム化してもらい ましょう。
データについて データは「テーブル」と呼ばれる箱に入っています。テーブルは「カラム」と呼 ばれるデータ項目を持っています。 e.g.) テーブル: users. カラム: id / name
/ email users id name email 1 伊藤一郎
[email protected]
2 鈴木太郎
[email protected]
3 伊藤二郎
[email protected]
データについて データベースを使っているアプリケーションでは複数のテーブルを使ってデータ を保持しています。 保持しているデータはテーブルやカラムの情報がわからないと抽出できないの で、事前にテーブル定義を入手しておきましょう。 (テーブル定義が存在しない場合は知っている人に作ってもらいましょう)
データ取得の基本 データ取得のSQLは下記の構文で記載します。SQLは;までを1つの文章と判断し ます。そのためキーワードとキーワードの間に改行やスペースを入れてもOKで す。 select [参照したいカラム1, カラム2, …] from [テーブル名]
where [抽出条件] ;
参照したいカラム 参照したいカラムを指定します。 usersテーブルからnameとemailのデータを取得します。 select name, email from users ;
条件 whereを指定することで条件に合致したデータだけを取得することができます。 usersテーブルから’鈴木一郎’のデータを取得します。 select id, name, email from users where
name = '鈴木一郎' ;
条件 inを使用することで合致条件を複数指定することができます。 usersテーブルから’鈴木太郎’または’伊藤一郎’のデータを取得します。 select id, name, email from users where
name in ('鈴木太郎', '伊藤一郎') ;
条件 部分一致で検索することもできます。%がワイルドカードです。 usersテーブルから’伊藤’で始まるnameのデータを取得します。 select id, name, email from users where
name like '伊藤%' ;
条件 数値のカラムの場合、完全一致ではなく大なり小なりで条件を指定できます。 usersテーブルからidが2以上のデータを取得します。 select id, name, email from users where
id >= 2 ;
条件 複数条件を指定することもできます。 usersテーブルからidが2以上、かつnameが’伊藤’で始まるデータを取得しま す。 select id, name, email from users
where id >= 2 and name like '伊藤%' ;
複数テーブルの結合 ここまでの知識で1テーブルであればデータが取れるようになりましたが、実務 では複数テーブルのデータを紐づけて取得することが多いと思います。 ここからはテーブルの結合を説明します。
複数テーブルの結合 users exams id name email 1 伊藤一郎
[email protected]
2
伊藤二郎
[email protected]
id user_id answer 1 1 一郎の答え1 2 1 一郎の答え2 3 2 二郎の答え
複数テーブルの結合 nameとanswerを取得します。 fromのところにinner join [テーブル名] on [結合条件]と記載します。 select users.name, exams.answer
from users inner join exams on users.id = exams.user_id ;
複数テーブルの結合 次のようにデータが取得できます。 users join exams users.name exams.answer 伊藤一郎 一郎の答え1 伊藤一郎
一郎の答え2 伊藤二郎 二郎の答え
最後に 単純に抽出するSQLだけであればすごく簡単だということがお分かりいただけま したか? 気軽にデータ抽出できるようになってデータドリブンライフを楽しんでくださ い! SQLをガンガン使っていると、大量データを扱って取得に時間がかかったり(パ フォーマンス問題)もっと複雑なデータ抽出をしたくなってくると思います。 そうなったときにはすでにSQL初心者は脱していると思うので、次のステージへ ステップアップしていってください!