$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
非エンジニアのSQL入門
Search
ham
May 18, 2021
0
65
非エンジニアのSQL入門
ham
May 18, 2021
Tweet
Share
More Decks by ham
See All by ham
AIと過ごす1日〜全業務フローにAIを組み込む実践ガイド〜
ham0215
0
42
生成AIによる生産性向上〜テック企業やファインディの活用事例〜
ham0215
1
63
生成AI導入の効果を最大化する データ活用戦略
ham0215
0
380
データ駆動経営の道しるべ:プロダクト開発指標の戦略的活用法
ham0215
2
410
開発組織における意思決定の実例〜開発優先度・組織構成・ツール導入〜
ham0215
0
87
エンジニアリングで組織のアウトカムを最速で最大化する!
ham0215
1
440
アウトカムを最速で最大化できる開発組織にするために
ham0215
1
160
コード品質向上で得られる効果と実践的取り組み
ham0215
2
350
開発者体験を定量的に把握する手法と活用事例
ham0215
2
310
Featured
See All Featured
Faster Mobile Websites
deanohume
310
31k
Facilitating Awesome Meetings
lara
57
6.7k
Why Our Code Smells
bkeepers
PRO
340
57k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
BBQ
matthewcrist
89
9.9k
A Modern Web Designer's Workflow
chriscoyier
698
190k
How to Ace a Technical Interview
jacobian
281
24k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
We Have a Design System, Now What?
morganepeng
54
7.9k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Mobile First: as difficult as doing things right
swwweet
225
10k
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初心者は脱していると思うので、次のステージへ ステップアップしていってください!