###### tags: `LT` # SQL勉強会 ~2021~ ## はじめに このメモは 非エンジニア向けのSQL解説です 事業部メンバーに向けて作ったので 一部、社外の方には分かりづらい表現を含みます ## SQLとは データベース操作言語 ### CRUD - **C**reate(生成) - **R**ead(読み取り) - **U**pdate(更新) - **D**elete(削除) ## (リレーショナル)データベースとは - データがたくさん入ってるやーつ 表計算ソフト(エクセル/スプレットシート)の巨大版 - [webサイトにおけるデータベース](https://docs.google.com/presentation/d/1ECuVDpfBDflOEQXW365ohroVx8G0nmjE63X-kU8ecoQ/edit?usp=sharing) ## SQLでできること 色々できますが、開発者以外が利用するはただ一つ **データの取得** です ### 理由 SQLは少し間違えただけで 影響範囲がめちゃめちゃ変わります。 追加/削除/更新は、一つ間違えると 大きな損害に繋がりかねない リスクヘッジのために、 一部のメンバー以外は閲覧権限に絞っています。 例: 1行消すはずが ``` DELETE * FROM users WHERE id = 1 ``` ↓ミス ``` DELETE * FROM users ``` 全データ消しちゃった 閲覧権限だけなので、 どんなに大きなミスをしても 特に **問題なし!** 安心して使ってください ### 利用ツール - Redash Redashとは: > SQLの分析結果をわかりやすく可視化し共有するオープンソースBIツールです → 要するに、`データを取ってきて分析する`ためのツール [リダッシュとDBの関係](https://docs.google.com/presentation/d/1ECuVDpfBDflOEQXW365ohroVx8G0nmjE63X-kU8ecoQ/edit#slide=id.gce6db21459_0_9) - [query関数](https://docs.google.com/spreadsheets/d/14cKgTquv1psXdhSWc14w0Nmft4vRav75S0IQ0Od91QQ/edit#gid=340195257)(SSでSQLに近いことができる) ## ここまでのまとめ - SQLとは、データベースの操作言語 - データベースとは、データがいっぱい入ってるやつ - SQLを使って出来るのは「データの取得」 - redashはそのためのツール --- --- --- --- --- --- --- --- ## 用語 - テーブル(表) - カラム(属性/列) - レコード(行) - キー(ID/コード) ### 例 テーブル: `users` | ID | name | age | | -- | --- | ---- | | 1 | 田中太郎 | 35 | | 2 | 西園寺次郎 | 21 | | 3 | 小林三郎 | 40 | | 4 | 小泉純一郎 | 79 | | 5 | 伊藤四郎 | 83 | - テーブル: usersテーブル全体 - カラム: `ID, name, age`の部分 - カラム何個?って言われたら3個 - レコード: `| 1 | 田中太郎 | 35 |`の部分 - レコード何個?って言われたら5個 - キー: ID - 本当はどれをキーに設定するかは、決めれますが 大体IDってついているやつって覚えておけばOK ## 'Read'(検索)の機能 - ☆絞り込み - 計算、集合計算 - 並べ替え(ソート) - ☆結合 ## 正規化 ### 主な目的 - 更新の際の[問題](https://www.youtube.com/watch?v=2lMn6t3D1hw)を解消するため ### 順序 - 非正規形 - 正規化がされていない状態のテーブル構造 - [第一正規形](https://www.youtube.com/watch?v=c2LdmWAslBw) - 単一条形 - [第二正規形](https://www.youtube.com/watch?v=1K6EM3woxms) - 部分関数従属性の排除 - [第三正規形](https://www.youtube.com/watch?v=aYjxNQRQyKs) - 推移的関数従属性の排除 (第四、第五もあるが割愛) [例](https://docs.google.com/spreadsheets/d/14cKgTquv1psXdhSWc14w0Nmft4vRav75S0IQ0Od91QQ/edit#gid=615478259) ## SQL構文 ```sql= SELECT 列名(欲しいもの) FROM 表名(取ってくるところ) WHERE 条件 ``` 参考: - [基本的な`select`構文](https://www.youtube.com/watch?v=rSRAOy8VJtg) - [集合計算や否定](https://www.youtube.com/watch?v=rSRAOy8VJtg) ### 書き方 テーブル: `users` | ID | name | age | | -- | --- | ---- | | 1 | 田中太郎 | 35 | | 2 | 西園寺次郎 | 21 | | 3 | 小林三郎 | 40 | | 4 | 小泉純一郎 | 79 | | 5 | 伊藤四郎 | 83 | 1. まず日本語で言語化(頭の中でいい) - `users`テーブルから、30歳以上の、名前の一覧が欲しい `名前の一覧が欲しい usersテーブルから 30歳以上の` 2. 英語にする `SELECT name FROM users WHERE age >= 30` 完成 :100: ## 最後に ### SQLを利用する際のポイント "SQLで全て解決しようとしない" - SQLの利用は、欲しいデータを取得することに限定する - 分析や絞り込みはSS,エクセルでもできる
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up