0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【DB入門】第1章 データベースと SQL

0
Last updated at Posted at 2026-10-20

この章では、データベースとは何か、データをどのような形で保存するのか、そしてデータベースに指示を出す言葉である SQL とは何かを学びます。あわせて、この教材で作る2つのテーブルの設計を確認します。SQL の入力は第2章から始まるので、この章は読んで理解する章です。

この章で学ぶこと

  • データベースと DBMS の役割
  • テーブル・行・列という、リレーショナルデータベースのデータの形
  • 主キーと外部キー
  • SQL の役割と、SQL 文の4つの種類
  • この教材で作る部署テーブルと社員テーブル

1.1 データベースとは

データベース は、たくさんのデータを決まった形で保存し、必要なときに取り出せるようにした、データの集まりです。たとえば、会社の社員の情報(氏名、年齢、所属する部署など)を社員管理アプリで扱うとき、その情報はデータベースに保存されます。

データを保存するだけなら、表計算ソフトのファイルやテキストファイルでもできます。しかし、業務のシステムでは、次のようなことが求められます。

  • 何万件、何百万件のデータの中から、条件に合うものを 速く 取り出す
  • 複数の人やプログラムが 同時に 読み書きしても、データが壊れない
  • 「年齢に文字を入れてはいけない」「存在しない部署を指定してはいけない」といった 決まりを守らせる
  • 途中で失敗したときに、中途半端な状態にならないように 元に戻せる

これらを引き受けてくれるソフトウェアが DBMS(Database Management System:データベース管理システム)です。この教材で使う Oracle Database は、DBMS のひとつです。「データベース」という言葉は、データの集まりそのものを指すことも、DBMS を含めた仕組み全体を指すこともあります。

利用者やアプリが SQL で DBMS(Oracle Database)に指示を出し、DBMS がデータベースのテーブルを読み書きして結果を返す
図1-1 利用者・アプリと DBMS とデータベースの関係

1.2 テーブル・行・列

Oracle Database のように、データを 表の形 で保存するデータベースを リレーショナルデータベース(RDB)といいます。表のことを テーブル と呼びます。この教材で作る社員テーブルは、次のような形です。

EMP_ID NAME GENDER AGE BIRTH_DATE DEPT_ID ADDRESS
1 雷禅 海皇 1 26 2000-06-22 2 大阪府
2 院照 心愛 2 27 1999-07-11 1 京都府
3 林檎 星飛 1 24 2001-12-24 3 東京都
用語 意味 上の表では
テーブル(表) 同じ種類のデータを集めた表。名前を持つ 社員テーブル(EMPLOYEE)
行(レコード) 1件分のデータ。横1列 「1、雷禅 海皇、1、26、…」が1行
列(カラム) データの項目。縦1列。名前とデータ型を持つ EMP_ID、NAME、AGE など7列

テーブルを作るときに、「どんな列があり、それぞれの列にどんな種類の値(数、文字、日付)が入るか」を決めます。これを テーブルの定義 といいます。行は、データを登録するたびに増えていきます。

【知識メモ】列の名前が英語なのはなぜか

列の名前は日本語でも付けられますが、業務のシステムでは、プログラムから扱いやすいように EMP_ID・NAME のような英語の名前を付けるのが一般的です。この教材の列名は、Spring入門で作る社員管理アプリの Java のプログラムから使う名前に合わせています。単語の区切りは _(アンダースコア)で書きます。

1.3 主キーと外部キー

主キー

テーブルの中の1行を 確実に特定できる列 を 主キー(プライマリキー)といいます。社員テーブルの主キーは、社員ID(EMP_ID)です。

氏名は主キーにできません。同じ氏名の社員が2人いるかもしれないからです。主キーの列には、次の決まりがあります。

  • 同じ値を持つ行が 2つ以上あってはならない(一意である)
  • 値が 空であってはならない

「社員IDが 3 の社員」と言えば、必ず1人に決まります。データを変更したり削除したりするときは、この主キーで対象の行を指定します。

外部キー

社員テーブルの DEPT_ID の列には、「1」「2」「3」のような部署IDが入っています。部署の名前(総務部、営業部、…)は、社員テーブルには書かず、別の 部署テーブル に持たせます。

DEPT_ID DEPT_NAME
1 総務部
2 営業部
3 開発部
4 人事部

社員テーブルの DEPT_ID のように、別のテーブルの主キーを参照する列 を 外部キー といいます。外部キーには、「参照先のテーブルに存在する値しか入れられない」という決まりを付けられます。この決まりがあると、存在しない部署ID(たとえば 9)を持つ社員は登録できなくなり、データの食い違いを防げます。

社員テーブルの DEPT_ID(外部キー)が、部署テーブルの DEPT_ID(主キー)を参照している
図1-2 社員テーブルの DEPT_ID は、部署テーブルの DEPT_ID を参照する

【知識メモ】部署名を社員テーブルに書かない理由

社員テーブルに部署名をそのまま書くと、同じ「営業部」という文字が社員の数だけ繰り返し保存されます。部署の名前が変わったときは、該当するすべての社員の行を書き換えなければならず、1行でも直し忘れると食い違いが生まれます。部署テーブルに1回だけ書いておけば、直すのは1か所で済みます。このように、繰り返しをなくすようにテーブルを分けることを 正規化 といいます。この教材では、部署と社員の2つに分けた形をそのまま使います。

【知識メモ】ER 図

テーブルと、テーブル同士のつながりを表した図を ER 図(Entity-Relationship Diagram)といいます。この教材の2つのテーブルを ER 図で表すと、図1-3 のようになります。四角1つが1つのテーブルで、主キー(PK)と外部キー(FK)の列に印を付け、外部キーでつながるテーブル同士を線で結びます。線の両端の「1」と「多」は、1つの部署に社員が何人もいることを表します。

現場の設計書には ER 図がよく載っていて、どのテーブルをどの列で結合すればよいか(第10章)を ER 図で確かめます。線の端の記号などの書き方は、使う道具によって違います。

部署テーブルと社員テーブルの ER 図。部署の DEPT_ID(主キー)と社員の DEPT_ID(外部キー)が線で結ばれ、部署側が1、社員側が多
図1-3 部署テーブルと社員テーブルの ER 図

1.4 SQL とは

SQL(エスキューエル)は、DBMS に指示を出すための言葉です。「テーブルを作れ」「この行を登録しろ」「年齢が30以上の社員を取り出せ」といった指示を、決まった書き方の文で書きます。1つの指示を SQL 文 といいます。

例
SELECT NAME, AGE FROM EMPLOYEE WHERE AGE >= 30;

この SQL 文は、「社員テーブル(EMPLOYEE)から、年齢(AGE)が30以上の行の、氏名(NAME)と年齢(AGE)を取り出せ」という意味です。英語の文に近い形をしているので、読めば意味が推測できるのが SQL の特徴です。

SQL は、Oracle Database だけでなく、MySQL、PostgreSQL、SQL Server など、ほとんどのリレーショナルデータベースで使えます。基本の書き方は共通ですが、細かい部分(データ型の名前、関数の名前など)はデータベースごとに少しずつ違います。この教材では Oracle Database の書き方で説明します。Oracle Database の SQL の正式な書き方は、Oracle の公式ドキュメント「SQL言語リファレンス」にまとめられています(1.5 の「公式ドキュメント」)。

【知識メモ】ネットの SQL は、ほかのデータベースの書き方のことがある

ネットで見つかる SQL の例は、MySQL や PostgreSQL のものが多く、Oracle Database ではそのまま動かないことがあります。たとえば、先頭から3行だけ取り出すとき、MySQL では最後に LIMIT 3 と書きますが、Oracle Database では FETCH FIRST 3 ROWS ONLY と書きます。ネットの例を参考にするときは、どのデータベースの書き方かを確かめてください。

SQL 文の種類

SQL 文は、何をするかによって、大きく次のように分けられます。

分類 役割 主な SQL 文 章
DDL
(データ定義)
テーブルなどの入れ物を作る・消す CREATE TABLE・DROP TABLE・CREATE SEQUENCE 第3章
DML
(データ操作)
テーブルの中のデータを登録する・取り出す・変更する・削除する INSERT・SELECT・UPDATE・DELETE 第4章〜第10章
TCL
(トランザクション制御)
データの変更を確定する・取り消す COMMIT・ROLLBACK 第4章・第7章
DCL
(データ制御)
ユーザーに権限を与える GRANT 第2章

この教材で特によく使うのは、DDL と DML の2つです。

  • DDL(Data Definition Language)は、テーブルという 入れ物の形 を決める SQL 文です。どんな列があり、それぞれにどんな値が入るかを決めます。テーブルを作るときに一度実行し、普段の操作ではあまり使いません
  • DML(Data Manipulation Language)は、入れ物の 中のデータ を扱う SQL 文です。業務のアプリは、画面の操作のたびに DML を実行します

【便利な使い方】「このテーブルの DDL をください」

現場では、テーブルを作る CREATE TABLE 文そのものを指して「DDL」と呼ぶことがよくあります。「このテーブルの DDL をください」「DDL を見ればテーブルの定義が分かる」のように使います。テーブルの列やデータ型、制約を確かめたいとき、DDL を見るのがいちばん確実だからです。SQL Developer では、テーブルを開いて「SQL」タブを選ぶと、そのテーブルの DDL が表示されます(第3章)。

CRUD

DML の4つの SQL 文は、データに対して行う4つの操作にあたります。この4つの操作は、英語の頭文字を取って CRUD(クラッド)と呼ばれます。

CRUD 操作 SQL 文 章
C(Create) データを登録する INSERT 第4章
R(Read) データを取り出す(読み取る) SELECT 第5章
U(Update) データを変更する UPDATE 第7章
D(Delete) データを削除する DELETE 第7章

業務のアプリが行うデータベースの操作は、ほとんどがこの4つの組み合わせです。社員管理アプリなら、社員の登録が C、一覧の表示が R、変更が U、削除が D です。この教材の中心も、この4つです。CRUD の C が CREATE ではなく INSERT であることに注意してください。CREATE TABLE は入れ物を作る DDL で、データを登録する CRUD の C とは別のものです。

【知識メモ】SQL の読み方

SQL は「エスキューエル」と読みます。「シークェル」と読む人もいます。どちらも通じます。

1.5 Oracle Database と SQL Developer

この教材では、次の2つのソフトウェアを使います。

  • Oracle Database 21c Express Edition(XE):DBMS 本体です。企業のシステムで広く使われている Oracle Database の、無償で使える版です。機能や容量に制限がありますが、学習には十分です。パソコンの裏側で常に動き続け、SQL の指示を待ちます
  • Oracle SQL Developer:Oracle Database に接続して、SQL を入力して実行し、結果を表の形で確認するためのツールです。無償で使えます

Oracle Database には画面がありません。この教材では、SQL Developer の画面で SQL を書き、Oracle Database に送って実行します。この2つのインストール手順は、入門シリーズ共通の 「開発環境の準備」 にまとめています。第2章に進む前に、インストールを済ませておいてください。

【知識メモ】Spring入門では

Spring入門で作る社員管理アプリは、Java のプログラムの中から Oracle Database に SQL を送って、社員の一覧表示や登録を行います。SQL Developer で手で実行する SQL と、アプリが送る SQL は同じものです。この教材で SQL を身に付けておくと、アプリがデータベースに対して何をしているのかが読めるようになります。

公式ドキュメント

この教材の内容をさらに詳しく調べたいときは、次の公式ドキュメントを引きます。今は読まなくてかまいません。困ったときや、教材で扱わなかったことを調べるときに使ってください。

資料 内容 言語
Oracle Database SQL言語リファレンス 21c SQL 文・データ型・関数の正式な書き方 日本語
Oracle Database エラー・メッセージ 21c ORA- で始まるエラーの原因と対処 日本語

どちらも、この教材で使う Oracle Database 21c の資料です。SQL の書き方を確かめたいときは SQL言語リファレンス、エラーの意味を調べたいときはエラー・メッセージを引きます。

1.6 この教材で作るテーブル

この教材では、部署テーブルと社員テーブルの2つを作ります。第3章でこの定義のとおりにテーブルを作り、第4章で部署4件・社員10人のサンプルデータを登録します。

部署テーブル(DEPARTMENT)

項目 列名 データ型 説明
部署ID DEPT_ID NUMBER(4) 主キー。1 から順に番号を振る
部署名 DEPT_NAME VARCHAR2(20 CHAR) 例:総務部。必ず入れる

社員テーブル(EMPLOYEE)

項目 列名 データ型 説明
社員ID EMP_ID NUMBER(6) 主キー。1 から順に番号を振る
氏名 NAME VARCHAR2(20 CHAR) 例:雷禅 海皇。必ず入れる
性別 GENDER NUMBER(1) 1:男、2:女。それ以外は入れられない。必ず入れる
年齢 AGE NUMBER(3) 例:26。必ず入れる
生年月日 BIRTH_DATE DATE 例:2000-06-22。必ず入れる
部署ID DEPT_ID NUMBER(4) 部署テーブルの部署ID(外部キー)。必ず入れる
住所 ADDRESS VARCHAR2(10 CHAR) 都道府県。例:東京都。必ず入れる

データ型(NUMBER・VARCHAR2・DATE)の意味は、第3章で学びます。今は、「列ごとに、入れられる値の種類と大きさが決まっている」ことだけ押さえておいてください。

【知識メモ】年齢と生年月日の両方がある理由

年齢は生年月日から計算できるので、本来はどちらか一方で足ります。この教材では、数の列を使った絞り込みや集計を練習するために、年齢の列も持たせています。Spring入門のアプリも、この2つの列を持つ同じテーブルを使います。

1.7 まとめと確認問題

まとめ

  • データベース はデータの集まり。DBMS(Oracle Database など)がデータを管理し、速く取り出す・同時に使う・決まりを守らせる・元に戻す、といったことを引き受ける
  • リレーショナルデータベースは、データを テーブル(表)の形で持つ。1件分が 行、項目が 列
  • 主キー は1行を特定する列。同じ値は入れられず、空も許されない
  • 外部キー は別のテーブルの主キーを参照する列。参照先に存在する値しか入れられない
  • SQL は DBMS への指示を書く言葉。テーブルの形を決める DDL と、中のデータを扱う DML が中心
  • DML の4つ、登録(INSERT)・取り出し(SELECT)・変更(UPDATE)・削除(DELETE)を CRUD という
  • この教材では、部署テーブル(DEPARTMENT)と社員テーブル(EMPLOYEE)を作る

この章の用語は、付録C「用語集」 にまとめています。

確認問題

問1 社員テーブルの「雷禅 海皇、26歳、営業部」の1件分のデータは、「行」と「列」のどちらですか。

解答を見る

行 です。1件分のデータが行で、氏名・年齢・部署といった項目が列です。

問2 社員テーブルの主キーに氏名(NAME)を使えないのはなぜですか。

解答を見る

同じ氏名の社員が2人以上いる可能性があるためです。主キーは、同じ値を持つ行が2つ以上あってはならず、1行を確実に特定できなければなりません。

問3 社員テーブルの DEPT_ID の列は、主キーと外部キーのどちらですか。また、何を参照していますか。

解答を見る

外部キー です。部署テーブル(DEPARTMENT)の主キーである DEPT_ID を参照しています。

問4 データの登録・取り出し・変更・削除を行う SQL 文を、それぞれ答えてください。

解答を見る

登録は INSERT、取り出しは SELECT、変更は UPDATE、削除は DELETE です。この4つを CRUD と呼び、それぞれ C(Create)・R(Read)・U(Update)・D(Delete)にあたります。

問5 CREATE TABLE は DDL と DML のどちらですか。また、CRUD の C にあたる SQL 文は何ですか。

解答を見る

CREATE TABLE は、テーブルという入れ物の形を決める DDL です。CRUD の C(Create:データの登録)にあたるのは INSERT です。名前が似ていますが、CREATE TABLE は CRUD には入りません。

問6 Oracle Database と SQL Developer の役割の違いを説明してください。

解答を見る

Oracle Database はデータを管理する DBMS 本体で、画面を持たず裏側で動きます。SQL Developer は、Oracle Database に接続して SQL を入力・実行し、結果を表で確認するためのツールです。


前へ

目次

次へ

第2章 データベースに接続する

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?