SQL構造化問い合わせ言語 - 言語DQL

思考を覚えておいてください: SQL言語DQL queryコマンドを選択します。表そこから用語が何を選択する列をクエリ、に基づいてフィールドがソートされているかどうか、リミットどのくらいの出力ライン#。まず、単一テーブル、クエリ1.共通クエリ構文を:


  1. テーブルの表示出力からフィールドを選択
  2. 無条件クエリ構文:テーブルから選択した列には、出力を指定します。
  3. 出力構文を制限:テーブルの指定レコード数の出力からLIMIT SELECT列を、
  4. 条件クエリ構文:テーブルの指定からの出力列名WHRERクエリを選択します。
  5. 条件の問い合わせ並べ替え:テーブルから選択した列には、フィールドでソート順を指定するには、WHRERクエリの出力を指定し、[DESC | ASC]。
  6. 条件は、クエリと出力構文制限:表が示すレコードのWHRERクエリ制限数の出力からSELECTカラム;

2. SELECTの出力列フィルタ:

  1. 例:出力表示リストのすべての行と列、[ すべての列の代表]
    SELECT
    学生FROM、照会テーブルの学生のすべての内容を
  2. 実施例2:出力表示出力フィールド別名:[別名]なお、フィールド名を省略することができるように
    名前としてSELECT名、vmlab FROM年齢などの年齢;
    vmlabから選択した名前の名前、年齢年齢、

フィルタリング条件はここで定義されるフィルタリングされた出力線3

  1. 算術演算子:+、 - 、*、/、%
  2. 論理演算子:NOT、AND、OR、XOR
  3. !比較演算子:=、<=>(等しいか、空である)は、<>、=(SQL標準的でない)、>、> =、<、<=
    年齢> = 30 VMLABから選択します。
    SELECT WHERE学生FROM。性別=「M」;検索少年は
    SELECT
    ; <3つの未満のすべてのフィールドのすべての行学生テーブルIDフィールドの値を照会3 idが学生FROM
    =学生ID SELECT * FROM> 2とid <= 4; クエリIDはより大きい他のレコード4よりも小さい、などが挙げられます。

  4. 値の範囲:minnum間MAXNUMを
    選択
    学生は2と4の間であり;クエリIDは、他の4つのより小さい他の記録よりも大きいです、。
  5. :明示的に割り当てた値で
    、VMLABからSELECT *(1,3,6)でCLASSID
  6. 非ヌル値と一致するヌル:nullは、IS NULLでない
    SELECT マッチング値がCLASSID CLASSIDヌルヌル系統であるVMLABから
    選択
    CLASSIDマッチラインがヌルCLASSID非ヌル値ではないVMLABから
  7. ファジーマッチのように
    任意の長さの任意の文字%は、任意の単一文字は_
    学生SELECT * FROM WHERE名LIKE「トン%」; トンの冒頭に手紙上のすべてのレコードのあいまい一致のクエリ名フィールド

  8. 正規表現のマッチング
    RLIKE:
    SELECT 学生FROM RLIKE名' [LO]。;通常の記録名のフィールドに基づいて一致クエリは、文字LまたはO含ま'
    REGEXPを,:
    SELECT
    VMLAB FROM WHERE名REGEXPを、 '^ H';

4.統計パケット:
「重合」操作を作るために使用される指定された条件に応じてクエリ結果「パケット」BY GROUPは、出力フィールドは、一般に:集計フィールドと計算の計算結果。

  1. 従来の重合機能:カウント()カウント、平均()平均、MAX()の最大値、最小()最小和()合計
  2. HAVING:結果は、パケット集約操作のフィルタを所与。
  3. 例:
    SELECTのClassID、性別、学生グループ、性別によってのClassIDからAVG(年齢);
    学生によるSELECTのClassID、性別、AVG(年齢)グループからのClassID、のClassIDは性別ないヌルをしている;
    5.データ整形操作
    ORDER BY:クエリ結果をソートする指定したフィールド
  4. ASC:ASC(デフォルトは昇順です)
    学生のClassIDによってのClassID注文からDISTINCT SELECT;
    ASCからの留学生のClassIDのClassIDによるDISTINCTの注文を選択します。
  5. 降序:DESCは
    CLASSID DESCにより、学生のための明確なCLASSIDを選択します。
  6. フィルタ・ディスプレイは、NULL
    のclassidは、学生からの個別のclassidを選択し 、ヌル。
  7. フィルタリングはNULLが含まれていません;
    。nullでない学生からDISTINCTのClassIDのClassIDを選択します。
  8. 去除重复列DISTINCT
    学生からのSELECT DISTINCTのclassid;
    選択したT1組合から選択 T1から。
  9. エイリアス出力列の定義
    SELECT idがFROM、stunameとして名をstuid学生の学生クエリーテーブルstuid、stunameフィールド、およびエイリアス名フィールド表示出力stunameに。

6.出力を制限します:

  1. LIMITは、[[ROW_COUNT、オフセット] : クエリの結果は、出力ライン制限の数である
    。SELECT 学生から名前DESC BY ORDER LIMIT 2;降順で行わ名フィールド、及び二つの記録輸血前により。
    SELECT
    学生から名前DESC BY ORDER。 LIMIT 3,5;名フィールドに従って降順で行われ、第3の記録から出力5の記録を開始

7.操作例:

例1:計算の学生テーブル平均年齢の男の子と女の子、アイデア:グループのためのパケットの性別フィールドによって、その後、AVG()関数の平均場の年齢、性別、最終的な出力、算出した平均年齢フィールド。

男女別のグループの学生から性別SELECT、AVG(年齢);
2.例2:計算各クラスの平均年齢の学生テーブルの男の子と女の子、アイデア:それまでにグループでのパケットのファーストクラスのフィールド、と同じ性別のクラスがありませんグループ、その後、平均風水時代分野、クラス、性別、年齢、計算フィールドの最終的な出力フィールドの平均。

CLASSID SELECT、性別、CLASSID、性別ごとにグループからAVG(年齢)学生;
のclassidによってグループからのSELECTのclassid、性別、AVG(年齢)学生は、HAVINGジェンダーのclassidは、nullではない。HAVING空のフィルタクラスの生徒はカウントされません。統計計算は、最初のパケットを行い、その後、再び濾過により、フィルタ条件を持つことは、グループの後に使用する必要があります。
選択のclassid、性別、AVG(年齢のclassidがCLASSID、性別によってヌルグループではありません、学生からの); フィルタは、クラスの生徒の空である統計ではありません。することにより、グループの前に使用しなければならないフィルタ条件は、第一のフィルタを行い、その後、グループの統計を行います。
3.三つの例:パケット数、DESC降順のソートにするフィールドによる出力順、昇順昇順、完了です。

CLASSID、性別、AVG(年齢を選択 ASCは、CLASSIDがCLASSIDによってヌルグループではありません、学生、AVG(年齢)ASCによるジェンダー順から) 昇順
選択のclassidを、性別、AVG(年齢のclassidがでヌルグループではありません学生から) CLASSID、平均(年齢別、性別順 )DESC; DESC 降順
4例IV:完成したパケットの統計、降順の上昇は、このような出力のみの100のレコード、すなわちTOP100前と出力を制限行います。

CLASSID、性別、平均(年齢を選択 CLASSIDがCLASSIDによってヌル基ではない学生、平均(年齢)ASC制限5によって性別順から); 上昇限界出力
選択CLASSID、性別、平均(年齢 )CLASSIDがnullでない学生からCLASSIDによってグループ、平均によって性別順序 (年齢)DESC制限5、 限界出力下降
5例Vを:出力ヘッダフィールドエイリアスカスタマイズの出力を使用して

学生の平均年齢のClassIDとしてクラス、性別など性別、AVG(年齢)などのclassidを選択しないのClassID、AVG(年齢)ASCの制限により、ジェンダー秩序5によるグループヌルから;。。
6.実際の6つの列:平均パケットクラスを計算しますクラスID 3より年齢、および番組平均年齢30より大きく、より大きな

CLASSID有する平均(年齢)> 30とCLASSID> 3によって学生グループからCLASSID、AVG(年齢)を選択します。

第二に、マルチテーブルのクエリ

  1. サブクエリ:他のクエリに埋め込まれたクエリ、サブクエリの声明文の結果は、親フィルタまたは入力結果を実行します。
    名前、年齢、学生から年齢を選択 >を(学生からの平均(年齢)を選択します)。
  2. 垂直統合:組合の共同問い合わせマルチテーブル垂直統合の使用、再デフォルトの機能に持って、あなたはすべての組合と重くしたくない場合。
    前提条件:差し込みフィールドのデータ型が複数のテーブル間で同じである必要があり、出力フィールドは、選択後に同じ順序で書き込まれなければなりません。
    Stuid、選択教師組合から選択*名前、年齢、学生から性別;
  3. 水平合併:最初のテーブルの主なアイデアであるかを決定します。
    。フィールドを選択するには、2つのテーブルのフィールドの数
    Bを。レコードの数は、2つのテーブルが2つのテーブルを乗じたデカルト積、すなわち、一次テーブルと二次テーブル内の各レコードごとに合わせ交差するすべてのレコードのフィールドを記録する実行レコードでありますレコードが一緒にしました。
    SELECT からのクロス教師学生に参加し;
    SELECT
    、教師、生徒から。
    、10人の教師は制限SELECT students.name、teachers.name、学生からstudents.classid;出力仕様単語列、出力列を指定するテーブルを指定する必要があります。
    出力ヘッダを持つカスタムフィールドエイリアス、名、教師、生徒からstudents.classidクラスとしてteachers.nameとしてstudents.nameを選択し、教師は10を制限します。
    TEとしてSTとして生徒、教師から教師、st.classidクラスと名前などst.name、te.name選択リミット10を、 テーブルの別名を指定し、一度使用されなければならない出力フィールドは、より簡潔な表別名を失うことになる書き込み。
  4. EN:内側の交点上の2つのテーブルの結合
    ロジックいくつかの共通の特性またはテーブルは二つのテーブルの二つの側方合併に基づいているに基づいて、特定の条件に基づいて2つのテーブルの記録が関連しています。合併の用語は、合併のデカルト積なしで行うのであれば。
    例:
    SELECT 。students.teacherid = teachers.tid ON参加教師学生インナーから、新しい記述するための
    SELECTを
    学生からS AS、AS T s.teacherid教師= t.tid注文はstuidにより、レガシー入力の書き込み。
    s.Stuidを選択し、S .nameの、t.nameは、学生などからs.classid ; sの内部はstuidによってs.teacherid = t.tidためにtと教師に参加別名フィールドに基づいてカスタム出力テーブル。
    学生番号、名前などs.name、教師としてt.name、学生からのクラスとしてs.classidがSインナーとして教師に参加するようとしてs.Stuidを選択 stuidによってs.teacherid = t.tidためにトン、 出力フィールドとして定義されています別名は、出力ヘッダをカスタマイズするためのディレクトリに達します。
    複合複合条件:
    SELECT = t.tid s.teacheridとs.stuid> 10教師学生を参加インナーS AS AS T ONから;
    SELECT
    Sなどの学生から、内側は10> s.teacherid = t.tidどこs.stuidにtと教師に参加します。
    SQL構造化問い合わせ言語 - 言語DQL
  5. 外部接続:
    論理:左右とは相対的な概念であるため、合併テーブルの前にプライマリ・テーブルのどれが、プライマリ・テーブルは、すべてのレコードすべての出力、別表サブテーブルは、サブテーブルレコードが横マスタテーブルにマージするかを決定します。
    左外側:左メインテーブルが設けられている、すべてのレコードの出力は、すべてのサイドテーブルとして右、二つの水平合併テーブル、サブテーブル(右表)になり、メインテーブル充填に記録された条件に準拠して合成した(左表該当するレコード)内で、プライマリ・テーブル内の残りのレコードは、サブテーブルのための条件を満たしていない、とに従ってカスタム出力のフィールドを表示します。
    SELECT 。、学生に参加教師外側からは= ON s.teacherid t.tid AS S T ASを左
    フィルタは、共通の特徴の周りに負の記録シートを有し、設けられている状態を、横メインテーブルの出力を合成(左):外側の例外を残し共通の特性を持っていない記録。
    SELECT
    。;参加学生教師外側からはAS S T ASを= ON s.teacherid t.tid t.tid NULLである左
    、右プライマリ・テーブルが設けられ、左側のテーブルのすべてのレコードのすべての出力、2つのテーブル:右外側接続合わせた横、左
    SELECT 参加学生から教師外側右AS S T AS = ON s.teacherid t.tid;
    右外側接続例外:条件ここでフィルタ設定、負の共通の特性周り記録シート、水平合併メインテーブル(右)の出力は、一般的な記録特性を持っていません。
    選択
    Sとして生徒から右外側の教師の参加 ; s.teacherid = t.tid s.teacheridがnullである場合にはtと
    サブサブマスターテーブル2は、二つのテーブルの出力、2つの合成フィールドの全てを記録しません:完全外部接続、右テーブルに左側のテーブルは、フィールドが空である対応するフィールドの値に対応するレコードがない場合、レコードは、左と右のテーブルを移入する表のヌルフィルので、2つのテーブルが同時に組み合わされているという値もありません二つのテーブルのすべての出力レコードと、2つの相補的なグローバルテーブルの等価、長方形の構成。
    完全外部接続例外:二つのテーブルの交差は、残りの部分、すなわち、交差点を残し、除外否定

おすすめ

転載: blog.51cto.com/154773488/2455109