SQL基礎

luagate/sql-basics-introSQL基礎入門24データベース・SQL

上から下へ、全 24 枚そのまま並べています。

発表モードで開く

SQL基礎入門

SQL基礎

データを操作する言語 〜DBへの命令文〜

1
1

目次

今日の流れ

1. SQLとは何か

2. データを取り出す SELECT

3. 条件・並べ替え・追加更新削除

4. 集計と結合

5. まとめと振り返り

2
2
SQL基礎入門 - イントロ

今日のゴール

この時間で身につけてほしいことです。

  • SQLが「データベースへの命令文」だと分かる
  • SELECTで欲しい列とデータを取り出せると分かる
  • WHEREで条件を絞り、ORDER BYで並べ替えられる
  • 追加・更新・削除の命令の役割が分かる
  • 集計関数とGROUP BY、JOINの考え方をイメージできる
10
3
SQL基礎入門 - イントロ

テーブル のおさらい

以前データベース基礎で学んだ「テーブル」を思い出すところから始めます。

テーブル(Table)

データを行と列の表の形で整理したもの。1行が1件のデータ、1列が1つの項目を表す。SQLはこのテーブルに対して命令を出して、読んだり書いたりする。

1行が1件のデータを表す

1列が名前や年齢などの項目

表計算ソフトの表に似ている

SQLはこの表を相手に命令を出す

11
4
SQL基礎入門 - イントロ

SQL とは

データベースに「こうして」と伝えるための、専用のことばです。

SQL(Structured Query Language)

データベースに対して、データの取り出し・追加・更新・削除を指示するための言語。日常の言葉に近い形で「どのテーブルから何を、どんな条件で」と命令する。

データベースへの命令を書く言語

読む・足す・変える・消すができる

英語の文に近い読みやすい形

多くのデータベースで共通して使える

12
5
SQL基礎入門 - イントロ

SQLでできる4つのこと

SQLの命令は、大きく分けてデータを読む・足す・変える・消すの4つです。

読む
  • SELECTで取り出す
  • 欲しい列を選ぶ
足す
  • INSERTで新規追加
  • 1件のデータを入れる
変える・消す
  • UPDATEで書き換え
  • DELETEで削除する
13
6

SQL基礎入門 - 取り出し

2

第2部 データを取り出す

SELECT と WHERE と並べ替え

20
7
SQL基礎入門 - 取り出し

SELECT で取り出す

どのテーブルから、どの列を取り出すかを指定する基本の命令です。

sql
-- usersテーブルから名前と年齢を取り出す
SELECT name, age
FROM users;

-- すべての列を取り出すときは *
SELECT *
FROM users;
21
8
SQL基礎入門 - 取り出し

クエリで欲しいデータを取り出す

テーブル全体から、必要な列と行だけを切り出して受け取るイメージです。

  • FROMで対象のテーブルを指定する
  • SELECTで欲しい列を選ぶ
  • WHEREで欲しい行に絞り込む
  • 結果はまた表の形で返ってくる
  • 必要なぶんだけ受け取れるので無駄がない
22
9
SQL基礎入門 - 取り出し

WHERE で条件を絞る

条件に合う行だけを取り出したいときは WHERE を付けます。

sql
-- 年齢が20以上の利用者だけ取り出す
SELECT name, age
FROM users
WHERE age >= 20;

-- 複数条件はANDやORでつなぐ
SELECT name
FROM users
WHERE age >= 20 AND city = 'Tokyo';
23
10
SQL基礎入門 - 取り出し

ORDER BY で並べ替える

取り出した結果を、ある列を基準に並べ替えられます。

sql
-- 年齢の高い順に並べる(DESC=降順)
SELECT name, age
FROM users
ORDER BY age DESC;

-- 低い順はASC(省略すると昇順)
SELECT name, age
FROM users
ORDER BY age ASC;
24
11

SQL基礎入門 - 書き換え

3

第3部 追加・更新・削除

データを書き換える命令

30
12
SQL基礎入門 - 書き換え

INSERT / UPDATE / DELETE

データを足す・変える・消すための3つの命令です。

sql
-- 1件のデータを追加する
INSERT INTO users (name, age)
VALUES ('Sato', 28);

-- 既存のデータを書き換える
UPDATE users
SET age = 29
WHERE name = 'Sato';

-- 条件に合うデータを削除する
DELETE FROM users
WHERE name = 'Sato';
31
13
SQL基礎入門 - 書き換え

書き換えの注意点

UPDATEやDELETEはWHEREを忘れると、表のすべての行に効いてしまう点に注意します。

WHEREを忘れない
  • 条件なしだと全行が対象
  • 消しすぎ・書き換えすぎの事故
まずSELECTで確認
  • 同じ条件で先に取り出す
  • 対象が正しいか目で見る
少しずつ実行
  • いきなり全件を変えない
  • 結果を確かめながら進める
32
14

SQL基礎入門 - 集計と結合

4

第4部 集計と結合

まとめて数える・表をつなぐ

40
15
SQL基礎入門 - 集計と結合

集計関数 と GROUP BY

件数や合計をまとめて計算したいときは集計関数を使い、グループごとにまとめたいときはGROUP BYを添えます。

sql
-- 利用者の人数を数える
SELECT COUNT(*)
FROM users;

-- 都市ごとに人数をまとめる
SELECT city, COUNT(*)
FROM users
GROUP BY city;

-- 売上の合計を出す
SELECT SUM(amount)
FROM orders;
41
16
SQL基礎入門 - 集計と結合

よく使う集計関数

たくさんの行を1つの数にまとめる関数です。GROUP BYと組み合わせるとグループごとに計算できます。

はたらき
使いどころ

COUNT

行の件数を数える

利用者の人数や注文数

SUM

数値の合計を出す

売上や数量の合計

AVG

平均を出す

平均年齢や平均単価

MAX / MIN

最大値と最小値

最高額や最安値

42
17
SQL基礎入門 - 集計と結合

JOIN(結合)

複数のテーブルを、共通の項目を手がかりにつなぎ合わせるしくみです。

JOIN(テーブルの結合)

別々のテーブルを、共通する列を手がかりにつなぎ合わせて1つの結果にすること。たとえば利用者の表と注文の表を、利用者IDでつなげば「誰が何を買ったか」を取り出せる。

共通の列を手がかりに表をつなぐ

利用者と注文をIDでつなげる

ばらばらの情報を1つの結果にまとめる

分けて保存したデータを必要なときだけ合体

43
18
SQL基礎入門 - 集計と結合

クエリを組み立てる順

複雑なクエリも、欲しいものから順に部品を足していくと組み立てられます。

1. どの表から

FROMで対象のテーブルを決める

2. どの行を

WHEREで条件を付けて絞る

3. 何をまとめるか

必要ならGROUP BYと集計関数を足す

4. どう並べるか

ORDER BYで結果を並べ替える

44
19
SQL基礎入門 - 集計と結合

都市ごとの利用者数(イメージ)

GROUP BYとCOUNTを使うと、こうしたグループごとの件数を取り出せます。あくまでイメージです。

4536271890
42
28
15
11
東京
大阪
名古屋
福岡

出典: 都市ごとの集計結果の例を示す概念図(概算)

45
20
SQL基礎入門 - まとめ
クイズ

振り返りクイズ

今日の内容を確認しましょう。

テーブルから条件に合う行だけを取り出すために使う句はどれ?

A
ORDER BY
B
WHERE
C
INSERT
D
GROUP BY
50
21
SQL基礎入門 - まとめ
答え

振り返りクイズ 解答

テーブルから条件に合う行だけを取り出すために使う句はどれ?

A
ORDER BY
B
WHERE
C
INSERT
D
GROUP BY

WHEREは条件に合う行だけに絞り込む句です。ORDER BYは並べ替え、INSERTは追加、GROUP BYはグループごとのまとめに使うので役割が違います。

51
22
SQL基礎入門 - まとめ

質疑・次回予告

今日のまとめと、次に学ぶテーマです。質問があればここで受け付けます。

今日のおさらい
  • SQLはデータベースへの命令文
  • SELECTとWHEREで欲しいデータを取り出す
  • 集計とJOINで深く分析できる
次回予告
  • 正規化の深掘り 〜重複をなくす設計〜
  • きれいなテーブルの作り方を学ぶ
52
23
"

SQLは「データベースへの命令文」。読む・足す・変える・消すの4つを覚えれば、表に眠るデータと自由に対話できる。まずはSELECTで、欲しいものを取り出すところから始めましょう。

SQL基礎入門

53
24