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
生成AI活用でエンジニア組織はどう変わったのか?
ham0215
2
71
メンバーがオーナーシップを発揮しやすいチームづくり
ham0215
2
430
Platform Engineeringのエッセンスを小規模な開発組織に取り入れた事例紹介
ham0215
9
1.7k
開発者の定量・定性データを組み合わせて開発者体験を把握するための取り組み
ham0215
5
2.2k
アジャイルを始めるための基礎を固める
ham0215
1
98
開発者体験を意識した開発チームの生産性向上の取り組み
ham0215
3
960
MySQLのViewを活用した安全なマルチテナントの実現方法
ham0215
2
1.2k
開発パフォーマンスを最大化するための開発体制
ham0215
7
1.8k
今こそ思い出すGraphQLの特徴
ham0215
0
200
Featured
See All Featured
RailsConf 2023
tenderlove
29
1k
Bootstrapping a Software Product
garrettdimon
PRO
306
110k
Unsuck your backbone
ammeep
669
57k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
Speed Design
sergeychernyshev
27
810
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.5k
Building a Scalable Design System with Sketch
lauravandoore
461
33k
Git: the NoSQL Database
bkeepers
PRO
427
65k
The Cost Of JavaScript in 2023
addyosmani
47
7.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
Code Reviewing Like a Champion
maltzj
521
39k
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初心者は脱していると思うので、次のステージへ ステップアップしていってください!