PASSIONのSQL文の実行順序

2070 ワード

SQLの実行手順は?
1,SQL文は構造化された照会言語として、各種データベースの操作に適用されます。一般的にDDL文、DML文、DCL文に分けられます。
     ステートメント、TPL文など。一つのプログラミング言語には対応するデータタイプがあります。varrhar、character、Integer、decimal、float
     clob、blobなどのデータタイプ。データベースから与えられた論理ビューはデータベースです。テーブル構造の列です。実は、私達はDatabaseを理解したいです。 
     instanceの概念は、ハードディスクに保存されているのはすべてバイナリのデータファイルです。ハードディスクに保存されている場合、データベースのインスタンスはSQLを解析します。
     ステートメントを使用して、対応する情報を追加してhdfファイルに保存します。データベースの例はメモリ内のapplicationと実行します。これも同じです。
     C/Sベースのアーキテクチャです。つまり、クライアントを介してリモートデータベースを操作することができる理由です。
2,DML言語に対応して、その実行順序、すなわちデータベースインスタンスの解析の順序を知る必要があります。
      Fromの字句----対応する時計の構造を現してメモリの中に着きます。
      Where字句――条件に合った行をフィルタリングします(グループ関数は使用できません)。
      Group by字句――データをグループ化し、グループ毎の値をグループ化する。
      having――条件に合わないグループを削除する(グループ関数またはグループ関数の別名を使用することができます)
      Select字句――それを新たな表構造にアレンジする。
      order by――新しいテーブル構造を並べ替えます。
列を行に変換しますか?
    1,需要:記録成績表gradeがあります。それぞれ三つのフィールドname、subject、reultがあります。
                                                                                     張三、国語、80
                                                                                     張三、数学、90
                                                                                     張三、物理、100
                                                                                     李四、国語、90
                                                                                     李四、数学、120
                                                                                     李四、物理、60
           展示結果:
                   name、国語、数学、物理
                   張三さん、 80,  90,  100
                   李四さん、 90,  120,60 
 
           SQL文:
SELECT name ,sum((CASE WHEN g.subject='  ' THEN g.result END)) "  ",
sum((CASE WHEN g.subject = '  ' THEN g.result END)) "  ",
sum((CASE WHEN g.subject= '  ' THEN g.result END)) "  " FROM grade g GROUP BY name