データベース千夜一夜第2回

アプリケーションとSQL
~SQLの基本事項
長谷川裕行
有限会社 手國堂

SQLの基本構文

SQLはプログラミング言語に比べて非常に単純な構成となっています。扱う対象がコンピュータのハードウェアや様々なデータといった大がかりなものではなく、データベースに限定されているためです。そのため、命令語の数も構文の種類も少なく、基本事項は簡単に覚えられます。


- 基本構造は実に単純 -

基本的な命令はSELECT(選択)、INSERT(追加)、UPDATE(更新)、DELETE(削除)の4つで、これら各命令に対象とするテーブル(表)やフィールド(列)などを示す補助的な指示を組み合わせ、1つの命令文を形成します。

こうして形成された命令文を「ステートメント(構文)」と呼びます。よく「SELECTステートメント」などと表記されますが、それは「SELECT命令を使った構文」という意味であって、SELECTという1つの命令語を「ステートメント」と呼ぶのではありません。

また、SQLを使って書き表された命令文(1行または複数行の集合)を、総体的・総括的に「SQL文」と呼びます。


- 構文の基本形 -

最も単純なSQL構文は

  命令語 パラメータ 句 パラメータ

という形です。

例えば

  「商品」テーブルから
  「商品番号」フィールドと「品名」フィールドの
  データだけを抜き出せ

という指示は、以下のようになります。

SELECT 商品番号, 品名 FROM 商品
(a) (b) (c) (d)

(a)の“SELECT”が「テーブルからデータを選択して取り出せ」という命令語、(b)の“商品番号, 品名”がSELECT命令に対するパラメータで、「取り出してくるフィールド」を示します。(c)の“FROM”はSELECT命令に対する補助的な指示で、「どこから(どのテーブルから)取り出してくるのか」を示します。(d)がFROMに対するパラメータで“商品”というテーブルから取り出してくることを示しています。

FROMのように基本的な命令の補助として使われる語を「句」と呼びます。SELECT命令にはFROM句が必須です。

上記の基本形は、どのような場合でも変わりません。次回以降、様々な命令語とその使用方法を紹介していきますが、構文自体がどれだけ複雑になっても、基本構造は「命令語 パラメータ 句 パラメータ」という形であり、すべてその発展形となります。


- すべて半角文字で -

SQL文では、SELECTなどの命令語やFROMなどの句、その他あらかじめ規定されている予約語は、すべて半角の英字で記述します。また、計算や連結を指示する+-*/=!などの演算子も半角文字で記述します。

全角文字は、テーブル名やフィールド名を示す場合と、文字列型の値(フィールドに格納するデータ)を示す場合以外は用いられません。


- 大文字/小文字? -

SQLの予約語は半角でありさえすれば、大文字でも小文字でも構いません。以下の3つのSQL文は、すべて同じ意味です。


SELECT 商品番号, 品名 FROM 商品
select 商品番号, 品名 from 商品
Select 商品番号, 品名 From 商品

本記事では基本的にすべて大文字で書き表すことにしますが、あくまで慣例であって決まりではありません。ただ、SQL文は最終的にプログラミング言語のソースコード中で文字列定数として記述されるため、プログラミング言語の命令文と区別できるようにするべきです。

Visual BasicやC++、Javaなどでは、識別名が先頭が大文字で後が小文字という形となるのが一般的です。そのような場合にはSQL文をすべて大文字で記述するとよいでしょう。逆にすべて大文字のCOBOLやFORTRANではSQLをすべて小文字で書くと判別しやすくなります(但し、小文字の使用が可能かどうかは、処理系によります)。


あとがき

アプリケーションからデータベースを制御するために必須となるSQLは、実にシンプルな言語です。プログラミング言語のように、言語の文法と共にOSのAPI仕様を意識したり、実行環境の違いに気を配る必要はありません。ほとんどのRDBMSで同じ命令体系が使えるのですから、基本を覚えてしまえば後は自在に応用できます。

次回以降、SQLの基本から複雑なデータベース操作、アプリケーションでの使いこなし方法など、データベースとSQLの様々なテクニックや情報を紹介していきます。



トップページ
データベースとアプリケーション
SQLの特徴
SQLの基本構文
基本構造は実に単純
構文の基本形
すべて半角文字で
大文字/小文字?
あとがき
Copyright © MESCIUS inc. All rights reserved.