SQLはおそらく実践で使っていくのが一番身につくと思います。しかし、DS検定を受ける人は実際にコーディングなどはせずリテラシのみ学習という方も多いと思います。(私もそうです^^)
とりあえずDS検定対策として、覚えておくべきところを単なる暗記ではなく(こじつけでも)
頭に残るように整理していきます。
たくさんありますが、リテラシレベルということで、あまり深堀はせずにまとめていきます。
RDBMSとは?代表的な種類と覚え方
| 名前 | 特徴 | 語感で覚えるコツ |
|---|---|---|
| MySQL | 軽くて速い。Web開発で定番 | 「マイ・スクール」=初心者にやさしい |
| PostgreSQL | 高機能で厳密。業務系に強い | 「ポスト(次世代)+グレード」=高性能 |
| SQLite | ファイル1つで動く。アプリ向け | 「ライト=軽い」=持ち運びできるDB |
※HeidiSQLはRDBMSではなく、これらを操作するためのツール(GUI)です。
🧾 SQLの基本構文と読み方
SELECT:選んで取り出す(射影)
SELECT 名前 FROM 顧客;
→ 顧客テーブルから「名前」カラムだけを選んで取り出す。
SELECT * FROM 顧客;
→ 顧客テーブルからすべてのカラムを取り出す。
WHERE:条件で絞る
SELECT * FROM 顧客 WHERE 年齢 > 60;
→ 年齢が60より大きい人だけを取り出す。
GROUP BY:グループにまとめる
SELECT 地域, COUNT(*) FROM 顧客 GROUP BY 地域;
→ 地域ごとにまとめて人数を数える。
HAVING:まとめた後に絞る(~の性質を持つグループを対象に)
SELECT 地域, COUNT(*) FROM 顧客 GROUP BY 地域 HAVING COUNT(*) > 10;
→ 人数が10人より多い地域だけを取り出す。
ORDER BY:並び替える
SELECT 名前 FROM 顧客 ORDER BY 年齢 ASC;
→ 年齢が若い順に並び替えて名前を取り出す。
SELECT * FROM 顧客 ORDER BY 年齢 DESC;
→ 年齢が高い順に並び替えてすべてのカラムを取り出す。 DESCは逆
SELECT * FROM 顧客 ORDER BY RAND() LIMIT 3;
→ ランダムに並び替えて上位3件だけを取り出す。
LIMIT:上限を決める
SELECT * FROM 商品 LIMIT 5;
→ 商品テーブルから上位5件だけを取り出す。
CAST:型にキャスティングする(役割を与える)
SELECT CAST(年齢 AS CHAR) FROM 顧客;
→ 年齢を文字列に変換して取り出す。
PostgreSQLでは 年齢::CHAR と書くこともできる。
CASE:条件に応じて(~の場合)値を切り替える
SQLでは IF 文は使えません。代わりに CASE 文を使います。
- 単純CASE:1つのカラムの値に応じて分岐
SELECT
名前,
CASE 性別コード
WHEN 'M' THEN '男性'
WHEN 'F' THEN '女性'
ELSE '不明'
END AS 性別
FROM 顧客;
- 検索CASE:条件式に応じて分岐
SELECT
名前,
年齢,
CASE
WHEN 年齢 < 13 THEN '子ども'
WHEN 年齢 >= 65 THEN 'シニア'
ELSE '大人'
END AS 年齢区分
FROM 顧客;
EXISTS:データのイグジスト(存在)確認
WHERE EXISTS (
SELECT *
FROM 注文
WHERE 注文.顧客ID = 顧客.ID
)
→ 副問い合わせの結果が1件でもあれば、条件を満たす
※「そのデータがあるか?」を確認する命令
JOIN(テーブルをつなぐ)
| 種類 | 説明 |
|---|---|
| LEFT OUTER JOIN | 左側のテーブルの全データ+右側の一致する部分 |
| FULL OUTER JOIN | 両方のテーブルの全データ(重なりも含む) |
| INNER JOIN | 両方に共通するデータだけを取り出す |
| UNION | 複数のSELECT結果を縦に結合(重複は除外) |
集計関数
| 関数 | 説明 | 記入例 |
|---|---|---|
| COUNT | 件数を数える | SELECT COUNT(*) FROM 顧客; |
| SUM | 合計を出す | SELECT SUM(売上) FROM 注文; |
| AVG | 平均を出す | SELECT AVG(年齢) FROM 顧客; |
| MAX | 最大値を出す | SELECT MAX(価格) FROM 商品; |
| MIN | 最小値を出す | SELECT MIN(価格) FROM 商品; |
演算子
| 演算子 | 説明 | 記入例 |
|---|---|---|
| AND | 両方の条件を満たす | WHERE 年齢 > 20 AND 地域 = ‘東京’ |
| OR | どちらかの条件を満たす | WHERE 地域 = ‘東京’ OR 地域 = ‘大阪’ |
| IN | 候補の中に含まれる | WHERE 地域 IN (‘東京’,’大阪’) |
| BETWEEN | 範囲に含まれる | WHERE 年齢 BETWEEN 20 AND 29 |
テーブル作成時のオプション
テーブル作成は CREATE
CREATE TABLE IF NOT EXISTS 顧客 (
ID INT NOT NULL AUTO_INCREMENT,
名前 CHAR(50) DEFAULT '未登録'
);
| オプション | 説明 |
|---|---|
| IF NOT EXISTS | すでに存在していたら作らない |
| NOT NULL | 空欄を許さない |
| AUTO_INCREMENT | 自動で番号を振る(MySQL) |
| DEFAULT | 値が入っていないときの初期値 |
データ操作(DML):追加・変更・削除
| 命令 | 説明 | 記入例 |
|---|---|---|
| INSERT | データを追加する | INSERT INTO 顧客 (名前, 年齢) VALUES (‘佐藤’, 45); |
| UPDATE | データを変更する | UPDATE 顧客 SET 年齢 = 50 WHERE 名前 = ‘佐藤’; |
| DELETE | データを削除する | DELETE FROM 顧客 WHERE 名前 = ‘佐藤’; |
RANDOM():ランダムな数値を生成する
SELECT RAND();
→ ORDER BY RAND()でランダム抽出できる、0以上1未満のランダムな小数を生成する。
並び替えに使うと、データをランダムに抽出できる。
SELECT * FROM 顧客 ORDER BY RAND() LIMIT 3;
LIKE演算子:あいまい検索をする
SELECT * FROM 顧客 WHERE 名前 LIKE '佐%';
→ 名前が「佐」で始まる人を検索する。
%:任意の文字列(0文字以上)_:任意の1文字
データ型
| データ型 | 分類 | 説明・用途 | 語感・覚え方 |
|---|---|---|---|
| BOOLEAN | 論理値型 | true / false の真偽値 | フール = 嘘? |
| BOOL | ↓ | BOOLEANの別名 | ↓(MYSQL) |
| BIT(M) | ↓ | ビット列:最大64桁 | ビット列 |
| TINYINT | 数値型(整数) | 極小 整数1byte | タイニー(極小) |
| SMALLINT | ↓ | 小 整数2byte | スモール(小) |
| MEDIUMINT | ↓ | 中 整数約3byte | ミディアム(中) |
| BIGINT | ↓ | 大 整数8バイト | ビッグ(大) |
| INTEGER | ↓ | 普通 整数4バイト | インテジャ=整数 |
| FLOAT(M,D) | ↓(浮動小数点) | 単精度の浮動小数点数 | フロートな小数 |
| REAL(M,D) | ↓ ↓ | 倍精度の浮動小数点数 | リアルな小数 |
| DECIMAL(M,D) | ↓(固定小数点) | 固定小数点数 (精度指定可能) | デシマル 小数点を固定 |
| NUMERIC(M,D) | ↓ ↓ | DECIMALと同等 (標準SQL) | ナン(バー) 数値そのもの |
まとめ:SQLは「構文」ではなく「会話」で
SQLは、データベースに「何をしたいか」を伝える言語として、構文を丸暗記するのではなく、言葉の意味と目的を理解したいですね。
📘 シリーズ記事の流れ
次の記事 ▶️:
【DS検定対策18】プロジェクト推進の基本と実務視点
DS検定「ビジネス力」対策として、プロジェクト推進の基本概念を実務経験者の視点で解説。課題設定や仮説思考も網羅。

【DS検定対策16】データベースの正規化をお弁当で理解|初心者向け図解
データベースの正規化をお弁当の例でやさしく解説。第一正規化から第三正規化まで、図と表で初心者にもわかりやすく整理。DS検定対策にも最適。
📚 シリーズトップ:

DS検定対策シリーズ完全ガイド|全21記事で合格を目指す【目指せDi-Lite】
DS検定(データサイエンティスト検定リテラシーレベル)の合格を目指す全21記事の完全ガイド。数学・統計・機械学習を初心者向けに図解とLaTeX数式でわかりやすく解説。3回受験の失敗談から学ぶ効果的な勉強法・過学習対策も公開。Di-Lite認定(DX推進パスポート)取得を応援します。


コメント