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