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
63
非エンジニアのSQL入門
ham
May 18, 2021
Tweet
Share
More Decks by ham
See All by ham
生成AI導入の効果を最大化する データ活用戦略
ham0215
0
220
データ駆動経営の道しるべ:プロダクト開発指標の戦略的活用法
ham0215
2
340
開発組織における意思決定の実例〜開発優先度・組織構成・ツール導入〜
ham0215
0
67
エンジニアリングで組織のアウトカムを最速で最大化する!
ham0215
1
380
アウトカムを最速で最大化できる開発組織にするために
ham0215
1
110
コード品質向上で得られる効果と実践的取り組み
ham0215
2
310
開発者体験を定量的に把握する手法と活用事例
ham0215
2
280
チームトポロジーの4つのチームタイプ
ham0215
2
61
生成AI活用でエンジニア組織はどう変わったのか?
ham0215
3
210
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Site-Speed That Sticks
csswizardry
10
780
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Faster Mobile Websites
deanohume
309
31k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
780
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.4k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Become a Pro
speakerdeck
PRO
29
5.5k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Speed Design
sergeychernyshev
32
1.1k
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初心者は脱していると思うので、次のステージへ ステップアップしていってください!