コース一覧
SQL入門:データベース操作のきほん
データベースとは何か

SQL入門:データベース操作のきほん

SELECT、INSERT、UPDATE、DELETE に加え、WHERE、JOIN、GROUP BY、サブクエリなど SQL の基礎構文を、ブラウザ上のサンプル DB を操作しながら学べる無料コースです。データ分析やアプリ開発で SQL を初めて学ぶ社会人や学生を対象としています。約 18 時間 (1 日 30 分 × 36 日) で 71 レッスンを修了でき、修了後は業務データの抽出、集計、簡単なレポート作成を SQL で行えるようになります。

1
SQLとデータベースの基礎
01. データベースとは何か5分
02. リレーショナルDBの仕組み5分
03. テーブル・行・列の基本5分
04. 主キーとNULL制約5分
05. 基礎確認クイズ5分
2
データの取得 - SELECT文マスター
01. SELECT文の基本構文5分
02. WHERE句で条件絞り込み5分
03. 比較演算子とLIKEパターン5分
04. AND/OR/NOTで複合条件5分
05. ORDER BYでソート5分
06. LIMITで件数制限5分
07. 日付関数の活用5分
08. データ取得チャレンジ5分
3
データ集計と分析
01. 集計関数 COUNT/SUM/AVG/MAX/MIN5分
02. NULLの扱い方5分
03. 算術演算とエイリアス5分
04. CASE式で条件分岐5分
05. DISTINCTで重複排除5分
06. 文字列関数5分
07. GROUP BYでグループ化5分
08. HAVINGでグループ条件5分
09. SELECT文の実行順序5分
10. 集計分析チャレンジ5分
4
テーブル結合
01. なぜ結合が必要か5分
02. INNER JOINの基本5分
03. LEFT/RIGHT OUTER JOIN5分
04. 複数テーブルの結合5分
05. 自己結合5分
06. 集合演算 UNION/INTERSECT/EXCEPT5分
07. 結合の実践演習5分
08. テーブル結合クイズ5分
5
サブクエリ活用
01. サブクエリとは5分
02. WHERE句のサブクエリ5分
03. FROM句のサブクエリ5分
04. SELECT句のサブクエリ5分
05. WITH句(CTE)の活用5分
06. サブクエリ実践クイズ5分
6
テーブル作成とデータ操作
01. CREATE DATABASE と CREATE TABLE5分
02. データ型の選び方5分
03. INSERT 文でデータを追加する5分
04. UPDATE 文でデータを更新する5分
05. DELETE 文でデータを削除する5分
06. 物理削除と論理削除5分
07. ALTER TABLE で構造を変更する5分
08. 制約 (NOT NULL / UNIQUE / DEFAULT)5分
09. TRUNCATE と DROP5分
10. DDL / DML 実践クイズ5分
7
外部キーと参照整合性
01. 外部キーの役割5分
02. FOREIGN KEY制約の設定5分
03. ON DELETE/UPDATE ポリシー5分
04. CASCADE vs RESTRICT vs SET NULL5分
05. 物理FK vs 論理FK5分
06. 外部キークイズ5分
8
データモデリング入門
01. データモデリングとは5分
02. ER図の読み方・書き方5分
03. エンティティと属性5分
04. リレーションシップとカーディナリティ5分
05. 1対1/1対多/多対多の設計5分
06. モデリング基礎クイズ5分
9
正規化
01. なぜ正規化が必要か5分
02. 第1正規形 (1NF)5分
03. 第2正規形 (2NF)5分
04. 第3正規形 (3NF)5分
05. 非正規化の判断5分
06. 正規化クイズ5分
10
物理設計とインデックス
01. 物理設計の考え方5分
02. 命名規則のベストプラクティス5分
03. インデックスの仕組み5分
04. CREATE INDEXの使い方5分
05. インデックス設計の注意点5分
06. 物理設計クイズ5分

データベースとは何か

クエリとデータの往復

3 人で同じ在庫表を開くと、誰かの入力が消える

商品の在庫を Excel のファイルで管理しているとします。倉庫の担当が入荷分を足し、店舗の担当が出荷分を引き、経理が原価を直す。3 人が同じファイルを開いて、それぞれ保存しました。手元に残るのは最後に保存した 1 人分だけで、ほかの 2 人が打ち込んだ数字はどこにも残っていません。

これはファイルの使い方が下手なのではなく、ファイルが同時に触られることを想定していないだけです。ほかにも、行が 10 万件を超えると検索に数秒かかる、価格の列に「1,200 円」と文字で書かれても誰も止めない、コピーが増えてどれが本物か分からなくなる、といった詰まり方をします。

データベースは、この種の困りごとを引き受けるために作られた保管場所です。 同時に書き込まれても壊さない、目的の行だけを素早く見つける、列に入れてよい値の形をあらかじめ決めておく、途中で落ちても直前の状態に戻す。この 4 つが、ただのファイルとの決定的な差になります。

ARCHITECTURE SQL の 5 段階を、DBMS の 4 大機能が支える アプリケーション SELECT / INSERT 保存場所は知らない DBMS MySQL / PostgreSQL 同時実行・整合性 高速検索・復旧 2 データファイル業務データを保存 3 更新ログ履歴から障害復旧 4 インデックス索引で高速検索 1 SQL 5 結果 DBMS がロック・キャッシュ・復旧を引き受け、アプリの実装を減らす 4 大機能は、同時実行・整合性・高速検索・障害復旧 データベースは、同時に使え、速く探せ、壊れても戻せる長期記憶

覚えておく係を、アプリの外に置く

ここで用語を 2 つに分けておきます。データベースはディスクに整理して置かれたデータそのもの、DBMS (データベース管理システム) はそれを安全に読み書きさせるソフトウェアです。MySQL や PostgreSQL といった製品名は、どれも DBMS のほうを指しています。

アプリ側はファイルの置き場所もディスクの構造も知りません。「この条件の行がほしい」と DBMS に頼み、返ってきた結果を画面に出すだけです。同時に触られたときの順番待ちも、素早く探すための索引も、落ちたあとの復旧も、DBMS の担当になります。

EC の5つの動き、すべてDBへ EC サイトの動き 画面と処理 5 つ 1商品一覧を表示 2カートを保存 3注文履歴を参照 4在庫を引く 5メール送信を記録 アプリサーバー 考える脳 1〜5 を読み書きする データベース 長期記憶 5 種類 1商品マスタ読む 2カート書く 3注文履歴読む 4在庫更新 5メールログ書く 毎回 SQL 表示は読む。保存・引き落とし・ログは書く。どちらも DB を通る アプリは考える。DB は、次の画面でも必要な状態を覚え続ける

どう探すかではなく、何がほしいかを書く

DBMS に話しかけるための言葉が SQL です。特徴は、手順ではなく結果を書くところにあります。

SQL クエリ

SELECT name, email FROM users WHERE id = 1;

「users を先頭から 1 行ずつ読んで、id が 1 の行を見つけたら name と email を取り出して」とは書きません。ほしいものだけを書けば、どこから読んでどう探すかは DBMS が決めます。だから同じ SQL のまま、データが 100 件でも 1 億件でも動きます。

同じデータベースは、たいてい 1 つのアプリからだけ使われるわけではありません。利用者向けの画面、社内の管理画面、夜間に走る集計バッチ。書かれた言語がばらばらでも、話しかける言葉は全部 SQL です。データの決まりごとをデータベース側にまとめて置いておけるのは、この共通の入口があるからです。

演習では companies テーブルの中身を、そのまま覗いてみましょう。並び順を指定しておくと、何度実行しても同じ順番で返ってくることも確かめてください。

テーブル構造

CREATE TABLE companies ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, industry VARCHAR(30) NOT NULL, founded_year INT NOT NULL ); INSERT INTO companies (id, name, industry, founded_year) VALUES (1, 'のい技研', 'IT', 2018), (2, '青空ベーカリー', '食品', 2005), (3, '緑風物流', '物流', 1998), (4, '海風観光', '観光', 2012), (5, 'みらい学習', '教育', 2021);

期待される出力

idnameindustryfounded_year
1のい技研IT2018
2青空ベーカリー食品2005
3緑風物流物流1998
4海風観光観光2012
5みらい学習教育2021

ヒント

全列取得は SELECT * を使います

並び順を固定するには ORDER BY 列名 ASC を末尾に付けます

ASC は昇順、DESC は降順です

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • データベースデータを構造化して保存する仕組み
  • HTTPWeb の通信プロトコル、HTTPS は TLS で暗号化したもの
  • SQLデータベースを操作するための共通言語
  • MySQL広く使われるオープンソースのRDBMS
  • PostgreSQL機能が豊富なオープンソースのRDBMS
  • インデックスDB 検索を速くする索引
  • None「値がない」ことを表す特別な値。
  • URLページの住所全体
query.sql
学習モード
エディタを読み込んでいます
コードの実行結果
データベースを初期化中...