【初心者】データベースの基本的な考え方からSQLを利用したデータ操作方法をわかりやすく解説

プログラミング

プログラミング学習にて、プログラミング言語を勉強します。

ただ、実際にプログラミングにて、システムを作る上でそれだけでは足りません。

必ず必要となるのがデータベースの利用になります。

ここではデータベースのわかりやすい説明と、そのデータベースを操作するSQLの基本まで解説します。

ちなみにここでお話するデータベースは RDBというデータベースになります。

RDB

Relational DataBase(リレーショナルデータベース)。

データを複数の表(テーブル)で管理、表の関連性を扱えるようにしているデータベースの方式。

中小規模のデータベースとしては主流となっており、代表的な製品は以下になります。

Oracle、MySQL、PostgreSQL、Microsft SQL Server、SQLite

少し難しい場合は、この内容はRDBの意味についてはスキップしてもらって問題ありません。

データベースとは

そもそも、データベースとは何かについて解説します。

データベースとはデータを保存しておく箱だと思ってください。

例えば Web サイトを考えてみましょう。

Webサイトに表示する情報、またユーザーがWebサイトに入力する情報

これらの情報は一般的にデータベースに保存されます。

必要に応じて、そのデータを読みだしたり、書き出したりして、Webサイトが利用します。

データベース内におけるデータの保存方法

では、まずは、データベースの中身がどのような仕組みでデータを保存しているかについて説明します。

データベースの中にはデータの種類ごとにテーブルと呼ばれる表でデータを管理しています。

イメージとしてはエクセルみたいな表を考えてください。

具体的なサンプルで説明したほうがわかりやすい為、以下に記載します。

サンプルとして学生データと、試験結果データを考えます。

まず、学生テーブル以下のように考えます

student テーブル

学生IDstudent_id
学生名name
メールアドレスmail_address

具体的にstudentテーブルにデータを入れた場合以下のようになります。

student_idnamemail_address
1Aaaa@mail
2Bbbb@mail
3Cccc@mail

学生テーブルには、学生IDと、学生名と、学生のメールアドレスが保存されます。

試験結果テーブル以下のように考えます

exam テーブル

試験Noexam_no
学生IDstudent_id
点数score

こちらも具体的に、examテーブルにデータを入れた場合、以下のようになります。

exam_nostudent_idscore
1166
1278
1371
2174
2256
2357

試験結果テーブルには、試験No、学生ID(学生テーブルの学生IDと紐づく)、点数が保存されます。

この2つのテーブルを見ることで、どの学生(学生ID)がどの試験(試験No)で何点(点数)を取ったかがわかるかと思います。

もちろん、作られるシステム (Web サイトなど)によって、このテーブルの構造やテーブルの数も変わってきます。

したがって、まずはこのテーブル類を設計、作成する作業を行う必要があります。

データベースへの操作

さてテーブルの考え方がわかったかと思います。

次に、実際にこのデータベースに対して、データを取得したり、データを作成したりとデータの操作を解説します。

テーブルに対しての主な操作は4つあります。

  • データの取得
  • データの作成
  • データの更新
  • データの削除

です。

では1つずつ解説します。

データの取得

テーブルに保存されているデータを取り出す(参照する)操作になります。

全てのデータを取り出すこともできますし、必要なデータだけを取り出すこともできます。

先ほどのサンプルの場合、例えば、点数が60点以上の情報だけを取り出すなどです。

データの作成

テーブルに新しいデータを追加保存することです。

先ほどのサンプルの場合、例えば、新しい試験を実施して各生徒の点数を新たに追加する。というような操作になります。

データの更新

既にテーブルに保存されているデータにたいして変更を行うということです。

データの作成と同じように、全てのデータに対して変更を行うことも、必要なデータに対してのみ変更を行う事が可能です。

先ほどのサンプルの場合、例えば、ある生徒のメールアドレスが変更になった時に、新しいメールアドレスに書き換えるというような操作です。

データの削除

既にテーブルに保存されているデータを消すという事です。

こちらも、全てのデータを削除することも、必要なデータのみ削除することも可能です。

先ほどのサンプルの場合、例えば、ある生徒が転校となってしまい、その生徒のデータをすべて削除するという操作です。

データベースに対しての具体的な操作方法

テーブルに対しての主なデータ操作は4つあるとお話ししました。

その操作を具体的にプログラミングとして記述するにはどうすれば良いのでしょうか。

それには SQL という言語を使うことになります。

SQL とは以下になります。

SQL

SQL(Structured Query Language)とは、データベースの操作や定義を行うためのデータベース言語(問い合わせ言語)になります。(プログラム言語ではありません。)

では、この SQL を利用して4つの操作を具体的に記載してみましょう。

先ほどのサンプルデータと4つの事例にて記載してみます。

データの取得

先ほどのサンプルから「点数が60点以上の生徒だけを取り出す。」の場合、SQLでの記述は以下となります。

SELECT * FROM exam WHERE score >= 60;

examテーブルから(FROM)、scoreが60以上の(WHERE)、すべての項目を取得(SELECT)

意味としては以下です。

SELECT 参照したい項目名(*は全て) FROM 参照するテーブル名 WHERE 参照条件;

データの作成

先ほどのサンプルから「新しい試験を実施して各生徒の点数を新たに追加する。」という場合、SQLでの記述は以下となります。

(試験No=2、学生ID=1、点数=75のデータを追加するとします。)

INSERT exam (exam_no, student_id, score) INTO (2, 1, 75);

意味としては以下です。

INSERT 追加したいテーブル (追加項目名) INTO (追加項目への値);

データの更新

先ほどのサンプルから「ある生徒のメールアドレスが変更になった時に、新しいメールアドレスに書き換える。」という場合の、SQLでの記述は以下となります。

(学生ID = 2、新しいメールアドレス = new@mail だとします。)

UPDATE student SET mail_address = 'new@mail' WHERE student_id = 2;

意味としては以下です。

UPDATE 更新するテーブル SET 更新項目名 = '更新する値' WHERE 更新されるデータ条件;

データの削除

先ほどのサンプルから「ある生徒が転校となってしまい、その生徒のデータをすべて削除する。という場合の、SQLでの記述は以下となります。

(学生ID = 3 の生徒が転校するものだとします。)

DELETE FROM student WHERE student_id = 3;
DELETE FROM exam WHERE student_id = 3;

意味としては以下です。

DELETE FROM 削除対象のテーブル WHERE 削除されるデータ条件;

まとめ

データベースの基本的な考え方また基本的な操作について説明してきました。

以下ですね。

  • データベースとは ⇒ データを保存しておく箱
  • データベース内におけるデータの保存方法 ⇒ テーブル単位でデータを保存
  • データベースへの操作 ⇒ データの参照、作成、変更、削除
  • データベースに対しての具体的な操作方法 ⇒ SQLを利用して操作

最初にもお話しした通りプログラミングをする上でほぼ間違いなくデータベースは必要になります。

厳しい言い方かもしれませんが、データベースの操作ができるということは、プログラマーとしては当たり前のスキルになってきます。

もちろんすごく深い部分もあるのですが、基本的な SQL が書けるようにしておくのが望ましいです。

プログラミング言語の学習と合わせて、データベース(とSQL)についても、学習して利用できるようになりましょう。