2017-12-12 3 views
0

これは技術的な質問ではなく、むしろ言語がそのように設計されている理由を疑問視しています。なぜSQLで列を選択したいのですが、それでテーブルが参照されますか?

私はSQLを学んできましたが、私が大変気になっていたことの1つは、あなたが望むカラムの名前をつけて、それから取得したいテーブルの名前を指定する方法です。私にとっては、あなたが親の体(テーブルです)を参照し、それが持つ列を参照する方が意味があります。しかし、SQLはユーザーにこれを逆向きにさせるように思われる。どうして?

なぜこの言語がこのように設計されたのか不思議です。

SELECT column 
FROM table 

なぜ

FROM table 
SELECT column 
+0

列選択の前に 'WHERE'ヒットがあることを忘れないでください。 '

WHERE = 群から'だけけれども総感じ BY 和をHAVING()= SELECT 、和()ORDER BY。また、最適化計画では、一般的な操作順序を頻繁に移動させて、最適化のためのデータ検索を最適化します(RDBMS上では最適化を吸い込まないため)。*実際の操作順序はありません。 – JNevill

+0

デザイナーはそれほど良いものではなかったからです。 –

+2

「キッチンのバスケットから、斑点や傷がないので、リンゴとオレンジを選ぶことができますか?」ブリー。 – JNevill

答えて

2

this postが役に立ちます。 FROMで始まるのは、クエリについて考える最も論理的な方法です(なぜSELECTから何を知る前にSELECTと書くのでしょうか?)。ただし、SQLガイドラインは、クエリがのコマンドであるかのように設計されています。したがって、あなたはSELECTのデータをシステムに命令しており、さらにFROMはそのコマンドを指定しています。

もちろん、実際の実行は上記の字句および論理命令とは異なります。

3

これはコメントのために長すぎると問題は実際には適切ではありませんが、その理由は、(と思う)があります。

SQLは手続き型言語ではなく、記述言語です。 には、結果セットが生成されるが記載されています。そして、その結果セットを列ヘッダーを含むレポートとして考えることができます。

このように、基本的なクエリ構造では、これらの列ヘッダーが返されます。残りのクエリは、それらがどのように生成されるかを記述します。

3

SQLはある程度英語を模倣しようとするので、クエリを定式化するのは自然です。

英語では、「私は従業員の名前がほしい」と言っています。あなたは「私は従業員に自分の名前が欲しい」とかそういうものは言わないでしょう。

あなたが正しいですが、クエリが実行の順序を表すことをお勧めしました。そして「従業員のテーブルから私は名前を欲しい」という印はそれほど遠くないでしょう:-)

関連する問題