SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新人エンジニアに贈る、SQL Training

Web開発に必要不可欠なデータベースやSQLとは? SQL習得に必要な基本のキを学ぶ

新人エンジニアに贈る、SQL Training 第1回


SQLとは?

 SQL(Structured Query Language)とは、DBMSにおいて、データの操作や定義を行うための高水準な言語です。SQLはエスキューエルまたはシークェルと読みます。

SQLの歴史

 SQLの起源は、1970年のコッド博士のリレーショナルモデルの論文に書かれていたクエリ言語のデザインです。彼の論文で提案されていたクエリ言語が実装されることはありませんでしたが、そのクエリ言語の設計を元に、IBMがSEQUEL(Structured English Query Language)を開発しました。

 SEQUELは、世界初のRDBMSであるSystem Rを操作するために作られました。SQLがシークェルと読まれるのは、SEQUELの名残です。1980年代に入ると、DBMSの商業化が進み、それと合わせてクエリ言語の開発も進んでいきました。そして、1986年から1987年にかけて、ANSI(米国国家規格協会)やISO(国際標準化機構)によって言語の標準化が行われ、 SQL規格が出来上がりました。それから、数年おきにSQL規格は更新されています。最新の標準規格は2016年のものになります。下の表は、標準規格と追加された主な機能の一覧です。聞き覚えのある機能もあると思います。

 SQLは、長年の機能追加により、非常に汎用的かつ機能豊富な言語です。しかし、注意したいのは、標準規格への準拠の程度や実装方法はベンダー依存ということです。なので、SQLを利用する際は、利用するDBMSの製品仕様をしっかりと読んでいただく必要があります。

宣言型

 ここから、SQLの言語自体の話に移ろうと思います。まず、SQLは宣言型の言語になります。これが意味するところは、SQLユーザーはデータをどうやって得るかではなく、何が欲しいかを記述すればよいということです。言い換えると、データにアクセスするために、手続き型のコード(どこどこのデータが欲しいなど)を書く必要はなく、命令文(このデータが欲しいなど)を書けば良いということです。

 こういう表現が可能になった背景には、データ独立性があります。データ独立性によって、データベースはアドレスやポインタから解放されました。データの管理方法が位置から内容へ移行(どこに何を保存するから、単に何を保存する)したことによって、データ操作の表現も物理レベルから論理レベルへと引き上げられたということです。

リレーションとテーブル

リレーショナルデータベースのデータモデリング
リレーショナルデータベースのデータモデリング

 SQLが扱うデータの単位は何か。リレーショナルモデル準拠のDBMSは、リレーション(またはテーブル)がデータの基本単位になります。リレーションは、スキーマとインスタンスで構成されます。スキーマとは、データの構造や制約の定義のことで、メタデータのようなものです。インスタンスは、スキーマを満たす実際のデータ集合をさします。リレーションは、2次元表として可視化することができます。

 表の列は属性(フィールド)と呼ばれ、行はタプル(レコード)と呼ばれます。それぞれの属性には有効な値の範囲が存在し、この範囲のことをドメインと呼びます。タプルは複数の属性値から成り、全体として何らかの事実を表します。つまり、インスタンスは複数のタプルから構成され、全体として似たような事実の集まりを表します。

学生リレーションのテーブル表現
学生リレーションのテーブル表現

 実際、SQLのテーブルとリレーショナルモデルのリレーションにはいくつか違いがあるので、全く同じものではないということだけ覚えておいてください。例えば、テーブルは行の重複が許可されていたり(事実が複数保存可能)、属性値が不明な状態(NULL)が許されていたりします。ちなみに数学的には、テーブルは集合ではなく、タプルの多重集合になります。

 ここで、用語の整理をします。開発の現場では、さまざまな用語が同じものを指しているケースが多いように思われます。例えば、行とレコード、属性とフィールドなどが挙げられます。普段はあまり意識する必要はないですが、会話の文脈によっては使い分けが必要な場面があるので、対応表を頭にいれておくと良いかもしれません。

用語の対応表
用語の対応表

まとめ

 本記事では、データベースとSQLの歴史を振り返りながら、SQLが扱うデータの基本単位であるテーブルの理解のために重要なポイントをおさえてきました。次回は、いよいよSQLの文法について紹介します。データ構造を定義するためのDDLや、データを操作するためのDMLというSQLのサブ言語について解説していく予定です。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
新人エンジニアに贈る、SQL Training連載記事一覧

もっと読む

この記事の著者

三宅 悠太(ミヤケ ユウタ)

 海外の大学でコンピュータサイエンスの学士を取得後、株式会社サイバーエージェントに入社。チャットボットプラットフォームのバックエンド開発などを経て、現在は、株式会社メルコインで、暗号資産やブロックチェーンに関するサービス開発に従事。その他、TechTrainのメンタリングも務める。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/16513 2023/01/20 17:19

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー