《MySQL必知必会》読書ノート——第4章検索データ、第5章ソート検索データ、第6章フィルタデータ、第7章データフィルタリング、第8章ワイルドカードでフィルタリング


このいくつかの章では、条件付きでデータを検索する方法について説明しています.
文書ディレクトリ
  • 第4章検索データ
  • 構文
  • ワイルドカード*
  • 異なる行(DISTINCT)
  • を検索する
  • 制限結果(LIMIT)
  • 完全修飾テーブル名
  • を使用

  • 第5章ソートデータ
  • ORDER BY句
  • ソート方向指定(DESC)
  • ORDER BYとLIMITの組み合わせ
  • 句の位置順

  • 第6章フィルタデータ
  • WHERE句
  • を使用
  • WHERE句オペレータ
  • Null値チェック(IS NULL)
  • 第7章データフィルタ
  • 7.1組合せWHERE句
  • 7.1.1 ANDオペレータ
  • 7.1.2 ORオペレータ
  • 7.1.3計算順序
  • 7.2 INオペレータ
  • 7.3 NOTオペレータ
  • 第8章ワイルドカードによるフィルタ
  • 8.1 LIKEオペレータ
  • 8.1.1パーセント(%)ワイルドカード
  • 8.1.2下線()ワイルドカード
  • 8.2ワイルドカードを使用するテクニック

  • 第4章データの検索
    第四章はあまり上手ではありません.簡単にポイントを話せばいいです.
    構文
    SELECT field1,field2,[fieldn] FROM my_table;
    

    SQL文は大文字と小文字を区別しないため、SELECTはselectと同じです.同様に、Selectと書いても構いません.多くのSQL開発者は、すべてのSQLキーワードに大文字を使用し、すべてのカラムとテーブル名に小文字を使用することで、コードの読み取りとデバッグを容易にします.
    セミコロンは忘れないでください.
    ワイルドカード*
    SELECT* FROM my_table;
    

    一般的に、テーブルの各カラムが必要でない限り、*ワイルドカードは使用しないほうがいいです.ワイルドカードを使用すると、必要なカラムを明確にリストする必要がなく、自分で手間を省くことができますが、不要なカラムを取得すると、通常、取得やアプリケーションのパフォーマンスが低下します.
    別の行を検索(DISTINCT)
    このキーワードはMySQLを示し、異なる値のみを返します.
  • DISTINCTキーワードは、前の列だけでなく、すべての列の組合せに適用されます.

  • 制限結果(LIMIT)
    SELECT文は、指定されたテーブルの各ローである可能性のある一致するすべてのローを返します.最初の行または最初の行を返すには、LIMIT句を使用します.select文の最後に、
    LIMIT start, cols
    

    または、
    LIMIT cols OFFSET start
    

    いくつかの注意点:
  • 行インデックス0から
  • startは、検索を開始するローインデックスを表し、colsはクエリーで許可される最大の関数です.
  • 行数が足りないときは、戻れるだけ返します.

  • 例えばLIMIT 1,2は最大2行目と3行目を調べることを示している
    完全修飾テーブル名の使用
    完全に限定された名前を使用してカラムを参照します(テーブル名とカラムワードを同時に使用します).後の複数のテーブル・インラインで使用します.
    第5章ソートデータ
    この章の内容も簡単で、主にソートについて話しました.
    句(clause)SQL文は句で構成されており、一部の句は必須であり、一部はオプションである.1つの句は通常1つのキーワードと提供されるデータから構成される.句の例にはSELECT文のFROM句があり、前章でこの句を見たことがある.
    ORDER BY句
  • ORDER BY句は、1つまたは複数の列の名前をとり、これに基づいて出力をソートします.
  • が複数の列で並べ替えられる場合、並べ替えは完全に所定の順序で行われる.
  • は、非検索カラムによってソートされてもよい.

  • 学生の点数を低いから高いまで並べ、同じ点数の学生を名前で並べ替えるという意味です.
    SELECT id,score 
    FROM  student_score
    ORDER BY score,name;
    

    ソート方向の指定(DESC)
    降順ソートを行うには、DESCキーを指定する必要があります.
    次のSQLの機能は、学生の点数を高いものから低いものに並べ替えることです.
    SELECT id,score 
    FROM  student_score
    ORDER BY score DESC,name;
    
  • 複数の列で降順ソート複数の列で降順ソートを行うには、各列にDESCキーを指定する必要があります.

  • ORDER BYとLIMITの組み合わせ
    次のSQLは、点数が一番高い学生だけを見つける情報です.
    SELECT id,name
    FROM  student_score
    ORDER BY score DESC;
    LIMIT 1;
    

    句の位置順序
  • ORDER BY句が与えられる場合、FROM句の後に位置することを保証すべきである.
  • LIMITを使用する場合は、ORDER BYの後にある必要があります.句の順序が正しくないと、エラーメッセージが発生します.

  • 後に他の句を述べるときは,句の順序も述べる.
    第6章データのフィルタリング
    WHERE句の使用FROM句の後に、WHERE句を加えてデータをフィルタします.
    WHERE句の位置ORDER BYとWHERE句を同時に使用する場合は、ORDER BYをWHEREの後にする必要があります.そうしないとエラーが発生します(ORDER BYの使用については、5章を参照).
    WHERE句オペレータ
  • ==
  • は、!=(<>)
  • に等しくない.
  • <より小さい
  • 以下<=
  • より大きい>
  • 以上>=以上
  • は両者の間にあるBETWEE
  • である.
    次のようになります.
    SELECT num FROM test WHERE num BETWEEN 1 AND 3;
    

    いくつかの注意点:
  • =文字列が一致する場合、文字列は一重引用符''で囲まれ、この一致は大文字と小文字を区別しません.(MySQLの構成により変更可能).
  • の範囲が一致するBETWEENは、左右の端点を含む.

  • Null値チェック(IS NULL)
  • NULLが一致しない問題.注意値がNULLとフィールドが一致しないのは同じではなく、MYSQLがnullであることには特別な意味があります.例えばwhere name != 'tiger'はtigerではない名前のレコードをフィルタしようとしたが、nameフィールドがnullのレコードはフィルタされなかった!

  • 第7章データフィルタリング
    この章では、WHERE句を組み合わせて、より強力なより高度な検索条件を確立する方法について説明します.NOTとINオペレータの使い方も学びます.
    7.1 WHERE句の組合せ
    オペレータ(operator)は、WHERE句の句を結合または変更するためのキーワードです.論理オペレータ(logical operator)とも呼ばれます.
    7.1.1 ANDオペレータ
    複数のカラムでフィルタリングするために、ANDオペレータを使用してWHERE句に条件を追加します.
    SELECT [filed] FROM tb WHERE [field1     ] AND [...] AND [...] …… AND [...];
    

    7.1.2 ORオペレータ
    ORオペレータはANDオペレータとは異なり、MySQLが任意の条件に一致するローを取得することを示します.
    7.1.3計算手順
    WHEREは任意の数のANDおよびORオペレータを含むことができる.両者を組み合わせて複雑で高度なフィルタリングを行うことができます.ANDORを総合的に使用する場合、一言で括弧を多く入れて計算順序を明確にします.
    ANDとORオペレータを持つWHERE句を使用する場合は、カッコを使用してオペレータを明確にグループ化する必要があります.デフォルトの計算順序に過度に依存しないでください.
    7.2 INオペレータ
    INオペレータは条件範囲を指定し、範囲内の各条件を一致させることができます.INは、カンマで区切られた正当な値のリストで、すべて括弧で囲まれています.
    SELECT idtest,num 
    FROM test
    WHERE num IN (1,2);
    

    上の機能は完全にORで代用できます.
  • INとORの連絡
  • 長い正当なオプションリストを使用する場合、INオペレータの構文はより明確で直感的である.
  • INを使用する場合、計算の順序は管理しやすい(使用するオペレータが少ないため).
  • INオペレータは、一般にORオペレータリストよりも高速に実行されます.
  • INの最大の利点は、WHERE句をより動的に確立できるように、他のSELECT文を含んでもよいことである.第14章(サブクエリ)では、これについて詳しく説明します.

  • 7.3 NOTオペレータ
    WHERE句のNOTオペレータには、その後の条件を否定し、WHERE句で使用する機能が1つしかありません.
    MySQLでは、NOT対IN、BETWEEN、EXISTSの句の反転がサポートされています.これは、他の多くのDBMSがNOTを使用して様々な条件の反転を許可しているのとは大きく異なります.
    次のようになります.
    SELECT idtest,num  FROM test WHERE num NOT IN (1,2);
    

    第8章ワイルドカードによるフィルタリング
    ワイルドカード(wildcard)は、値の一部を一致させる特殊な文字です.検索モード(search pattern)①は、文字値、ワイルドカードまたは両方の組合せからなる検索条件です.
    8.1 LIKEオペレータ
    検索句でワイルドカードを使用するには、LIKEオペレータを使用する必要があります.LIKEはMySQLを指示し、後続の検索モードは直接等しいマッチングではなくワイルドカードマッチングを利用して比較する.
    8.1.1%ワイルドカード
    %は、任意の文字が発生した回数を示します.例えばLIKE %ab%は、「ab」を含む任意の文字列を取得することである.
    末尾のスペースがワイルドカードの一致を妨げる可能性があります.
  • %ワイルドカードは何でも一致するようですが、NULLという例外があります.NULLは何もなく、特別な意味を持っていて、%マッチングできないと言ったからです.

  • 8.1.2下線()ワイルドカード
    下線は複数の文字ではなく単一の文字にのみ一致し、多くも少なくもできません.
    8.2ワイルドカードの使用方法
  • ワイルドカードを過度に使用しないでください.他のオペレータが同じ目的を達成できる場合は、他のオペレータを使用します.
  • ワイルドカードを使用する必要がある場合、絶対に必要でない限り、検索モードの開始に使用しないでください.ワイルドカードを検索モードの先頭に置くと、検索が最も遅くなります.