SQL
SQL(Structured Query Language)とは、リレーショナルデータベースを操作するための言語のひとつです。
元々IBM社が開発した言語で、今はANSI(アメリカ規格協会)やISO(国際標準化機構)によって標準仕様が規格化されています。
SQLは使用するDBMS(データベース管理システム)によって若干仕様が違いますが、大部分は「標準SQL」と呼ばれている仕様に従って記述すれば、その機能を果たすことが可能です。この講座ではBaseのデフォルト埋め込みデータベースエンジンHSQLDBの仕様に沿って解説し、Base上で実行結果の検証が可能なSQL文を紹介しています。
BaseはHSQLDB以外のデータベースエンジン、つまりMySQL、MariaDB、Adabas、MS Access、あるいはPostgreSQLなどに接続することが可能です。このような環境下では接続したデータベースエンジンの仕様に沿って記述して下さい。
SQL文の種類
SQLは大きく分けて下記の3種類から構成されます。
・データ定義言語(DDL:Data Definition Language)
データベース上にデータ構造を定義するための言語です。
「CREATE TABLE」文や「DROP TABLE」文などのSQL文がそれに当たります。
・データ操作言語(DML:Data Manipulation Language)
データベース上でデータの検索・新規登録・更新・削除を行うための言語です。
「INSERT」文や「SELECT」文などがそれに当たり、もっとも頻繁に使用されるSQL文です。
・データ制御言語(DCL:Data Control Language)
データベース上でデータに対するアクセス制御を行うための言語です。
ユーザー情報を作成する時に使用する「GRANT」文などのSQL文ががそれに当たります。
SQLの基本構文
SQLの根幹となるのがキーワードです。キーワードは「予約語」とも呼ばれ、SQLにあらかじめ用意された、命令のための単語です。
このキーワードの後ろに「単語」を付けたのが「句」で、その「句」を複数組み合わせることでSQL文(「SQLステートメント」または「SQLコード」ともいいます)が完成します。
「単語」にはテーブルやビューなどのオブジェクト名やデータ、または式を記述します。
【基本的なSQLの構文例】
SQLの記述ルール
SQLの記述ルールは下記のとおりです。
a) キーワードや単語との間は半角スペースで区切ります。半角スペースはいくつ入れても問題ありません。また、半角スペースの替わりに[Tab]キーを使って間を空けることもできます。また、適宜改行することも可能ですが、クエリーデザイン画面で作成したSQL文は、保存した後はTabや改行情報が失われてしまいますので注意が必要です。(このことは次章で詳しく説明します。)
b) 区切り文字として半角スペースの替わりに全角スペースを使うと文法上エラーとなります。
c) SQL文の終端文字として「;」(セミコロン)を付けます。単独のSQL文では「;」は省略可能ですが、マルチステートメント(後述)の場合は省略できません。
d) テーブル名や列(フィールド)名は「”」(ダブルクオーテーション)で囲みます。
e) 数値は0~9、「–」、「+」、「.」および算術演算子の記号で記述します。
f) 文字列(リテラル)は「‘」(シングルクオーテーション)で囲みます。指定したい文字列に「‘」がある場合は「‘」を重ねて記述します。
(アポストロフィとして使用する例)‘Let’’s try SQL’
g) 大文字と小文字は区別されません。ただし、文字列の内容や、テーブル名・列名自体は区別されます。
(注)Baseでテーブル名や列名に使用できる文字は下記のとおりです。
・半角のアルファベット
・半角の数字
・「_」(アンダーバーまたはアンダースコアと読みます)
・全角文字
ただし、Baseを本格的に、つまり実務的に運用する場合、テーブル名や列(フィールド)名に全角文字を使用することはお勧めしません。その理由は、データベースの運用やSQL等、オブジェクトのメンテナンス時に漢字変換作業が加わると、メンテナンス担当者に余計な負担が掛かり、作業効率が下がるからです。