CHAPTER 2: Empress の規約




2.1 コマンドシンタックス記法

わかり易くするために、システムプロンプトとEmpressプロンプトは、短い 例題の場合には記述しません。 長くて複雑な例題の場合には、オペレーティングシステムプロンプト(%として表わす) およびEmpressアスタリスクプロンプト(*)が、コマンドの始まりおよび終了を 示すために記述されます。

読者が記法内の情報を識別するのを援助するために、次の記述方式がこのマニュアル の中で使用されます。 コマンドのシンタックスを理解するのには、この情報を必要とするので、この章を 注意深く読んでください。

Table 2-1: 一般的な記述方法

概要
ALTER table コマンドシンタックスとスクリプト名は、クーリエ書体で表されます。
Ready.e Empressプロンプトに対する応答(ユーザ入力)は、クーリエボールドです。
MSTERMDB Empressシステム変数は大文字です。必ず大文字で指定しなくてはなりません。 変数の始まりは必ず、MSです。
SQL Reference 新しい項目の照会や説明に、タイトル、本、マニュアル、ドキュメントを示す場合 にはイタリックが使用されます。
重要なメッセージ 以下に示す情報は重要です。

Table 2-2: 記述規約 - SQLステートメント

概要
SELECT
DISPLAY
コマンドの構文定義で、英大文字の文字列はキーワードです。 Empressで使用する場合には、大文字、小文字が混同しても問題ありません。
table
attr
小文字はカテゴリを参照します。Empressで使用された場合、実際の名前や、 表現の適切な記述が指定されなくてはなりません。例えばpersonnelは、 テーブル名です。 ユーザが定義した名前は、定義したものと同一の名前を指定しなくてはならない事に 注意してください。
|item 1|
|item 2|
縦線 "|" 間にある項目は、どちらか1つも選択しなくてはなりません。
[ ] 角括弧で囲まれた項目は、オプションであることを示します。
{ } 鍵括弧で囲まれた項目は、指定がなくても、複数指定でもいいことを示します。
SELECT command マニュアル内で、コマンドを表す場合には大文字で記述されます。

Table 2-3: 記述規約 - キーボードのキー

概要
<Return> キーは、<>で囲まれた中に記述されます。
<Ctrl+A> 複数のキーを同時に入力する場合には、キーを'+'で継続します。


2.2 コマンドの入力

2.2.1 自由なフォームでの入力

Empressコマンドは、1つ以上のブランク、タブ、新しいラインによって分離 された文字列の自由なフォームでSQLインターフェースに入力されます。 コマンドは、セミコロン(;)で終了を宣言します。またセミコロンは省略することも可能 です。 コマンドのEmpressに対する入力は、<Return>キーを押すことにより、 実行されます。

コマンドは、1行で入力されたり、複数行で入力されたりします。 以下にコマンドの例を示します。

   SELECT number, name FROM personnel WHERE phone="922-1743";

あるいは、ロジックを強調するために複数行にします。

   SELECT number, name FROM personnel
      WHERE phone="922-1743";

コマンドを複数行で入力する場合、Empressは、行の最後にピリオド(.)を 表示し、次の行への入力を促します。 いくつかのマシンでは、Empressアスタリスクプロンプト(*)や、継続プロンプト のピリオド(.)は、違う文字として表示されます。 両方のプロンプトはデータ・ベース 管理者によって、カスタマイズする事が可能です。したがって、端末上で見るプロンプト はこのマニュアルの中で示されたものと異なる場合があります。 詳細はEmpress: Database Administrator's Guideにある、Empress System Variablesを参照してください。

2.2.2 1ラインの入力

Empressシステム変数MSQLONELINEがセットされる場合、コマンドは 、終了を示すと共に1行で入力されます。この場合、複数行のコマンドが必要が あれば、システム変数MSLINECONTで設定している、継続文字を行の最後で指定 します。

例えば、<Return>でコマンドの終了を入力する場合。

   SET MSQLONELINE TO 'x';

複数行の継続文字として、"-"を使用する場合。

   SET MSLINECONT TO '-';

上記2つの変数がセットされ、以下のコマンドを入力する場合。

   SELECT number, name FROM personnel WHERE phone="922-1743"

終了を宣言するセミコロンが、要求されないことに注意してください。 以下のコマンドではエラーとなります。これを継続行の設定MSLINECONTを "-"として指定する場合。

   SELECT number, name FROM personnel
      WHERE phone = "922-1743";

以下の指定で、コマンドは正常に実行されます。

   SELECT number, name  FROM personnel -
      WHERE phone = "922-1743"



2.3 コメントの入力

コマンド中のコメントを埋め込むいくつかの方法があります。 "/*"と"*/"の間にテキストを記述する方法。あるいは2つの ダッシュ(--)が先頭にある1行もコメントとされ、コマンドを実行する際に無視され ます。 これはコマンドのスクリプトに注釈を挿入するのに役立ちます。

次の例において、第1のラインは無視されます。

   -- Print all Mosca's loans

   SELECT * FROM loans WHERE name = 'Mosca';

次の例において、最初の2行は無視されます。

   /* Print all Mosca's loans and
      then the total amount */

   SELECT * FROM loans WHERE name = 'Mosca';
   SELECT SUM amount FROM loans WHERE name = 'Mosca'

Empress Host Language Interface: Command Language Interfaceを参照してください。シェルスクリプト、バッチファイル中 のコマンドについて詳細に説明されています。



2.4 データベース名、テーブル名、フィールド名、ファイル名

シンタックス定義では、小文字のイタリック体中の文字列が、コマンドを使用する 場合に適切な名前を指定しなければならないカテゴリーを示すために使用されます。 これらのカテゴリーは次のとおりです。

Table 2-4: カテゴリー名

カテゴリー 意味
database データベースの名前。これは、データベースが作成された時のディレクトリー名と 同一です。
table データベースdatabase:に作成されたテーブル名。
attr テーブルtable.に作成されたフィールド名。

データベースdatabaseの参照ディレクトリは、複数の ディレクトリーあるいはファイルシステム上に存在する場合があります。 データベースが作成される場合、ディレクトリーは、データベース名と同じ名前で作成 されます。 従って、データベース名は参照ディレクトリーの名、ディレクトリー用の絶対パスを 指定します。 このマニュアルでは参照ディレクトリーをデータベースディレクトリーと呼びます。

Empressデータベースによって使用されるディレクトリーにデータベース ファイルでないファイルを置かないでください。 この規則は、さらに、データベースのリモートテーブル用に使用された 他のディレクトリーに適用されます。 この規則に従わないと、データベースファイルでないファイルを損失する場合があります。

テーブルの作成についての詳細は、Empress SQL: User's Guideを参照してください。

テーブル名とフィールド名の長さは32文字以内の印刷可能なASCII文字から構成されます。

2.4.1 簡単な名前

簡単な名前は英字から始まり、文字(大文字と小文字)、数字および下線から のみ成ります。 ブランク、タブ、ピリオドあるいは非印刷文字は許可されません。 Empressコマンド(もしそれらが偶然Empressキーワードのうち のどれかと一致した場合には、それは複雑な名前として扱われます)の中で使用された 場合、フィールド名およびテーブル名を引用符で囲む必要がありません。 簡単な名前の例はpersonnelnumberです。

2.4.2 複雑な名前

複雑な名前は非印刷文字以外の、数字あるいは他の文字以外から始まるかも しれないし、ブランク、タブ、ピリオドなどを含んでいるかもしれません。 Empressコマンドの中で使用された時、それらがどこに始まり終了するか Empressが知っています。 複雑な名前は引用で囲んで指定します。引用は、次の章により詳細に解説されます。 例題の中でテーブル名auto partsは、"auto parts"と して記述しなくてはなりません。

テーブルを参照する場合、キーワードTABLEを複雑なテーブル名の前に指定 しなくてはなりません。また同様にフィールドを参照する場合、キーワード ATTRを複雑なフィールド名の前に指定しなくてはなりません。

When referring to a table, the complex table name may be preceded by the keyword TABLE. When referring to an attribute, the complex attribute name must be preceded by the keyword ATTR.

2.4.3 他のデータベースにあるテーブルへのアクセス

もしテーブル名の前にデータベース名を指定しなければ、Empressは現在の データベースにテーブルをがあるものとして処理します。データベース名および テーブル名はコロンによって分離されます。

以下に示す例は、キーワードTABLEが先行するテーブル名の例です。

   TABLE personnel

   TABLE repairs:personnel

以下に示すコマンドは、Empressloansテーブルを検索させます。

   SELECT * FROM loans;

以下に示すコマンドは、Empressrepairsデータベースの中の、 loansテーブルを検索させます。

   SELECT * FROM repairs:loans;

データは、1つのコマンド中での1つ以上のデータベースをアクセスするかもしれま せん。データベースaccountsにテーブルloans、 データベースrepairsにテーブルpersonneがある場合、 下記を実行することができます。

   SELECT * FROM accounts:loans, repairs:personnel
      WHERE personnel.name = loans.name;

2.4.4 各フィールドの識別

2つ以上のテーブルが同じ名を備えたフィールドを持っている場合、テーブル名および フィールド名をピリオドで分離して指定することにより識別する事ができます。 それらがともに使用される場合、データベース名およびテーブル名はコロンによって 分離します。

   number
   personnel.number

データベースrepairsでのpersonnelテーブル中の nameフィールド名は、次のように指定します。

   repairs:personnel.name

フィールド名あるいはテーブル名が複雑な場合は引用符で囲まなくてはならない事 を覚えておいてください。 auto partsテーブル中のpart nameフィールドは、 "auto parts", "part name"と指定しなくて はなりません。

2.4.5 フィールドと値の識別

いくつかのコマンドでは、複雑なフィールド(それらは引用符によって囲まれなけれ ばならない)および文字列を識別することが必要かもしれません。それはWHERE 句の中で発生するかもしれません。例えば、フィールドおよび文字列は比較の一方に、 または選択されている検索項目のリスト中で使用されるかもしれません。 複雑なフィールド名は明示的に、キーワードATTRを挿入することによる引用 された文字列と判別することができます。 ATTRは同様に単純なフィールド名に先行するかもしれません。

例えばauto partsテーブルからparts nameフィールドに対する 値を検索する場合。

   SELECT ATTR "part name" FROM "auto parts";

このコマンドは、以下のような出力を行います。

   part name

   Hubcap
   Fender - rubber
   Fender - chrome
   Spark Plugs
   Rear Wing
   Front Wing
   Radiator
   Spray paint
   Chrome paint

キーワードATTRを省略すると、Empressは文字列の値として part nameを扱います。 その結果、文字列のpart nameは検索された各レコードのために表示されます。

   SELECT "part name" FROM "auto parts";

このコマンドは、以下のような出力を行います。

   EXPRESSION_1

   part name
   part name
   part name
   part name
   part name
   part name
   part name
   part name
   part name

他の方法でフィールド名を識別するには、テーブル名.フィールド名 と指定します。

2.4.6 オペレーティングシステムのファイル名

オペレーティングシステムのファイル名(すなわちデータベース名)は正常な オペレーティングシステム協定に従わなくてはなりません。ファイル名がスラッシュ、 特別の文字あるいはピリオド含んでいても、Empressコマンドの中で使用された 場合、それは引用符で囲まなくてはなりません。

UNIXでは、ファイル名としてファイルの絶対パスが指定されるかもしれません。

   /usr/joe/work/loanlist

WindowsまたはNT中でのファイル指定はドライブ、パスおよびファイル名を含んでいる かもしれません

   C:\usr\joe\work\loanlist.dat

これは、ディレクトリーの中で作成されるか、あるいはEmpressが起動された もの以外にディレクトリーから読むファイルを許可します。



2.5 引用符の使用

値としてEmpressコマンドに入力される場合、引用符は文字列の前後で使用 します。1文字のCHARACTERフィールド値にも指定する必要があります。 これは表現での、フィールド名の使用上の混乱を回避するのに不可欠です。 複雑なフィールド名あるいはテーブル名も引用符で囲まなければなりません。 シングルクオート、ダブルクォートともに有効です。 次の例は、Empressにとって同一のコマンドとなります。

   SELECT * FROM loans WHERE name = 'Jones';
   SELECT * FROM 'auto parts';

   SELECT * FROM loans WHERE name = "Jones";
   SELECT * FROM "auto parts";

しかしながら、名前か文字列がそれ自身引用符を含んでいる場合、前後の引用符の 指定は重要です。 文字列か複雑な名前にシングルクォートを持っていれば、前後の引用符は ダブルクォートを使用するべきです。 また文字列か複雑な名前にダブルクオートを持っている場合は、引用符は シングルクォートを使用します。

例えば、O'Brienの電話番号を調べるために、次のものを入力します。

   SELECT phone FROM personnel
      WHERE name = "O'Brien";



2.6 見当たらないデータ値

見当たらないデータ値はキーワードNULLによって自由形式コマンドの中で 示されます。これは単に入力される、大文字あるいは小文字、データ値として、また 任意のデータタイプのための有効な入力、あるいは比較のために許可されます。 しかしながら、NULLNOT NULLとして作成されたフィールド、 またはデータの入力を無効とする条件が設定されたフィールドでは入力は無効です。

対話型のインターフェースを使用する場合、見当たらない値は NULLではなく".~"の入力により示されます。



2.7 予約キーワード

次の単語は対話型のSQLのためのEmpressが使用する予約キーワードです。 予約のキーワードのリストは3つのセットのコンビネーションです。

  1. 対話型のSQLのためにEmpressパーサによって認識されたキーワードのセット
  2. Empressの組込み関数のセット
  3. Empressにサポートされた標準の数学関数のセット

2.7.1 対話型SQLにおけるEmpressパーサーに認識されたキーワード

- * +
= ADD ADMIN
AFTER AGGREGATE ALIAS
ALL ALLOCATE ALTER
AND ANY AS
ASC ASCENDING AT
ATTR ATTRIBUTE BEFORE
BEGIN BETWEEN BODY
BTREE BY BYPASS
BYPASS_LOCK CALL CANCEL
CASCADE CHANGE CHECK
CHECKSUM COMMENT COMMIT
COMPARISON CONSTRAINT CONVERT
CORRESPONDING COUNT CREATE
CROSS DATABASE DB
DBA DECLARE DELETE
DESC DESCENDING DIRECT_FROM
DIRECT_INTO DIRECT_ONTO DISABLE
DISPLAY DISTINCT DO
DOUBLE DROP DUMP
EACH EDIT EMPTY
ENABLE END EQUALITY
ESCAPE EXCEPT EXCL
EXCLUSIVE EXECUTE EXISTS
EXIT EXPRESSION FOR
FOREIGN FROM FULL
FUNCTION GENERAL GENERIC
GRANT GROUP HAVING
HELP HOLD IN
INCL INCLUSIVE INDEX
INFIX INNER INOUT
INSERT INTERSECT INTO
IS JOIN LANGUAGE
LEFT LEVEL LIKE
LIST LOCATE LOCK
MASTER MASTERS MINUS
MODE MODULE NATURAL
NOT NULL OF
OJ ON ONTO
OPERATOR OPTION OR
ORDER OUT OUTER
PARAMETER POSTFIX PREFIX
PRIMARY PRINT PRIORITY
PRIV PRIVILEGE PROCEDURE
RANGE RC RECALL
REFER REFERENCES REFERENTIAL
RENAME REPLICATE REPLICATES
REPLICATION REPORT RESTRICT
RETURNS REVOKE RIGHT
ROLE ROLLBACK ROUTINE
ROW RUN SAVEPOINT
SELECT SET SHOW
SOME SORT SQL
START STOP STORE
STYLE SUBSET TABLE
TIMESERIES TO TRANSACTION
TRIGGER TRIGGERS UNION
UNIQUE UNSET UPDATE
USER USING VALUES
VIEW WHEN WHERE
WIDTH WITH WORK
WORKSPACE WRAPMARGIN {
}

2.7.2 Empress組込み関数からセットされるキーワード

!= / ~=
% < <=
<> > >=
ABS AVG BYTE_LENGTH
CEILING CONCAT DATENEXT
DAY DAYNAME DAYOF
DAYOFWEEK DAYOFYEAR DAYS
DISPLAY_LENGTH FLOOR HOUR
HOUROF HOURS IS_DECIMAL
IS_INTEGER IS_WHITE LENGTH
LPAD LSCAN LTRIM
!MATCH ~MATCH MATCH
MAX MICROSECOND MICROSECONDOF
MICROSECONDS MIN MINUTE
MINUTEOF MINUTES MONTH
MONTHOF MONTHS NOW
NULLVAL PICTURE ROUND
RPAD RSCAN RSTRINDEX
RTRIM SECOND SECONDOF
SECONDS SIGN !SMATCH
~SMATCH SMATCH STDDAYNAME
STRDEL STRINDEX STRINS
SUBSTR SUM TODAY
TOLOWER TOUPPER TRUNC
WEEK WEEKOFYEAR WEEKS
YEAR YEAROF YEARS

2.7.3 Empressにサポートされた標準数学関数のキーワード

ACOS ASIN ATAN
ATAN2 COS COSH
ERF ERFC EXP
FABS FMOD FREXPEXP
FREXPMAN GAMMA HYPOT
J0 J1 JN
LDEXP LOG LOG10
MODFFRAC MODFINT POW
SIN SINH SQRT
TAN TANH Y0
Y1 YN  

上記のキーワードセットの他、パーシスタント・ストアド・モジュール(PSM)で定義 された機能の名前もそのデータベース用キーワードと見なされます。 フィールド名やテーブル名と異なり、キーワードはいずれの場合も同じです。 それらは、大文字、小文字あるいは2つの混合で入力されるかもしれません。

テーブル名またはフィールド名に、上記のうちの1つのキーワードを使用する場合、 この名前は複雑な名前として扱われます

フィールド名は引用符で囲こむか。キーワードATTRによって続けて、 テーブル名およびピリオド前に付けます。 本章の値とフィールドの区別 を参照してください。



2.8 同義語

以下に同義語を示します。

ANY SOME
ASCENDING ASC
ATTRIBUTE ATTR
CENTER CENTRE
CONSTRAINT CHECK
DATABASE DB
DESCENDING DESC
DISTINCT UNIQUE
EXCLUSIVE EXCL
INCLUSIVE INCL
PRIVILEGE PRIV
RECALL RC
REFERENCIAL REFER
ROLLBACK CANCEL
SORT ORDER
STOP EXIT
TRANSACTION WORK

同義語は、以下の理由で使用されます。



2.9 変数と文字列

Empressは、文字列変数(変数名の前のドル記号($)を置くことにより、 それらの内容は引用される)を定義することを許可します。 例えば、下記を行えばloansを表わすために$pを使用することができます。

   SET p TO "loans";

ドル記号が試みに変数を拡張させるのを防ぐためには、2つのドル記号($$)を使用 してください。 すなわち、$$pはストリングの$pに評価します。これは、ストリングに ドル記号($)にいかなる場所にも当てはまります。

変数の値を得るために使用される文字は、Empressシステム変数 MSQLVARCHARSに定義されます。 その初期値はドル記号($)ですが、SETコマンドによってユーザが変更する かもしれません。



2.10 エラーメッセージ

Empress Empressを使用する場合、エラーメッセージの3つの可能なソースがあります。

  1. オペレーティングシステムエラーメッセージは、間違っているディレクトリーを指定 するか、データベースファイルに対して、参照・書き込みの権限がない場合に発生 します。ヘルプを必要とする場合は、オペレーティングシステムのコンサルタントに 連絡をとってください。


  2. Empressエラーメッセージは、無効なEmpressコマンドを解析するか、 存在しないテーブルにアクセスするか、データベースへのアクセス権の不足、解決でき ない表現(例えば0の除算)、あるいは正しくないデータを入力するような様々な状況で 発生します。それらは、以下の形式で報告されます。
       *** エラーメッセージタイプ *** エラーの説明
    
    
  3. シンタックスエラーメッセージは最も一般的な種類のエラーです。Empressが コマンドのタイプにおけるエラーを見つけた場合出力されます。
       *** syntax error *** エラーの説明
    
    

    例:

       ** syntax error *** フィールド名が必要です。
       ** syntax error *** コマンドの後ろに不当な文字があります。
    
    

コマンドはラインエディターを使用して修正するか、あるいは再入力します。



2.11 文字削除と中止コマンド

In Empressでは、オペレーティングシステムの機能を使用し文字と行を削除 します。

ほとんどのUNIXシステムにおいては、<Back Space>が現在のライン上の文字 を削除することを意味します。また、<Ctrl+X>(Xがアルファベットのある文字で ある場合)は、全ラインを削除します。これらが働かない場合、UNIX stty(1) コマンドでeraseがあるか端末設定をチェックしてください。

<Rubout>または<Delete>を押すことにより、Empressに現在の コマンドを中止させることができます。 <Rubout>があなたのシステムに効果がないように見える場合は、sttyintrをチェックしてください。

いくつかのUNIXシステムにおいては、<Rubout>が<Rubout>の前に効果 を現わした後、<Return>を押すことが必要かもしれません。

特別な文字は、先行するバックスラッシュ(\)の使用により指定できます。

ウインドウズまたはNTのシステムにおいては、<Back space>が、現在行の文字 削除に使われます。また、<Ctrl+Break>または<Ctrl+C>で現在のコマンド を中止させます。 Windows環境変数BREAKに"off"が設定されている場合、コマンドは ウインドウズが中断するのと同じ方法で中断することができます。



2.12 Empressデータベースへのアクセス

Empressデータベースおよびテーブルへのアクセスは、追加された Empressのアクセス権と共に、一般的なオペレーティングシステムファイルアクセスを必要とします。

UNIXシステム上でEmpressを実行する場合、データベース(ディレクトリー) へのUnix実行アクセス権とテーブル(ファイル)に対する参照権を必要とします。 またテーブルに対して更新、追加を行なう場合には、同様に書き込み権限を必要と します。

WindowsまたはNTの下では、データベーステーブルへの読み取りアクセスを必要 とし、テーブル更新・追加を行なう場合には書き込み権限が必要です。

あなたが適切なオペレーティングシステムアクセス権を持っていれば、 Empressは、あなたの権限についてデータディクショナリをチェックします (データディクショナリの詳細はEmpress:Database Administrator's Guideを参照)。権限には、テーブルからの検索、データの更新・追加、テーブルの作成、 テーブル構造の変更等多くの種類があります。 これらはすべて独立してセットされるかもしれません。詳細についてはこの マニュアルのGRANT PRIVILEGEコマンドで解説されています。

データベースにアクセスするコマンドは次のとおりです。

   %empsql database

注意:

databaseは、データベース名です。(システムディレクトリ名)



2.13 Empress運用パラメータ

次のテーブルは様々なEmpressの運用上のパラメータを示しします。 図は32ビットのマシンの場合です。 実際には、ファイル数はあなたのシステム上で許可されたファイルおよび ディレクトリの数になります。ファイルサイズはディスク上の空き容量に依存しますし、 メモリ量もシステムの仮想メモリのサイズに依存します。

Table 2-5: Empress運用パラメータ

パラメータ
データベース数 Empressは制限なし。
データベースサイズ 単一データベースのサイズは全ファイルシステムを占めるかもしれません。 また単一のデータベースで複数のファイルシステムにまたがることもあります。
テーブルサイズ CPUのinteger最大値です。多くの32ビットマシンでは2GB(2,147,483,647byte)です
レコードサイズ CPUのinteger最大値です。多くの32ビットマシンでは2GB(2,147,483,647byte)です
フィールドサイズ CPUのinteger最大値です。多くの32ビットマシンでは2GB(2,147,483,647byte)です
データベース中のテーブル数 32,767
テーブル中のフィールド数 32,767
ソートキー数 Empressは制限なし。
テーブル中のインデックス数 Empressは制限なし。
インデックスするフィールド数 Empressは制限なし。
クエリーのネスト数 100