次の SQL Anywhere の機能は、他の多くの SQL ソフトウェアには実装されていません。
SQL Anywhere には日付、時刻、タイムスタンプのデータ型があり、年、月、日、時、分、秒、小数点以下の秒が含まれます。日付フィールドへの挿入または更新、および日付フィールド間の比較については、フリー・フォーマットの日付がサポートされています。
また、日付に関しては以下の演算が可能です。
日付 + 整数 指定された値の日数を日付に加えます。
日付 - 整数 指定された値の日数を日付から引きます。
日付 - 日付 2 つの日付間の日数の差を計算します。
日付 + 時刻 日付と時刻からタイムスタンプを作成します。
日付と時刻の演算に使用できる関数は、このほかにも数多くあります。詳細については、SQL 関数を参照してください。
SQL Anywhere は、エンティティ整合性と参照整合性の両方をサポートします。これは、次に示す 2 つの拡張機能を使って、CREATE TABLE と ALTER TABLE コマンドに実装されます。
PRIMARY KEY ( column-name, ... ) [NOT NULL] FOREIGN KEY [role-name] [(column-name, ...)] REFERENCES table-name [(column-name, ...)] [ CHECK ON COMMIT ] |
PRIMARY KEY 句では、関係のためのプライマリ・キーを宣言します。SQL Anywhere は宣言されたプライマリ・キーがユニークであり、どのカラムも NULL 値を含まないよう管理します。
FOREIGN KEY 句は、このテーブルと他のテーブルの関係を定義します。その関係は、このテーブルのカラムが他のテーブルのプライマリ・キーの値を保有することによって確立しています。システムは、これらのカラムが参照整合性を保つようにします。カラムが変更されたりテーブルにローが挿入されたりすると、これらのカラムを調べて、NULL のものはないか、また、値が他のテーブルの一部のローのプライマリ・キーにある対応するカラムと一致するか確認します。詳細については、CREATE TABLE 文を参照してください。
SQL Anywhere は、テーブル間の自動ジョインをサポートします。他のソフトウェアでもサポートされる NATURAL ジョインと OUTER ジョインの演算子に加え、SQL Anywhere では外部キー関係に基づく KEY ジョインがサポートされます。これにより、ジョイン実行時における WHERE 句の複雑さを軽減できます。
SQL Anywhere では、UPDATE コマンドを使って複数のテーブルを参照できます。複数のテーブルで定義されたビューも更新できます。多くの SQL ソフトウェアでは、ジョインされたテーブルの更新は許可されません。
ALTER TABLE コマンドが拡張されました。エンティティ整合性と参照整合性の変更に加え、次に示す変更が行えます。
ADD column data-type ALTER column data-type DELETE column RENAME new-table-name RENAME old-column TO new-column |
ALTER 句は、文字カラムの最大長の変更とデータ型の変換に使用できます。ALTER TABLE 文を参照してください。
SQL Anywhere では、式が使用できる場所であれば、どこでもサブクエリを使用できます。多くの SQL ソフトウェアでは、サブクエリが使用できるのは比較演算子の右側だけです。たとえば、次に示すコマンドは SQL Anywhere では有効ですが、他の多くの SQL ソフトウェアでは無効です。
SELECT Surname, BirthDate, ( SELECT DepartmentName FROM Departments WHERE EmployeeID = Employees.EmployeeID AND DepartmentID = 200 ) FROM Employees; |
SQL Anywhere は、ANSI SQL 定義にはない関数をいくつかサポートします。使用できる関数のリストについては、SQL 関数を参照してください。
Embedded SQL を使用しているときは、カーソル位置は FETCH 文上で自由に移動できます。カーソルは現在位置に対して前後させるか、カーソルの最初または最後からレコード数を指定して移動できます。
SQL Anywhere では、クエリの select リスト内のエイリアスの式を、クエリの他の部分で参照できます。他のほとんどの SQL システムにはこの機能はありません。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |