SQL
スキーマ注釈
スキーマ注釈を使用すると、データベース・オブジェクトに関するメタデータを格納および取得できます。これらは、名前と値のペアまたは単なる名前です。これらは、アプリケーションがビジネス・ロジックまたはユーザー・インタフェースをカスタマイズするために使用できる自由形式テキスト・フィールドです。
注釈を使用すると、すべてのアプリケーションで同じ方法でデータベース・オブジェクトを使用できます。これにより、開発が簡素化され、データ品質が向上します。
ドキュメントの表示に関する項
UPDATE文およびDELETE文の直接結合
UPDATEおよびDELETE文のターゲット表を、FROM句を使用して他の表に結合します。これらの他の表は、変更する行を制限したり、新しい値のソースにすることができます。
直接結合を使用すると、データを変更および削除するSQLを簡単に記述できます。
ドキュメントの表示に関する項
IF [NOT] EXISTS構文のサポート
DDLオブジェクトの作成、変更および削除では、IF EXISTSおよびIF NOT EXISTS構文修飾子がサポートされるようになりました。これにより、エラーが発生させる必要があるのは特定のオブジェクトが存在する場合なのか、存在しない場合なのかを制御できます。
IF [NOT] EXISTS構文を使用すると、スクリプトおよびアプリケーションでのエラー処理を簡略化できます。
ドキュメントの表示に関する項
アプリケーション開発者用の新しいデータベース・ロール
DB_DEVELOPER_ROLEロールは、アプリケーション開発者に、Oracleデータベースでのアプリケーションの設計、実装、デバッグおよびデプロイに必要なすべての権限を付与します。
このロールを使用することで、管理者はアプリケーション開発に必要な権限を推測する必要がなくなります。
ドキュメントの表示に関する項
INTERVALデータ型に対する集計
INTERVALデータ型をSUMおよびAVG集計関数および分析関数に渡せます。
この機能拡張により、開発者はINTERVAL値の合計および平均を簡単に計算できるようになります。
ドキュメントの表示に関する項
自動PL/SQLからSQLトランスパイラ
SQL文内のPL/SQL関数は、可能な場合は常に自動的にSQL式に変換(トランスパイル)されます。
PL/SQL関数をSQL文にトランスパイルすると、全体的な実行時間を短縮できます。
ドキュメントの表示に関する項
クライアントの記述コールでのタグ・オプションのサポート
注釈を使用すると、データベース・オブジェクトに関するメタデータを格納および取得できます。これらは、名前と値のペアであるか、名前のみです。これらは、アプリケーションでビジネス・ロジックまたはユーザー・インタフェースのカスタマイズに使用できる、自由形式テキスト・フィールドです。
注釈は、すべてのアプリケーションにわたり同じ方法でデータベース・オブジェクトを使用するために役立ちます。これにより、開発が簡素化され、データ品質が向上します。
ドキュメントの表示に関する項
UPDATE文でのDEFAULT ON NULL
更新操作では列をDEFAULT ON NULLとして定義できます。これは、挿入操作でのみ可能でした。DEFAULT ON NULLとして指定された列は、更新操作で値をNULLに更新しようとすると、特定のデフォルト値に自動的に更新されます。
この機能により、アプリケーション開発が簡素化され、目的の動作を実現するために複雑なアプリケーション・コードやデータベース・トリガーが必要なくなります。開発の生産性が向上し、コードのエラーが発生しにくくなります。
ドキュメントの表示に関する項
DESCRIBEでの列の注釈のサポート
SQL*PlusのDESCRIBEコマンドでは、使用可能な注釈が関連付けられた列の注釈情報を表示できるようになりました。
注釈は、すべてのアプリケーションにわたり同じ方法でデータベース・オブジェクトを使用するために役立ちます。これにより、開発が簡素化され、データ品質が向上します。
ドキュメントの表示に関する項
OCCIでのデータ・ユース・ケース・ドメイン・メタデータのサポート
OCCI (Oracle C++ Call Interface)アプリケーションで記述されているデータベース列のデータ・ユース・ケース・ドメイン・メタデータ(ドメイン名およびドメイン・スキーマ)へのアクセスを提供します。
データベースによってデータ・ユース・ケース・ドメインが列に追加され、その列メタデータは、すべてのデータ・アクセス・ドライバで同じ内容を公開する必要があります。
ドキュメントの表示に関する項
データ・ユース・ケース・ドメイン
データ・ユース・ケース・ドメインは、スキーマに属するディクショナリ・オブジェクトであり、クレジット・カード番号や電子メール・アドレスなど、共通値のオプション・プロパティおよび制約のセットをカプセル化します。ユース・ケース・ドメインを定義した後、そのドメインに関連付ける表の列を定義して、ドメインのオプションのプロパティおよび制約を明示的にそれらの列に適用できます。
ユース・ケース・ドメインを使用すると、データを一元的に使用する方法を定義できます。これにより、アプリケーション全体で一貫した方法で値を処理し、データ品質を向上させることが容易になります。
ドキュメントの表示に関する項
PL/SQLでのディメンション単位の算術サポート
PL/SQLのベクトルに、加算(+)、減算(-)および乗算(*)を適用できるようになりました。算術演算は、ベクトルの各ディメンション要素で実行されます。
ベクトルの算術演算により、AIシステムは抽象概念を操作および結合できるため、言語やデータをより高度な方法で理解および処理する能力が向上します。ベクトル算術のPL/SQLサポートにより、開発者はSQLをコールせずに、PL/SQLブロックおよび関数内でこれらの演算を適用できます。
ドキュメントの表示に関する項
PL/SQL関数の動的統計
SQL WHERE句およびTABLE関数で使用されるPL/SQL関数に対して、動的統計のサポートが強化されています。長時間実行されるPL/SQL関数は、動的統計とともに使用するとSQL解析時間が長くなる可能性があるため、どの関数を含めるか除外するかを構成するために、グローバル・レベルのファイングレイン制御が提供されます。
PL/SQL関数を含むSQL文を最適化する場合、カーディナリティの予測が困難な場合があります。これは、SQL実行計画が不十分になったり、SQLパフォーマンスの低下につながる可能性があります。PL/SQL関数で動的統計を制御および使用できることで、オプティマイザはより適切な実行計画を検出でき、データベース全体のパフォーマンスの向上につながります。
ドキュメントの表示に関する項
エラー・メッセージの改善
Oracle Call Interface (OCI)のOCIError()関数は、オプションでエラー・メッセージを含むOracle URLを含めるように拡張されました。URLページには、Oracleエラーに関する追加情報があります。
この機能を使用すると、ユーザーはエラーの原因と実行可能なアクションに関する情報にアクセスできます。
ドキュメントの表示に関する項
拡張されたCASE制御
CASE文は、SQL:2003 Standard [ISO03a, ISO03b]のCASE式およびCASE文の更新された定義と整合性があるように、PL/SQLで拡張されました。
Dangling述語を使用すると、単純なCASE操作で等価テスト以外のテストを実行できます。WHEN句に複数の選択肢があると、重複の少ないコードでCASE操作を記述できます。
ドキュメントの表示に関する項
GROUP BY ALL
集計関数を含む複雑なSELECTリストがあるSQL問合せでは、新しいGROUP BY ALL句を使用すると、集計されていない列すべてをGROUP BY句に含める必要がなくなります。かわりに、新しいALLキーワードにより、結果を自動的に、集計されていない列すべてでグループ化することを指定します。
集計されていない列をGROUP BY句において繰り返し含める必要がないことで、より速くSQL問合せを記述でき、誤りが少なくなります。ユーザーは、SQL問合せの迅速な試作や、迅速なアドホック問合せのために、GROUP BY ALL機能を使用できます。
ドキュメントの表示に関する項
GROUP BY列の別名または位置
GROUP BY句、GROUP BY CUBE句、GROUP BY ROLLUP句およびGROUP BY GROUPING SETS句で列の別名またはSELECT項目の位置を使用できるようになりました。また、HAVING句で列の別名がサポートされています。
これらの機能改善により、GROUP BY句およびHAVING句を簡単に記述できます。SQLコードの移植性を高めながら、SQL問合せをより読みやすくメンテナンスしやすくすることができます。
ドキュメントの表示に関する項
SQLの使用によるUUIDの生成とテスト
UUIDは、予測不可能なランダム値を生成するためにアプリケーションで一般的に使用される、128ビットの汎用一意識別子であり、表の主キー、トランザクションID、または任意の形式の一意識別子として使用できます。Oracle AI Database 26aiでは、SQL関数UUID()により、UUID RFC 9562に従ってバージョン4のバリアント1のUUIDがデータベース内に生成されます。
UUID生成関数および操作関数により、予測不可能なランダムかつ一意の識別子を生成するための、規定に準拠した方法が提供されます。この識別子は、データベース表の主キー列に移入するためや、トランザクションIDを一意に識別するためや(たとえば、Oracle AI Database 26aiでのセッションレス・トランザクション機能の場合)、その他多くの目的で使用できます。
最新のアプリケーションでは、予測不可能でランダムなUUIDを生成できることが求められます。主要なすべてのデータベースおよびデータ管理システムでは、いくつかの形式のUUID生成および操作がサポートされています。
現在のOracle SQL演算子SYS_GUID()では、必ず、最適ではない予測可能な一連の一意識別子が生成されます。
ドキュメントの表示に関する項
改善されたTNSエラー・メッセージ
この機能により、エラーの原因やそれに対応するトラブルシューティング・アクションなどの詳細情報が提供されて、一般的なTNSエラー・メッセージが拡張されます。
エラーをより詳細に説明すると、診断機能が向上します。
ドキュメントの表示に関する項
バインド変数が存在する場合のマテリアライズド・ビューの問合せリライトとカーソル共有
この機能拡張により、問合せリライトが、フィルタ述語にユーザー・バインド変数が存在するときでも機能するようになります。包含チェックの間のバインド照合を有効にすることで、以前はハード解析が必要だった問合せで、マテリアライズド・ビューをより効率的に活用できるようになりました。また、これにより、リライトされた問合せについてカーソル共有が改善されて、解析のオーバーヘッドが減り、バインド変数に大きく依存するシステムでのパフォーマンスが高まります。
この機能により、バインド変数使用時の問合せリライトとカーソル共有における重要な制限がなくなります。これにより、バインドベースのフィルタを使用する問合せでマテリアライズド・ビューを幅広く使用できるようになり、リライトされた問合せでカーソルを共有できるようになって、ハード解析が減り、全体的な問合せパフォーマンスとレスポンス時間が改善されます。
ドキュメントの表示に関する項
マルチリーガル・エンジンでのSQL BOOLEANデータ型のサポート
Oracle AI Databaseは、ネイティブのSQL BOOLEANデータ型を備えています。サーバー側のJavaScriptエンジンは、すべてのインタフェースでデータ型を完全にサポートしています。
JavaScriptを使用してOracleに格納されるコードを記述する場合、この機能により、新しいSQL BOOLEANデータ型で提供される機能を最大限に活用できます。
ドキュメントの表示に関する項
位置に関係しないINSERT句
Oracle AI Databaseでは、新しい INSERT INTO SET句が追加されました。これは、INSERT INTO文の簡単な自己文書化構文です。INSERT INTO文のSET句は、UPDATE文の既存のSET句と同じです。また、これにより、副問合せの結果を挿入するときにBY NAME句が追加されます。これにより、ソース列とターゲット列が、INSERTリスト内とSELECTリスト内のその位置ではなく、その名前で照合されます。
SET句の利点は、INSERT INTO文内のどの値がどの列に属するかがすぐに明らかになることです。これについては、何百もの列を含む現在のINSERT INTO文で調べる場合はわかりにくく面倒です。同様に、副問合せのロード時にINSERTリスト内とSELECTリスト内の何百もの列の順序を照合することは困難です。BY NAME句を使用すると、これらのリストを異なる順序で記述できるため、文を記述するプロセスが簡略化されます。
ドキュメントの表示に関する項
Oracle C++ Call Interface (OCCI)でのSQL BOOLEANデータ型のサポート
Oracle C++ Call Interface (OCCI)では、新しいSQL BOOLEANデータ型の問合せおよびバインドがサポートされるようになりました。
SQL BOOLEANデータ型を使用すると、アプリケーションで状態をより明確に表すことができます。
ドキュメントの表示に関する項
SQL BOOLEANデータ型に対するOracleクライアント・ドライバのサポート
Oracleクライアント・ドライバでは、新しいBOOLEANデータベース列のフェッチおよびバインドがサポートされています。
アプリケーションで、ネイティブ・データベースのBOOLEAN列データ型とネイティブ・ドライバのBOOLEANデータ型を併用できます。この機能拡張により、開発者はBOOLEANデータ型をより簡単に使用できるようになりました。
ドキュメントの表示に関する項
FROM句なしのSELECT
FROM句なしでSELECT式のみの問合せを実行できるようになりました。
この新機能により、SQLコードの移植性と開発者の使いやすさが向上します。
ドキュメントの表示に関する項
SQL BOOLEANデータ型
Oracle AI Databaseでは、ISO SQL標準準拠のBOOLEANデータ型がサポートされるようになりました。これにより、TRUE値およびFALSE値を表に格納したり、SQL文でBOOLEAN式を使用できます。
このBOOLEANデータ型により、Yes値とNo値の格納が標準化され、Oracle AI Databaseへの移行が容易になります。
ドキュメントの表示に関する項
SQL時間バケット処理
時間バケット処理は、時系列データまたはイベント・ストリーミング・データを処理する場合の一般的な操作で、任意に定義された時間ウィンドウ内の一連のデータ・ポイントを、集計分析のために特定の固定時間間隔(バケット)にマップする必要があります。
新しいSQL演算子TIME_BUCKETで、DATETIMESの時間ベース・データの時間バケット処理に対するネイティブかつ高性能なサポートを提供します。
時系列データの共通の固定時間間隔バケット処理に対してネイティブSQL演算子を提供すると、このような情報のアプリケーション開発およびデータ分析が大幅に簡略化されます。ネイティブ演算子は、簡単かつエラーが発生しにくいコードである他に、時系列分析のパフォーマンスを向上させます。
ドキュメントの表示に関する項
SQL UPDATE RETURN句の機能拡張
INSERT、UPDATE、DELETEおよびMERGE文のRETURNING INTO句は、それぞれの文の影響を受ける古い値と新しい値をレポートするように拡張されました。これにより、開発者はこれらのDMLタイプそれぞれに同じロジックを使用して、文の実行前後の値を取得できます。古い値と新しい値は、UPDATE文に対してのみ有効です。INSERT文では古い値は報告されず、DELETE文では新しい値は報告されません。MERGEは、古い値と新しい値の両方を戻すことができます。
INSERT文、UPDATE文、DELETE文およびMERGE文の影響を受ける古い値および新しい値を取得する機能により、SQLコマンドの実行の一環として、これらの値を読み取るための統一的なアプローチが開発者に提供され、データベースで実行する必要がある作業量が削減されます。
ドキュメントの表示に関する項
SQL*PlusでのSQL BOOLEANデータ型のサポート
SQL*Plusでは、SQL文およびDESCRIBEコマンドで新しいSQL BOOLEANデータ型がサポートされます。COLUMNおよびVARIABLEコマンド構文も拡張されました。
SQL*Plusスクリプトでは、新しいSQL BOOLEANデータ型を利用すると開発が容易になります。
ドキュメントの表示に関する項
QUALIFY句のサポート
QUALIFY句により、SELECT文において分析関数の結果がフィルタ処理されます。QUALIFY句と分析関数との関係は、HAVING句とGROUP BY句との関係に似ています。
QUALIFY句を使用しない場合に、分析関数の出力をフィルタ処理するための唯一の方法は、その問合せをネストし、親問合せにおいてフィルタを適用することです。この場合は、より冗長になり、メンテナンスのオーバーヘッドが増えます。また、その問合せの意図が読み手にわかりにくくなることがあります。QUALIFY句を使用する場合は、このような注意事項がすべてなくなります。
ドキュメントの表示に関する項
表値コンストラクタ
データベースのSQLエンジンでは、様々なタイプの文に対してVALUES句がサポートされるようになりました。この新しい句を使用すると、既存の表に依存せずに新しい構文を使用して指定することで、データ行をその場でマテリアライズ化できます。Oracleでは、SELECT文、INSERT文およびMERGE文でVALUES句がサポートされています。
新しいVALUES句が導入されたことで、開発者がアドホックSQLコマンド用に記述するコードが少なくなり、少ない労力で読みやすくなりました。
ドキュメントの表示に関する項
Unicode 15.0のサポート
AL32UTF8およびAL16UTF16文字セット用の各国語サポート(NLS)データ・ファイルは、Unicode標準の文字データベースのバージョン15.0に適合するように更新されました。
この機能拡張により、Oracle AI Databaseが、最新バージョンのUnicode規格に準拠するようになります。
ドキュメントの表示に関する項