あなたはどっち派?ANSI-89 標準と ANSI-92 標準のメリット・デメリット
SQL の ANSI-92 標準と ANSI-89 標準
ANSI-89 標準は、1989 年に制定された SQL の最初の標準です。この標準は比較的シンプルで、基本的なデータ操作機能のみを提供します。
ANSI-92 標準は、1992 年に制定された SQL の拡張版です。ANSI-89 標準の機能に加え、以下の機能が追加されました。
- 外部結合
- サブクエリ
- 型
- 参照整合性
ANSI-92 標準は、ANSI-89 標準よりも機能が豊富で、より複雑なデータ操作が可能になりました。
ANSI-92 標準は、ANSI-89 標準よりも機能が豊富で、より複雑なデータ操作が可能であるにもかかわらず、ANSI-89 標準ほど広く採用されていません。
その理由は、以下のとおりです。
- 多くのデータベース管理システム (DBMS) が、ANSI-92 標準のすべての機能をサポートしていない。
- ANSI-92 標準の機能は、多くのアプリケーションにとって必要ない。
- ANSI-89 標準は、ANSI-92 標準よりもシンプルで、学習しやすい。
これは、DBMS のサポート状況、アプリケーションのニーズ、学習曲線などの要因によるものです。
プログラミング例
以下の例は、ANSI-92 標準で追加された外部結合を使用する SQL クエリです。
SELECT *
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.department_id;
このクエリは、employees
テーブルと departments
テーブルを結合し、すべての従業員とその所属する部門情報を取得します。
ANSI-89 標準では、外部結合を使用できないため、このクエリを実行するには ANSI-92 標準が必要です。
ANSI-92 標準
SELECT *
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.department_id;
SELECT employees.*, departments.*
FROM employees, departments
WHERE employees.department_id = departments.department_id;
ANSI-89 標準では、外部結合を使用できないため、上記のクエリのように WHERE
句を使用して結合条件を指定する必要があります。
ANSI-92 標準で追加されたその他の機能の例を以下に示します。
SELECT *
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);
このクエリは、平均給与よりも高い給与を得ている従業員を取得します。
- 型:
CREATE TABLE employees (
employee_id INT,
name VARCHAR(255),
salary DECIMAL(10,2)
);
このクエリは、employees
という名前のテーブルを作成し、従業員の ID、名前、給与を保存します。
ALTER TABLE employees
ADD FOREIGN KEY (department_id)
REFERENCES departments (department_id);
このクエリは、employees
テーブルの department_id
列を departments
テーブルの department_id
列と参照整合性で関連付けます。
機能 | ANSI-89 標準 | ANSI-92 標準 |
---|---|---|
外部結合 | なし | あり |
サブクエリ | なし | あり |
型 | なし | あり |
参照整合性 | なし | あり |
採用状況 | 広く採用されている | 限定的に採用されている |
ANSI-92 標準と ANSI-89 標準の違いを比較する方法は他にもあります。
- 各標準の機能リストを比較する。
- 各標準を使用して実行できるクエリを比較する。
sql join ansi-sql