Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL の使用法 » SQL のダイアレクトと互換性 » SQL ダイアレクト

 

他の SQL ソフトウェアにはない機能

次の 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 システムにはこの機能はありません。