1. はじめに
本書では、SQLをこれから学びたい人向けに、SQLの概要や構文の使い方を説明していきます。
第1回は『SQLとデータベースについて』のテーマで、SQLとデータベースの概要を説明していきます。
2. SQLとは
SQLは『Structured Query Language』の略で、リレーショナルデータベース(RDB)を操作するために使われる言語です。
企業の業務システムからWebサイトまで様々な場面で利用されており、データ分析や情報管理に欠かせない存在となっています。
また、SQLは多くのRDBシステムで共通して利用できるため、一度学習すれば様々なシステムで活用することができます。
「リレーショナルデータベース?」「操作?」とハテナが浮かぶ方もいるかもしれませんが、本書ではそれらについても説明していきます。
3. データベースとは
データベースとは、電子媒体で格納された膨大なデータを、効率的に保存、管理するためのツールです。
「データ」とは具体的に何を指すかというと、例えば会社に関わるデータの場合は以下のようなものです。
・社員 :社員コード、名前、性別、生年月日、住所など
・商品 :商品コード、商品名、型番、サイズ、原価など
・取引先:取引先コード、取引先名、住所、担当者など
会社の規模によっては、これらのデータの件数が数十万~数百万単位になるなど、会社を運営するうえで膨大な量のデータを管理する必要があります。
4. データベースの種類について
データベースは、大きく2種類に分けることができます。
4-1. RDB
RDBは『Relational Database』(リレーショナルデータベース)の略で、「テーブル」と呼ばれる表形式のデータを複数関連付けて管理するデータベースのことです。
社員マスタ
社員番号 | 名前 | 性別 | 生年月日 | 住所 |
---|---|---|---|---|
1 | 佐藤 一郎 | 男 | 1964/09/25 | 東京都新宿区○○○ |
2 | 鈴木 花子 | 女 | 1992/05/02 | 大阪府大阪市××× |
3 | 高橋 二郎 | 男 | 2000/09/26 | 愛知県名古屋市△△△ |
4 | 田中 花美 | 女 | 1985/12/12 | 福岡県福岡市□□□ |
テーブルにはそれぞれ名前が付いており、上記の表は「社員マスタ」という名前の付いたテーブルです。
表形式なので行と列で構成されており、行を「レコード」と呼び、列を「フィールド」と呼びます。
(行を「row(ロウ)」、列を「column(カラム)」と呼んだりもします。)
※RDBの製品例
・Microsoft SQL Server
・Oracle Database
・MySQL
・PostgreSQL
・SQLite
・Db2
※本書では、RDBをベースとしてSQLの説明をしていきます。
4-2. NoSQL
NoSQLは『Not Only SQL』の略で、RDBではないデータベースの総称です。
RDBは表形式のため、どのレコード(行)に対しても同じフィールド(列)がありましたが、NoSQLは非RDBであるため、レコード毎に決まったフィールドがありません。
以下は、NoSQLの一種であるキーバリュー型のデータです。
商品マスタ
Key | Value |
---|---|
1 | (商品名:○○、型番:××-××、サイズ:100cm×50cm×30cm) |
2 | (商品名:△△、型番:□□-□□、容量:1,000ml) |
Valueに注目すると、レコードによって保持するフィールドが異なっているのが分かります。
※NoSQLの製品例
・Redis
・Apache HBase
・MongoDB
※NoSQLは、SQL言語で操作しないものである為、概要説明にとどめます。
5. SQLでできること
データベースに格納されている膨大なデータに対し、SQLで以下の操作を行うことができます。
5-1. データの追加、更新、削除
テーブルに対して新しい行を追加したり、特定の条件を指定することで既存データの更新や、不要な行の削除を行うことができます。
5-2. データの検索・抽出
特定の条件に合うデータの抽出や、複数のテーブルを結合して新しい表を作成することができます。
(例)取引先マスタと社員マスタを結合して、取引先毎の担当者表を作りたい場合
5-3. データの集計
データをグループ化して、合計値、平均値、最大値、最小値などを計算することができます。
(例)取引先マスタの取引先毎に、売上金額の合計を知りたい場合
6. まとめ
・データベースには、RDBとNoSQLの2種類ある
・SQLとは、RDBを操作するための言語である
・RDBとは、行(レコード)と列(フィールド)の表形式で構成されており、
複数の表(テーブル)を関連付けて管理することができる