コンピュータ言語には、大きく説明的言語と手続き的言語の2つのファミリーがあります。
説明的言語は非手続き的であり、何をするかのみを記述します。手続き的言語は、C++やJavaなど、どのように事を行うかを記述します。
この分類に基づけば、SQLは説明的言語に属します。ユーザーはデータを生成する方法ではなく、求める結果を指定します。例えば、以下のステートメントを使用して、姓が「張」の従業員のレコードを照会します。データベースはデータ取得のプロセスを実行し、検索したデータをユーザーに返します。SQLの説明的特性により、論理的なレベルでデータを処理できます。データを操作する際にのみ、実装の詳細に注意を払う必要があります。
SELECT last_name,first_name
WHERE last_name LIKE '張 %' ORDER BY last_name,first_name;
データベースは、WHERE 句で指定された条件(これを述語とも呼びます)を満たすすべての行を取得します。データベースはこれらの行を単一のユニットとしてユーザー、他のSQLステートメント、またはアプリケーションに渡すことができます。アプリケーションは各行を個別に処理する必要はなく、開発者はこれらのデータ行が物理的にどのように保存されているか、またどのように取得されるかを知る必要はありません。
すべてのSQLステートメントはオプティマイザーを使用します。オプティマイザーはデータベースのコンポーネントであり、要求されたデータにアクセスする最も効果的な方法を決定します。OceanBaseデータベースは、オプティマイザーを活用してユーザーのさまざまな要件をより良く満たす技術も提供しています。