私が読んでいる本 (Querying SQL Server 2012) で、著者はデータベースがどのように機能するかの理論について語っています。彼は関係、属性、タプルなどについて言及しています。
彼は、T-SQL の一部の側面がリレーショナルではないという事実を頻繁に強調しています。次の抜粋のように:
結果がリレーショナルだった前のフェーズとは異なり、このフェーズの出力は順序が保証されているため、リレーショナルではありません。このフェーズの結果は、標準 SQL がカーソルと呼ぶものです。ここでのカーソルという用語の使用は概念的なものであることに注意してください。T-SQL は、クエリの結果に基づいて定義され、指定された順序で一度に 1 行ずつフェッチできる、カーソルと呼ばれるオブジェクトもサポートします。プレゼンテーションの目的で特定の順序でクエリの結果を返すことに関心がある場合や、呼び出し元が行を一度に 1 つずつフェッチするカーソル メカニズムを介してその方法で結果を消費する必要がある場合があります。ただし、そのような処理はリレーショナルではないことに注意してください. クエリの結果をリレーショナルな方法で処理する必要がある場合 (たとえば、クエリに基づいてビューのようなテーブル式を定義する (詳細は第 4 章で後述))、結果はリレーショナルである必要があります。また、データを並べ替えると、クエリ処理にコストがかかる可能性があります。結果行が返される順序を気にしない場合は、ORDER BY 句を追加しないことで、この不要なコストを回避できます。
のすべての実装には非リレーショナルにSQL
する句があるため、(セットの後のセットが使用されている) もはやリレーショナルではないことが問題になるのはなぜですか?ORDER BY
ORDER BY
!=
たとえば、移植性などに影響するため、不等式の代わりに使用するなど、非標準であると彼が言った場合は理解できますが<>
、何かがリレーショナルである方が良い理由がわかりません。
啓発してください。