2.1 リレーショナルデータベースとSQL

この節では、リレーショナルデータベースの基本概念とSQLの基本事項について説明します。

リレーショナルデータベース(RDB: Relational Database)

リレーショナルデータベースは、データを表の形で管理するデータベースです。表のことをテーブルやリレーションと呼ぶこともあります。表は、商品や社員など、同じ概念に属するデータ集合の単位で作成します。一般に、表にはその内容を表す名前(表名)を付け、必要に応じて複数の表を1つのデータベース中に作成することになります。

表の縦方向のデータの並びを列、横方向の並びを行と呼びます。列のことをカラムや属性、行のことをタプルやレコードと呼ぶこともあります。列には名前(列名)を付けますが、行には名前が付きません。行を識別したい場合には、特定の列を主キーとして定義し、主キーの値によって識別します。以下は、社員に関する表(社員表)の例です。

社員表
社員番号 氏名 所属 生年月日
1 佐藤未来 総務部 1960-07-08
2 鈴木薫 技術本部 1970-05-05
3 高橋光 営業本部 1980-03-02


社員表は4つの列と3つの行で構成されています。各列は同じデータ型のデータで構成されており、例えば社員番号列には整数データ、氏名列と所属列には文字列データ、生年月日列には日付データが格納されています。また、各行は個々の社員のデータを表しており、例えば1行目は、社員番号1番、佐藤未来、総務部所属、1960年7月8日生まれの社員を表しています。

SQL

SQL(エスキューエル)は、リレーショナルデータベースの標準言語です。1987年に国際標準が制定され、基本機能はPostgreSQLを含むすべてのリレーショナルデータベースで利用できます。SQLはコマンドとして入力するほかに、一般のプログラミング言語に組み込んで使用することもできます。SQLには機能単位に多数の文(SQL文)が用意されています。一般に1つのSQL文は、複数の句から構成されます。以下は、社員表から社員番号1番の社員の氏名を検索するSQL文(SELECT文)の例です。

SELECT 氏名
  FROM 社員表
  WHERE 社員番号 = 1

このSELECT文は、SELECT句、FROM句、WHERE句の3つの句を含みます。

SQL文の基本ルール

SQL文には、以下の基本ルールがあります。

  • SQL文を構成するSELECT, FROM等の句を指定できる順序は固定であり、変更はできません。
  • SELECT, INSERT等のキーワードは半角で記述します。大文字と小文字は区別しません。本書では大文字を使用することにします。
  • 表名, 列名等の識別名の先頭文字は英字でなければなりません。2文字目以降は数字も使えます。また、全角文字も英字と同じ扱いになります。
  • 数値はそのまま何も付けず、文字列や日付時刻の値は一重引用符(')で前後を囲んで記述します。
  • 1つのSQL文を複数行に分けて記述することが可能です。ただし、キーワードの途中で改行できません。 
  • 文字列中に指定された場合を除き、空白、タブ、改行の各文字は同じスペースの扱いになります。
  • コメントは二重ハイフン(--)で始まる文字の並びで、行末まで続きます。実効的にはスペースの扱いになります。