1. データの簡単な取得ブログコンテンツ内の学生テーブルは次のとおりです。 1.1. 単一列の取得
1.2. 複数の列の取得
1.3. すべての列を取得する
1.4. 重複しない行の取得
たとえば、クラスに性別がいくつあるかを確認したい場合、すべての生徒の性別を表示する必要はなく、異なる性別のみを表示する必要があります。つまり、distinct は一意の値を返します。 ここで注意すべき点があります。distinct キーワードは、その前の列だけでなく、すべての列に適用されます。2 つの列が指定されている場合は、指定された 2 つの列が異なる場合を除き、すべての行が検出されます。 1.5. 検索結果の制限
通常、select ステートメントは一致する行の数を返します。返される行の数を制限するには、limit を使用できます。たとえば、select の結果が 10 行を返す場合、必要なのは最初の 5 行だけなので、limit の後のパラメータを 5 として使用できます。select が 4 行を返し、limit 制限が 5 行の場合、4 行が返されます。もちろん、limit の後に 2 つのパラメータを指定することもできます。また、その記述方法も 2 つあります。
これは、番号 1 で表される行番号から開始して、行番号 2 を取得することを意味します。2 番目の書き方は、MySQL 5 以降でサポートされています。 最初に取得される行は1行目ではなく0行目であることに注意してください。 1.6. 完全修飾テーブル名を使用して検索する
2. データの並べ替えと取得2.1. 基本構文使用キーワードで並べ替え 2つの列名は異なってもよい 従業員の給与を日ごとに並べ替えることができますが、同じ給与の従業員もいます。この方法では、給与を年齢などで並べ替えることができます。これは、複数の列で並べ替えることです。
つまり、列 1 が一貫している場合は、列 2 に従ってソートされます。列 1 が一貫していない場合は、列 2 に従ってソートされません。 2.2. ソート方向を指定する上で説明した並べ替えは、実際にはデフォルトの並べ替えであり、デフォルトでは昇順(文字は「A」から「Z」、数字は小さい順)になっています。
では、複数のソートルールがある場合はどうすればよいでしょうか。つまり、クラスの生徒を合計スコアの降順でソートすると、同じ合計スコアを持つ生徒も中国語のスコアの降順でソートされます。ここで注意すべきことは、 desc キーワードは、その直前の列にのみ適用されます。 したがって、複数のフィールドで並べ替える必要がある場合は、対応するフィールドの後に対応する並べ替えルールを記述するだけで済みます。たとえば、両方のフィールドを降順で並べ替える必要がある場合は、次のようになります。
上記で学んだことに基づいて、例を作ってみましょう。
3. フィルターデータを取得する3.1 単純なwhere句の使用
は特殊演算子です:
null 値チェックを実行する場所:
ここでは=の代わりにisが使用されていることに注意してください。 3.2 where句の組み合わせ
機能: and は、and の両側の条件を同時に満たす必要があります。or は、or の片側の条件のみを満たします。in は、条件の範囲を指定するために使用され、not は、条件の内容を否定するために使用されます。 学生テーブルを例に挙げます。
2.or: 19 歳以上、または英語のスコアが 90 を超える学生の名前を検索します。
3.in: 18歳と19歳の学生の名前が見つかる
4.not: 18歳と19歳以外の学生の名前を探しています。
5. 年齢が 20 歳ではない生徒の情報をすべて見つけ、数学の成績の降順で並べ替えます (2 行目のみ)。
キーワードの順序と、limit の後のパラメータの意味に注意を払います。 3.3 ワイルドカードの使用ワイルドカード: 値の一部と一致するために使用される特殊文字。
学生テーブルを例に挙げます。
結果は Cuihua と Ruhuasiyu の 2 つになります。% は片側のみに一致します (文字列の長さに関係なく)。"%hua" だけの場合、Ruhuasiyu は見つかりません。もちろん、「ruhuasiyu」を検索したい場合は、次のようにすることもできます。
2._: 優秀な学生ルワシユを探す:
4. 正規表現を使用してデータを取得する正規表現は、テキストを一致させるために使用される特殊な文字列です。パターン (正規表現) をテキスト文字列と比較します。 正規表現でよく使われる記号:
キーワード:正規表現 学生テーブルを例に挙げます。 Likeは文字列全体に一致しますが、regexpは部分文字列に一致します。 例えば: 他の名前が「1」のような学生から sname を選択します 次のように正規表現に置き換えます: 学生名から sname を選択します。othername の正規表現は "1" です。 これで違いがはっきり分かりました。2 中国語の正規表現「.8」で学生名を学生から選択 3. 学生から sname を選択し、othername の正規表現は “1 ton|2” です 4. 学生名から学生名を選択、その他の名前は正規表現「[1|2] ton」 実際、上記は学生名から学生名を選択、その他の名前は正規表現「1 トン|2 トン」 学生名から学生名を選択、その他の名前は正規表現「[az]」 6. select sname from student where othername regexp “\\.” \、[,]などの特殊記号は\\でエスケープできます。 7. 学生テーブルを例として使用する代わりに、本からの例を見てみ この文に注目してください:?先行する文字の0回または1回の出現に一致します 8.{n} この本から別の例を見てみましょう(他の括弧についても同様です)。 一致する文字クラスは次のとおりです。 9. もちろん、 否定を表す例を以下に示します。 学生名からsnameを選択、othername 正規表現 “^[^a1]” 最初の ^ は制限の始まりであり、2 番目の ^ は否定です。 10. もうひとつ: 大文字と小文字を区別しない検索 キーワード:バイナリ 通常クエリする文字列では大文字と小文字は区別されないため、大文字と小文字を区別しない場合は binary を使用できます。 select + 列名(複数の列も可) + from + テーブル名 + where + 列名 + regexp + binary + 正規表現 残りはそれほど重要ではありません。自分で試してみてください 5. 計算フィールドを取得する5.1 スプライシングフィールドの使用
たとえば、数学の教師が生徒全員の数学の成績を「数学の成績(名前)」の形式で印刷したいというリクエストがあった場合、 学生から concat(smath,"(",sname,")") を選択します 実行結果: 5.2 エイリアスの使用
5.1の例を使用する SELECT CONCAT(LTRIM(smath),"(",sname,")") AS "数学成绩" from student 結果: ASは省略可能で、上記の例は次のようにも書ける。
5.3 算術計算の実行たとえば、各生徒の合計得点と名前を調べることができます。 SELECT sname as “姓名”,smath+schinese+senglish as “总成绩” from student 実行結果: 6. 関数を使用してデータを取得する6.1 一般的なテキスト処理関数:例として、upper を取り上げます。upper 関数を使用して、クラスメートのエイリアスを照会します。
実行結果: 6.2 日付と時刻の処理関数:日付形式: いくつかの重要な機能を例に挙げてみましょう。 1.now(): 現在のシステム日付と時刻を返します
実行結果: 2.curdate(): 時刻を除いた現在のシステム日付を返します。
実行結果: 3.curtime(): 日付を除いた現在の時刻を返す
実行結果: 4. YEAR()、Hour()など: 指定した部分を取得する
実行結果: 5. date_format() 関数で、現在の時刻を文字列に変換します。
実行結果: 文字列を日付に変換するための対応する関数があります。
実行結果: 6.3 数値処理関数:6.4 集計関数:1. AVG() 関数の例: 学生テーブルを例に挙げてみましょう。学生の平均数学のスコアを調べます。
実行結果: 2. COUNT関数 一般的なCOUNT()関数には2つの用途がある
使用例:
実行結果: 3. 異なる値を指定する キーワード明確な 学生のテーブルに何種類の年齢層が含まれているかを確認すると、
実行結果: 4. 注記
7. グループ検索データ7.1. 単純なグループ化キーワードグループ化 例を見てみましょう:
実行結果: 注記: 1. グループ内に null 値がある場合、null がグループとして返されます。null 値が複数ある場合は、それらがグループ化されます。 7.2 フィルタリンググループ:
例えば、生徒の表で数学の成績が80点以上の男子生徒の数を数えます。
実行結果: where と having の違い:
8. サブクエリを使用してデータを取得する8.1 サブクエリの概要1. サブクエリ: 他のステートメント内に表示されるステートメントは、サブクエリまたは内部クエリと呼ばれます。他の選択ステートメントを埋め込むクエリは、外部クエリまたはメインクエリと呼ばれます。 2.(1) サブクエリの分類: 2. (2)結果セットの行数と列数に応じて: 8.2 さまざまなサブクエリの例: 1. where と having の後のサブクエリ:
実行結果: 例2: Ruhuasiyu君の中国語、数学、英語の成績がすべて80点以上の場合、クラスメート全員の情報を表示します(行サブクエリ):
実行結果: 例3: whereを使用して女子クラスメートの名前を照会する(サブクエリの例(かなり単純な例)
実行結果: 2. 次のサブクエリを選択します(スカラーサブクエリ)
実行結果: 3. 背後のテーブルサブクエリから:
実行結果: 4. テーブルサブクエリが存在後に実行される
例: 数学の成績が100点の生徒の名前を照会する
実行結果: 次のように書くことはできないことに注意してください。
エイリアスはありません。この書き方では、まず、exists で select を実行します。exists に true が 1 つでもある限り、すべての生徒の名前が照会されます。そうでない場合、すべての生徒の名前は見つかりません。したがって、上記のように記述すると、数学が 100 に等しい生徒が 1 人いて、他の生徒は 100 ではないため、true が 1 つあれば、すべての生徒の名前が見つかります。ただし、エイリアスを使用した後は、各生徒が 1 回ずつ判定され、判定が成功するたびに名前が出力されます。 8.3 相関サブクエリ 相関サブクエリ: 外部クエリを含むサブクエリ 生徒テーブル内の男子と女子の平均数学スコアを照会します。
実行結果: 最初の ssex にエイリアスを指定し、2 番目に参照を指定していることがわかります。ssex=ssex を直接使用すると、エラーが発生します。相関サブクエリにより、あいまいさを回避できます。 9. 接続クエリ生徒情報(身長、体重、生徒番号など)を表すために、生徒テーブルに基づいて情報テーブルを追加します。 9.1 接続クエリ分類; 接続クエリは内部接続と外部接続クロス接続に分かれています 1. 等価および非等価の内部結合( sql92 バージョン)
実行結果: 等値の内部結合、非等値結合( sql99バージョン)
上記のsql92バージョンの例をsql99ステートメントを使用して記述します。
sql2 構文との違いは、2 つのテーブルが join によって分離されている点です。また、sql92 構文との違いは、sql92 構文では結合条件とその他のフィルター条件が where 内に置かれるのに対し、sql99 では結合条件が on の後に置かれ、その他のフィルター条件が where の後に置かれることです。 2. 内部結合自己結合( sql92 バージョン):
ここでは、1つのテーブルが2つのテーブルとして扱われますが、これら2つのテーブルには別名を付ける必要があります。そうしないと、あいまいさが生じます。これらは次の形式で記述する必要があります。 3. 複数のテーブルの内部結合等価結合:
4. 外部結合の左外部結合: 外部結合は、一方のテーブルにもう一方のテーブルにはないレコードがある場合に使用されます。
外部結合特性(左外部、右外部): 1. 外部結合はメインテーブル内のすべてのレコードを照会します
新しい表を導入します(学生表の学生が留学した回数) 例:
実行結果: 5. 完全外部結合の特性 外部結合は、プライマリテーブルとセカンダリテーブルのすべてのレコードを照会します。 10.共同クエリキーワード結合 適用シナリオ: 照会する情報が複数のテーブルから取得され、複数のテーブル間に直接的な接続はないが、照会するフィールド情報が一貫している場合 (たとえば、両方のテーブルで名前と性別を照会し、それらを 1 つのテーブルに結合できるようにするには、照会フィールドを揃える必要があります。たとえば、両方のテーブルで名前と性別を照会する場合、最初の選択フィールドの順序は 2 番目の選択と一貫している必要があります。つまり、名前が最初で性別が 2 番目、または性別が最初で名前が 2 番目) 例えば:
実行結果: 重複排除の効果を見てみましょう。18歳のクラスメイトの名前と性別を2回クエリします。
実行結果: しかし、union allを使うと
実行結果: 11. サブクエリ11.1 単一行サブクエリ単一行サブクエリ。クエリ結果は 1 行のデータのみで、サブクエリには 例 (emp 内で最高給与でも最低給与でもない従業員情報を照会する):
11.2 複数行サブクエリサブクエリは 例: emp テーブルを照会して、部門番号 10 の従業員の給与よりも高い給与を持つ他の部門の従業員情報を取得します。
11.3 相関サブクエリ単一行サブクエリと複数行サブクエリでは、内部クエリと外部クエリは別々に実行されます。一部の内部クエリは外部クエリの助けを借りて実行され、外部クエリの実行は内部クエリと切り離せません。つまり、内部クエリと外部クエリは関連しています。このようなサブクエリは相関サブクエリと呼ばれます。 例:
上記の例では、サブクエリは外部クエリ テーブルの職種名を使用する必要があり、外部クエリはサブクエリからの求人情報を使用する必要があります。 12. 補足12.1 自然なクエリ自然なクエリが複数のテーブルを取得する場合、2 つのテーブル内の同じ列を持つテーブルが自動的に接続されます (自然な接続には同じ列名が必要です) 例えば:
従業員テーブルと部門はどちらもempno列を持っているので、この時点ではクエリを実行するとシステムが自動的に接続します。 12.2 クロスコネクトクロス結合は結合条件を必要としない結合(2つのテーブルに関係がなくてもよい)であり、実行の結果は直積
以上が初心者向けのMySQLデータベース検索文DQLの詳しい内容です。MySQL検索文DQLの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
>>: HTMLドロップダウンメニューを送信した後、デフォルト値に戻るのではなく、選択した値が保持されます。
GROUP BY ステートメントは、Aggregate 関数と組み合わせて使用され、1 つ以上の...
目次序文小道具コンテクスト州要約する序文最新のフロントエンド フレームワークはすべて、コンポーネント...
目次Vue でのスロットの使用: slotスコープ付きスロット: テンプレートタグで囲む要約するVu...
1. まずMySQLとEclipseの環境を準備します。環境がセットアップされたら、Eclipseの...
ノードにおけるhttpの役割は何ですか? httpモジュールの役割は、サーバーの作成と記述を支援する...
操作前に必ずお読みください:注意:管理に rancher を使用する場合は、k8s クラスターが構築...
最近Bステーションでスマートアンチブロッキング弾幕と呼ばれる弾幕エフェクトを見ました。これは伝説のマ...
このテクニックは、この記事から来ています - シルキーでスムーズなパフォーマンスでボックスシャドウを...
目次1. はじめに2. 使用方法ステートレスコンポーネントステートフルコンポーネント制御コンポーネン...
1. 問題の原因友人の @水米田 から、POSITION に基づくマスタースレーブについて質問があり...
序文CSS を使用して点線を生成するのは、フロントエンド開発者にとっては簡単です。一般的に、これを実...
序文Nginx (「エンジン エックス」と発音) は、リバース プロキシ、ロード バランサ、HTTP...
目次チュートリアルシリーズ1. yumパッケージマネージャーを使用してMariaDBサーバーをインス...
1. Vue レスポンシブの使用法を確認する Vue の応答性は、私たち全員がよく知っています。 ...
序文WeChat アプレット開発 (ネイティブ wxml、wxcss) で、{{ }} 内で直接メソ...