# CHAPTER 1: はじめに

## 1.1 概要

この章では、Empress リレーショナルデータベースマネージメントシステム (RDBMS) の C 言語 Empress SQLプリコンパイラのリファレンスマニュアルです。

Empress 問い合わせ言語の概要、 その操作規約、および構文規約の詳細は Empressマニュアルセットの Empress SQL: リファレンス に提供されています。

このマニュアルは、C 言語プログラムとデータベースの基本を 理解されているユーザーであることを前提に記述されています。 また、このマニュアルは、Empress SQLプリコンパイラの ガイドおよびリファレンスとして記述され、一般的な データベースおよびEmpressのアプリケーション作成の プログラミングガイドではないことに注意してください。

Empress SQLプリコンパイラは、 C 言語プログラム中に SQL コマンドを記述し、 Empressデータベースへのアクセスおよび データ格納することが可能です。 Empressデータベースは 以下のテーブルのオペレーションをサポートしています。

- テーブルへの行の追加
- テーブルの行の更新
- テーブルの行の削除
- テーブルの行の検索
- 検索された行のコンテキスト（レコードセット）の全部または1部の追加、更新、削除
- データの整合性の保持のために Empress のトランザクションの使用

SQLプリコンパイラコマンド構文を示すために使用される表記方法と合わせて、 データベース、テーブルおよびアトリビュートの名前付けの規約を説明します。

## 1.2 予約キーワード

プリコンパイラは、SQLおよびホスト言語の両方に関係した いくつかのキーワードを識別します。 キーワードではないものは、 SQL宣言セクションのプログラム変数名として 使用することができます。

以下は、プリコンパイラが識別するキーワードのリストです。 この予約キーワードのリストは、次の3つのセットの組み合わせたものになります。

1. プリコンパイラ(`empesql`)が認識するキーワードのセット
2. Empress ビルトイン関数のセット
3. Empressでサポートされているデフォルトの数学関数のセット

プリコンパイラによって識別されるキーワードは、このセクションで記述されます。 Empress ビルトイン関数 のセットおよび Empressでサポートされているデフォルト数学関数 は[A4: SQL リファレンス: Empress 規約] で提供されます。

`-` | `/` | `{`
`}` | `*` | `+`
`=` | `again` | `allocate`
`and` | `asc` | `ascending`
`attr` | `attribute` | `auto`
`automatic` | `begin` | `between`
`by` | `bypass` | `bypass_lock`
`call` | `cancel` | `char`
`close` | `close_table` | `commit`
`comparison` | `const` | `continue`
`count` | `current` | `cursor`
`da_cntrl` | `da_data` | `da_dlen`
`da_name` | `da_nlen` | `database`
`da_type` | `db` | `deallocate`
`declare` | `deferred` | `delete`
`desc` | `descending` | `describe`
`descriptor` | `distinct` | `double`
`drop` | `dtgboolean` | `dtgbulk`
`dtgchar` | `dtgdate` | `dtgdecimal`
`dtgexternal` | `dtgfloat` | `dtginteger`
`dtginterval` | `dtgtext` | `end`
`excl` | `exclusive` | `exec`
`execute` | `exit` | `extern`
`fetch` | `fetch_again` | `float`
`for` | `found` | `free`
`from` | `generic` | `get`
`goto` | `immediate` | `incl`
`include` | `inclusive` | `init`
`inout` | `input` | `insert`
`int` | `into` | `is`
`like` | `long` | `max`
`memory` | `next` | `not`
`null` | `of` | `off`
`on` | `open` | `open_table`
`or` | `order` | `output`
`prepare` | `prior` | `range`
`read` | `register` | `rollback`
`section` | `select` | `set`
`short` | `signed` | `sort`
`sql` | `sqlca` | `sqlda`
`sqlerror` | `sqlwarning` | `start`
`static` | `struct` | `table`
`to` | `transaction` | `typedef`
`union` | `unique` | `unsigned`
`update` | `using` | `value`
`values` | `void` | `volatile`
`whenever` | `where` | `with`
`work` |  |

プリコンパイラは、大文字・小文字の区別をせずキーワードを受け付けますが、 ホスト言語のキーワードの指定は、 使用しているマシンのコンパイラの規約に従い入力する必要があります。

テーブルまたはアトリビュート名が、上記のキーワードと重なった場合、 単純な名前としてではなく、複合した名前として扱う必要があります。 アトリビュート名は、引用符で囲むか `ATTR`キーワードをアトリビュート名の前に記述するかあるいは テーブル名とピリオド(`TABLE_NAME.ATTR_NAME`規約) をアトリビュート名の前に記述する必要があります。

上記に記載されたキーワードセットのほかに パーシステントストアードモジュール(PSM)としての関数の名前もまた そのデータベースに対してのキーワードとして考慮する必要があります。

## 1.3 同意語

以下は、プリコンパイラのキーワードの 同意語のリストです。

`!=` | `~=`
`!MATCH` | `~MATCH`
`!SMATCH` | `~SMATCH`
`ASC` | `ASCENDING`
`ATTR` | `ATTRIBUTE`
`CANCEL` | `ROLLBACK`
`DATABASE` | `DB`
`DESC` | `DESCENDING`
`DISTINCT` | `UNIQUE`
`EXCL` | `EXCLUSIVE`
`INCL` | `INCLUSIVE`
`ORDER` | `SORT`
`TRANSACTION` | `WORK`