メインコンテンツまでスキップ

SQL

SQLは、データベースからデータを取り出したり、登録・更新・削除したりするための言語です。Webアプリ、業務システム、データ分析など、データを扱う多くの場面で使われます。

何ができる?

  • ユーザーや商品データを検索する
  • 新しいデータを登録する
  • データを更新・削除する
  • 売上や件数を集計する
  • 複数の表を結びつけて調べる

学習ゴール

  • テーブル、行、列の関係を説明できる
  • SELECT でデータを取り出せる
  • WHERE で条件を指定できる
  • ORDER BYLIMIT を使える
  • COUNTSUM で集計できる
  • Webアプリとデータベースの関係を理解できる

データベースの基本

データベースは、表の形でデータを管理します。

idnamescore
1太郎85
2花子92
3次郎70

この表を students テーブルと考えると、SQLで条件を指定して必要なデータを取り出せます。

SELECT

SELECT name, score
FROM students;

SELECT は、どの列を取り出すかを指定します。

WHERE

SELECT name, score
FROM students
WHERE score >= 80;

WHERE は条件を指定します。この例では、80点以上の生徒だけを取り出します。

並び替えと件数制限

SELECT name, score
FROM students
ORDER BY score DESC
LIMIT 3;

ORDER BY は並び替え、LIMIT は取り出す件数の制限です。

集計

SELECT COUNT(*) AS student_count
FROM students;
SELECT AVG(score) AS average_score
FROM students;

件数、平均、合計などを求められます。

INSERT / UPDATE / DELETE

INSERT INTO students (name, score)
VALUES ('三郎', 88);
UPDATE students
SET score = 90
WHERE id = 1;
DELETE FROM students
WHERE id = 3;

削除や更新は、条件を間違えると多くのデータに影響するため注意が必要です。

関連技術

技術できること
MySQLWeb開発でよく使われるDB
PostgreSQL高機能で信頼性の高いDB
SQLite小さなアプリや学習で使いやすいDB
PrismaTypeScriptからDBを扱いやすくする
Active RecordRailsでDBを扱う仕組み

ミニ演習: 上位3人を取り出す

students テーブルから、点数が高い順に3人を表示するSQLを書いてみましょう。

SELECT name, score
FROM students
ORDER BY score DESC
LIMIT 3;

次に、80点以上の人数を数えるSQLにも挑戦してみましょう。

SELECT COUNT(*) AS passed_count
FROM students
WHERE score >= 80;

よくあるエラーと直し方

困ったこと原因の例確認すること
テーブルがない名前が違うテーブル名
列がないカラム名が違う列名
結果が多すぎる条件不足WHERE
並び順が逆ASC / DESC の違い並び替え
更新しすぎた条件ミスUPDATE 前に SELECT

チェックリスト

  • テーブル、行、列を説明できる
  • SELECT を書ける
  • WHERE で条件を指定できる
  • ORDER BYLIMIT を使える
  • COUNTAVG を使える
  • INSERTUPDATEDELETE の役割を説明できる

次に学ぶこと

Webアプリに進むなら、PHP、Ruby、Java、TypeScriptなどとSQLを組み合わせましょう。データ分析に進むなら、PythonやRと一緒に学ぶと実務に近づきます。