MySQL学習データベース検索文DQL小百章

MySQL学習データベース検索文DQL小百章

1. データの簡単な取得

ブログコンテンツ内の学生テーブルは次のとおりです。

ここに画像の説明を挿入

1.1. 単一列の取得

select + 列名 + from + テーブル名

1.2. 複数の列の取得

select + 列名 1、列名 2、列名 3...列 n + from + テーブル名

1.3. すべての列を取得する

select + * (ワイルドカード) +from + テーブル名

1.4. 重複しない行の取得

使用明確なキーワード
select + distinctive + 列名 + from + テーブル名

たとえば、クラスに性別がいくつあるかを確認したい場合、すべての生徒の性別を表示する必要はなく、異なる性別のみを表示する必要があります。つまり、distinct は一意の値を返します。

ここで注意すべき点があります。distinct キーワードは、その前の列だけでなく、すべての列に適用されます。2 つの列が指定されている場合は、指定された 2 つの列が異なる場合を除き、すべての行が検出されます。

1.5. 検索結果の制限

使用制限キーワード
選択 + 列名 + 開始 + テーブル名 + 制限 + 数値

通常、select ステートメントは一致する行の数を返します。返される行の数を制限するには、limit を使用できます。たとえば、select の結果が 10 行を返す場合、必要なのは最初の 5 行だけなので、limit の後のパラメータを 5 として使用できます。select が 4 行を返し、limit 制限が 5 行の場合、4 行が返されます。もちろん、limit の後に 2 つのパラメータを指定することもできます。また、その記述方法も 2 つあります。

1.selet + 列名 + from + テーブル名 + limit + 数値 1、数値 2
2.selet + 列名 + from + テーブル名 + limit + 数値 2 + offset + 数値 1

これは、番号 1 で表される行番号から開始して、行番号 2 を取得することを意味します。2 番目の書き方は、MySQL 5 以降でサポートされています。

最初に取得される行は1行目ではなく0行目であることに注意してください。

1.6. 完全修飾テーブル名を使用して検索する

select + テーブル名.列名 + from + データベース名.テーブル名

2. データの並べ替えと取得

2.1. 基本構文

使用キーワードで並べ替え
select + 列名(複数の列も可) + from + テーブル名 + order by + 列名

2つの列名は異なってもよい

従業員の給与を日ごとに並べ替えることができますが、同じ給与の従業員もいます。この方法では、給与を年齢などで並べ替えることができます。これは、複数の列で並べ替えることです。

select + 列名(複数の列も可) + from + テーブル名 + order by + 列 1、列 2

つまり、列 1 が一貫している場合は、列 2 に従ってソートされます。列 1 が一貫していない場合は、列 2 に従ってソートされません。

2.2. ソート方向を指定する

上で説明した並べ替えは、実際にはデフォルトの並べ替えであり、デフォルトでは昇順(文字は「A」から「Z」、数字は小さい順)になっています。
降順で並べ替えることもできます

使用desc キーワード
select + 列名(複数の列も可) + from + テーブル名 + order by + 列名 desc

では、複数のソートルールがある場合はどうすればよいでしょうか。つまり、クラスの生徒を合計スコアの降順でソートすると、同じ合計スコアを持つ生徒も中国語のスコアの降順でソートされます。ここで注意すべきことは、

desc キーワードは、その直前の列にのみ適用されます。

したがって、複数のフィールドで並べ替える必要がある場合は、対応するフィールドの後に対応する並べ替えルールを記述するだけで済みます。たとえば、両方のフィールドを降順で並べ替える必要がある場合は、次のようになります。

select + 列名(複数の列も可) + from + テーブル名 + order by + 列名 1 desc、列名 2 desc

実際、昇順を書く必要はありません。デフォルトは昇順なので、キーワードはascです。

上記で学んだことに基づいて、例を作ってみましょう。
最年長の生徒の名前、性別、数学の成績をリストします。

学生からsname、ssex、smathを選択 ORDER BY sage desc LIMIT 1

order byとlimitの順序に注意してください

3. フィルターデータを取得する

3.1 単純なwhere句の使用

select + 列名 + from + テーブル名 where + 判定条件

は特殊演算子です:

1. <> : 等しくない、実際には!=と同じ
2. between : およびand組み合わせて、指定された2つの値の間を示すために使用します。例: select age from student where age between 18 and 20

null 値チェックを実行する場所:

select + 列名 + from + テーブル名 + where + 列名 + is null

ここでは=の代わりにisが使用されていることに注意してください。

3.2 where句の組み合わせ

オペレーター効果
そしてとの両方の側面の条件を満たすために
またはまたは 側の条件を満たすだけです。
条件範囲を指定するために使用
ない条件の内容を否定するために使用される

機能: and は、and の両側の条件を同時に満たす必要があります。or は、or の片側の条件のみを満たします。in は、条件の範囲を指定するために使用され、not は、条件の内容を否定するために使用されます。

学生テーブルを例に挙げます。
1.そして:数学で90点以上を獲得した女子生徒の情報をすべて見つける

SELECT * FROM student where ssex="女" and smath>90

2.or: 19 歳以上、または英語のスコアが 90 を超える学生の名前を検索します。

sage>19 または senglish>90 の場合、sname FROM student を選択

3.in: 18歳と19歳の学生の名前が見つかる

sage in(18,19) の student から sname を選択

4.not: 18歳と19歳以外の学生の名前を探しています。

sage が含まれない学生から sname を選択します (18,19)

5. 年齢が 20 歳ではない生徒の情報をすべて見つけ、数学の成績の降順で並べ替えます (2 行目のみ)。

選択*学生からsageが含まれない場所(20)GROUP BY smath desc LIMIT 1,1

キーワードの順序と、limit の後のパラメータの意味に注意を払います。

3.3 ワイルドカードの使用

ワイルドカード: 値の一部と一致するために使用される特殊文字。
例えば、直接的な等価性マッチングではなくワイルドカードマッチングに基づいて比較する

ワイルドカード効果
%任意の文字の任意の回数の出現を示す
_単一の文字列の長さに一致します

学生テーブルを例に挙げます。
1.%: 名前に花が含まれる生徒の情報をすべて検索します

select * from student where sname like "%花%"

結果は Cuihua と Ruhuasiyu の 2 つになります。% は片側のみに一致します (文字列の長さに関係なく)。"%hua" だけの場合、Ruhuasiyu は見つかりません。もちろん、「ruhuasiyu」を検索したい場合は、次のようにすることもできます。

select * from student where sname like "%花%玉"

2._: 優秀な学生ルワシユを探す:

select * from student where sname like "_花_玉"

% は 0 文字と無制限の長さの文字列に一致しますが、_ は 1 文字のみに一致する必要があります。

4. 正規表現を使用してデータを取得する

正規表現は、テキストを一致させるために使用される特殊な文字列です。パターン (正規表現) をテキスト文字列と比較します。

正規表現でよく使われる記号:

シンボルシンボリック関数
1文字に一致
|同等または
[…]または別の形式の
-一致する範囲を示します
\\特殊文字のマッチング
* 0件以上の一致
+ {1,} に等しい一致が 1 つ以上あります
? 0 または 1 の一致は {0,1} に等しい
{n}指定された一致数
{n,}少なくとも指定された数の一致
{n,m}一致する数値範囲mは255を超えない
^テキストの開始
$テキスト終了
[[ :<:]]言葉の始まり
[[:>:]]単語の終わり

キーワード:正規表現
select + 列名(可以多個列) + from + 表名+ where + 列名+ regexp + 正則表達式

学生テーブルを例に挙げます。
1. まず正規表現とlikeの違いについてお話しましょう

Likeは文字列全体に一致しますが、regexpは部分文字列に一致します。

例えば:
タイプが 1 である学生の名前を一致させるには、like を使用します。

他の名前が「1」のような学生から sname を選択します
結果:
フェン姉妹

次のように正規表現に置き換えます:

学生名から sname を選択します。othername の正規表現は "1" です。
結果:
翠花鳳傑秋祥

これで違いがはっきり分かりました。2 .は任意の文字に一致します。たとえば、中国語のスコアが 8 の生徒の名前を検索します。

中国語の正規表現「.8」で学生名を学生から選択
結果:
フェンジエ・キウシャン

3. |
例えば、エイリアスに1トンまたは2トンが含まれる学生の名前を検索してみましょう。

学生から sname を選択し、othername の正規表現は “1 ton|2” です
検索結果:
翠花は花や玉のような富をもたらす

4. [....]
たとえば、別名が 1 ton または 2 ton である学生の名前を検索します。

学生名から学生名を選択、その他の名前は正規表現「[1|2] ton」
実行結果:
翠花王才

実際、上記は学生名から学生名を選択、その他の名前は正規表現「1 トン|2 トン」
以下と同等学生からsnameを選択、その他の名前正規表現"[12] ton" 5. -
たとえば、エイリアスに小文字の英語が含まれている学生の名前を検索する

学生名から学生名を選択、その他の名前は正規表現「[az]」
実行結果:
翠花王才秋祥は花と玉のように美しい

6. \\
たとえば、エイリアスに文字 が含まれる学生の名前を検索してみましょう.

select sname from student where othername regexp “\\.”
結果を検索します。
なし
\、[,]などの特殊記号は\\でエスケープできます。

7. 学生テーブルを例として使用する代わりに、本からの例を見てみ?

ここに画像の説明を挿入

この文に注目してください:?先行する文字の0回または1回の出現に一致します

8.{n} この本から別の例を見てみましょう(他の括弧についても同様です)。

ここに画像の説明を挿入

一致する文字クラスは次のとおりです。

ここに画像の説明を挿入

9. ^引き続き本の例を使用します:

ここに画像の説明を挿入

もちろん、 ^文字列の先頭を参照するだけでなく、セット内 (つまり [] 内) で否定を示すこともできます。

否定を表す例を以下に示します。
[^az]: は、az 以外の文字に一致することを意味します。学生テーブルを例にとり、エイリアスが a と 1 で始まらない学生の名前を検索します。

学生名からsnameを選択、othername 正規表現 “^[^a1]”

最初の ^ は制限の始まりであり、2 番目の ^ は否定です。

10. もうひとつ: 大文字と小文字を区別しない検索

キーワード:バイナリ

通常クエリする文字列では大文字と小文字は区別されないため、大文字と小文字を区別しない場合は binary を使用できます。

select + 列名(複数の列も可) + from + テーブル名 + where + 列名 + regexp + binary + 正規表現

残りはそれほど重要ではありません。自分で試してみてください

5. 計算フィールドを取得する

5.1 スプライシングフィールドの使用

concat(str1,str2,....)関数を使用する

たとえば、数学の教師が生徒全員の数学の成績を「数学の成績(名前)」の形式で印刷したいというリクエストがあった場合、

学生から concat(smath,"(",sname,")") を選択します

実行結果:

ここに画像の説明を挿入

5.2 エイリアスの使用

キーワード:として

5.1の例を使用する

SELECT CONCAT(LTRIM(smath),"(",sname,")") AS "数学成绩" from student

結果:

ここに画像の説明を挿入

ASは省略可能で、上記の例は次のようにも書ける。

生徒から CONCAT(LTRIM(smath),"(",sname,")") “数学の成績” を選択します。エイリアスは、group by、having、order byの後にサポートされます。

5.3 算術計算の実行

たとえば、各生徒の合計得点と名前を調べることができます。

SELECT sname as “姓名”,smath+schinese+senglish as “总成绩” from student

実行結果:

ここに画像の説明を挿入

6. 関数を使用してデータを取得する

6.1 一般的なテキスト処理関数:

ここに画像の説明を挿入

例として、upper を取り上げます。upper 関数を使用して、クラスメートのエイリアスを照会します。

学生から「エイリアス」としてUPPER(othername)を選択

実行結果:

ここに画像の説明を挿入

6.2 日付と時刻の処理関数:

ここに画像の説明を挿入

日付形式:

ここに画像の説明を挿入

いくつかの重要な機能を例に挙げてみましょう。

1.now(): 現在のシステム日付と時刻を返します

今すぐ選択()

実行結果:

ここに画像の説明を挿入

2.curdate(): 時刻を除いた現在のシステム日付を返します。

curdate() を選択

実行結果:

ここに画像の説明を挿入

3.curtime(): 日付を除いた現在の時刻を返す

curtime() を選択

実行結果:

ここに画像の説明を挿入

4. YEAR()、Hour()など: 指定した部分を取得する

年を選択(now())

実行結果:

ここに画像の説明を挿入

5. date_format() 関数で、現在の時刻を文字列に変換します。

DATE_FORMAT(now(),"%Y-%c-%d") を選択

実行結果:

ここに画像の説明を挿入

文字列を日付に変換するための対応する関数があります。
例:

STR_TO_DATE("2001-09-10","%Y-%c-%d")を選択します

実行結果:

ここに画像の説明を挿入

6.3 数値処理関数:

ここに画像の説明を挿入

6.4 集計関数:

ここに画像の説明を挿入

1. AVG() 関数の例: 学生テーブルを例に挙げてみましょう。学生の平均数学のスコアを調べます。

学生の「数学の平均点」として avg(smath) を選択します

実行結果:

ここに画像の説明を挿入

2. COUNT関数 一般的なCOUNT()関数には2つの用途がある

  • 1 列がNULL値かどうかに関係なく、count(*)を使用してカウントします。
  • 2. count(column)を使用して、特定の列の値をカウントし、null値を無視します。

使用例:

学生からcount(*)を選択

実行結果:

ここに画像の説明を挿入

3. 異なる値を指定する

キーワード明確な

学生のテーブルに何種類の年齢層が含まれているかを確認すると、

学生から「年齢カテゴリ」として DISTINCT sage を選択

実行結果:

ここに画像の説明を挿入

4. 注記

avg()、min()、max()、sum() 関数は null 値を無視します

7. グループ検索データ

7.1. 単純なグループ化

キーワードグループ化

例を見てみましょう:
生徒のテーブルに載っている男子と女子の数を数える

学生からssex、COUNT(*)を選択GROUP BY ssex

実行結果:

ここに画像の説明を挿入

注記:

1. グループ内に null 値がある場合、null がグループとして返​​されます。null 値が複数ある場合は、それらがグループ化されます。
2. Group byはwhere句の後に使用する必要があります

7.2 フィルタリンググループ:

キーワードによる単純なグループ化後にデータをフィルタリングする持つ

例えば、生徒の表で数学の成績が80点以上の男子生徒の数を数えます。

smath>80 の学生から ssex,COUNT(*) を選択し、 GROUP BY ssex で ssex="男" を指定します。

実行結果:

ここに画像の説明を挿入

where と having の違い:

グループ化前のフィルタ、グループ化後のフィルタの有無

8. サブクエリを使用してデータを取得する

8.1 サブクエリの概要

1. サブクエリ: 他のステートメント内に表示されるステートメントは、サブクエリまたは内部クエリと呼ばれます。他の選択ステートメントを埋め込むクエリは、外部クエリまたはメインクエリと呼ばれます。

2.(1) サブクエリの分類:
サブクエリが発生する場所
戻る+(スカラーサブクエリのみサポートします)
後ろから + (テーブルサブクエリをサポート)
ここで、または後に続く+ (スカラーサブクエリ、列サブクエリ、行サブクエリをサポート)
+( の後に存在するテーブルサブクエリ)

2. (2)結果セットの行数と列数に応じて:
スカラーサブクエリ:結果セットには 1 行と 1 列のみが含まれます)
サブクエリの例:結果セット 1 列 複数行)
行サブクエリ: (結果セットには通常、1行に複数の列が含まれます)
テーブルサブクエリ:結果セットは通常、複数の行と列で構成されます)

8.2 さまざまなサブクエリの例:

1. where と having の後のサブクエリ:
例1: 学生テーブルに、Cuihua よりも数学の成績が高い学生の情報をすべてクエリします (スカラーサブクエリ):

select * from student where smath>(select smath from student where sname="Cuihua")

実行結果:

ここに画像の説明を挿入

例2: Ruhuasiyu君の中国語、数学、英語の成績がすべて80点以上の場合、クラスメート全員の情報を表示します(行サブクエリ):

select * from student where (80,80,80)<(select schinese,smath,senglish from student where sname="如花似玉")

実行結果:

ここに画像の説明を挿入

例3: whereを使用して女子クラスメートの名前を照会する(サブクエリの例(かなり単純な例)

SELECT a.sname FROM student a where a.smath in (select smath from student where ssex="女")

実行結果:

ここに画像の説明を挿入

2. 次のサブクエリを選択します(スカラーサブクエリ)
各学生が獲得した賞の数を調べます。
ここで賞金表を紹介します:

ここに画像の説明を挿入

select sname,(select count(*) from Prize where student.sname=prize.sname) as “受賞数” from student

実行結果:

ここに画像の説明を挿入

3. 背後のテーブルサブクエリから:
例: 数学で 80 点以上を獲得した女の子の名前を検索します。

s.sname を (select * from student where ssex="女") から s として選択します

実行結果:

ここに画像の説明を挿入

4. テーブルサブクエリが存在後に実行される

存在する機能はそれが空かどうかを判断することである

例: 数学の成績が100点の生徒の名前を照会する

SELECT a.sname FROM student a where EXISTS(select a.smath from student where a.smath=100 )

実行結果:

ここに画像の説明を挿入

次のように書くことはできないことに注意してください。

SELECT a.sname FROM student a where EXISTS(select smath from student where smath=100 )

エイリアスはありません。この書き方では、まず、exists で select を実行します。exists に true が 1 つでもある限り、すべての生徒の名前が照会されます。そうでない場合、すべての生徒の名前は見つかりません。したがって、上記のように記述すると、数学が 100 に等しい生徒が 1 人いて、他の生徒は 100 ではないため、true が 1 つあれば、すべての生徒の名前が見つかります。ただし、エイリアスを使用した後は、各生徒が 1 回ずつ判定され、判定が成功するたびに名前が出力されます。

8.3 相関サブクエリ

相関サブクエリ: 外部クエリを含むサブクエリ

生徒テーブル内の男子と女子の平均数学スコアを照会します。

ssex を sssex として選択し、(select avg(smath) FROM student where sssex=student.ssex) を “平均スコア” として student GROUP BY ssex として選択します。

実行結果:

ここに画像の説明を挿入

最初の ssex にエイリアスを指定し、2 番目に参照を指定していることがわかります。ssex=ssex を直接使用すると、エラーが発生します。相関サブクエリにより、あいまいさを回避できます。

9. 接続クエリ

生徒情報(身長、体重、生徒番号など)を表すために、生徒テーブルに基づいて情報テーブルを追加します。

ここに画像の説明を挿入

9.1 接続クエリ

分類;

接続クエリは内部接続と外部接続クロス接続に分かれています
1. 内部結合: 等価結合、非等価結合、自己結合
2. 外部結合: 左外部結合、右外部結合、完全外部結合
3. クロスコネクト

1. 等価および非等価の内部結合( sql92 バージョン)
等価結合の例を見てみましょう。学生テーブルと情報テーブルを結合して、学生の名前、性別、年齢、身長、体重を照会します。

student.sname、ssex、sage、slength、sweigth を student.sname=information.sname の student.information から選択します。

実行結果:

ここに画像の説明を挿入

等値の内部結合、非等値結合( sql99バージョン)
文法:

選択 + クエリ リスト + テーブル 1 (別名) から + (内部) 結合テーブル 2 (別名) + 結合条件 + (where) + (group by) + (having) + (order by)

上記のsql92バージョンの例をsql99ステートメントを使用して記述します。

学生からstudent.sname、ssex、sage、slength、sweigthを選択し、student.sname=information.snameの情報に結合します。

sql2 構文との違いは、2 つのテーブルが join によって分離されている点です。また、sql92 構文との違いは、sql92 構文では結合条件とその他のフィルター条件が where 内に置かれるのに対し、sql99 では結合条件が on の後に置かれ、その他のフィルター条件が where の後に置かれることです。

2. 内部結合自己結合( sql92 バージョン):
口頭での例は次のとおりです。
例えば、従業員テーブルには従業員番号とそれに対応するリーダーの番号があります。従業員の名前とそのリーダーの名前を検索するには、次のようにします。

従業員テーブル a、従業員テーブル b から a.name、b.name を選択します (a.number = b.leader number)

ここでは、1つのテーブルが2つのテーブルとして扱われますが、これら2つのテーブルには別名を付ける必要があります。そうしないと、あいまいさが生じます。これらは次の形式で記述する必要があります。

3. 複数のテーブルの内部結合等価結合:

選択 + クエリ リスト + テーブル 1 (別名) から + (内部) 結合テーブル 2 (別名) + on 結合条件 + (内部) 結合テーブル 3 (別名) + on+結合条件 + (内部) 結合テーブル 4 (別名) + on 結合条件 + ..... + (where) + (group by) + (having) + (order by)

4. 外部結合の左外部結合:

外部結合は、一方のテーブルにもう一方のテーブルにはないレコードがある場合に使用されます。

左外部結合の基本構文:
SELECT + クエリリンクテーブル + FROM + メインテーブル(エイリアス) + LEFT(OUTER)JOIN + スレーブテーブル(エイリアス) + ON 接続条件

右外部結合の基本構文:
SELECT + クエリリンクリスト + FROM + スレーブテーブル(エイリアス) + 右(OUTER)JOIN + マスターテーブル(エイリアス) + ON 接続条件

外部結合特性(左外部、右外部):

1. 外部結合はメインテーブル内のすべてのレコードを照会します
2. メインテーブルにはあるがセカンダリテーブルにはない場合はnullが表示されます。

一般的に、外部結合 = 内部結合 + スレーブテーブルにないメインテーブル内のデータ

新しい表を導入します(学生表の学生が留学した回数)

ここに画像の説明を挿入

例:
各学生が留学した回数を問い合わせます(左外部結合を使用します)。

学生 a から a.sname,b.scount を選択し、 a.sname=b.sname で abord b を左に JOIN します。

実行結果:

ここに画像の説明を挿入

5. 完全外部結合の特性

外部結合は、プライマリテーブルとセカンダリテーブルのすべてのレコードを照会します。

10.共同クエリ

キーワード結合

適用シナリオ: 照会する情報が複数のテーブルから取得され、複数のテーブル間に直接的な接続はないが、照会するフィールド情報が一貫している場合 (たとえば、両方のテーブルで名前と性別を照会し、それらを 1 つのテーブルに結合できるようにするには、照会フィールドを揃える必要があります。たとえば、両方のテーブルで名前と性別を照会する場合、最初の選択フィールドの順序は 2 番目の選択と一貫している必要があります。つまり、名前が最初で性別が 2 番目、または性別が最初で名前が 2 番目)

例えば:
学生テーブルで 18 歳と 19 歳の学生の名前と性別を検索します。

SELECT sname,ssex from student where sage=18 UNION SELECT sname,ssex from student where sage=19

実行結果:

ここに画像の説明を挿入

重複排除の効果を見てみましょう。18歳のクラスメイトの名前と性別を2回クエリします。

sage=18 の学生から sname、ssex を選択 UNION sage=18 の学生から sname、ssex を選択

実行結果:

ここに画像の説明を挿入

しかし、union allを使うと

SELECT sname,ssex from student where sage=18 UNION all SELECT sname,ssex from student where sage=18

実行結果:

ここに画像の説明を挿入

11. サブクエリ

11.1 単一行サブクエリ

単一行サブクエリ。クエリ結果は 1 行のデータのみで、サブクエリにはorder by句を含めることはできません。

例 (emp 内で最高給与でも最低給与でもない従業員情報を照会する):

empno、ename、sal、emp から選択します。ここで sal>(emp から min(sal) を選択) かつ sal<(emp から max(sal) を選択) です。

11.2 複数行サブクエリ

サブクエリはINANY 、またはALLを使用して複数行のデータを返します。

例: emp テーブルを照会して、部門番号 10 の従業員の給与よりも高い給与を持つ他の部門の従業員情報を取得します。

emp から * を選択し、sal > any(emp から sal を選択し、deptno=10) かつ deptno<>10 の場合

11.3 相関サブクエリ

単一行サブクエリと複数行サブクエリでは、内部クエリと外部クエリは別々に実行されます。一部の内部クエリは外部クエリの助けを借りて実行され、外部クエリの実行は内部クエリと切り離せません。つまり、内部クエリと外部クエリは関連しています。このようなサブクエリは相関サブクエリと呼ばれます。

例:
相関サブクエリを使用して、同じ職位の平均給与よりも高い給与を持つ従業員に関する情報を取得します。

emp f から empno、ename、sal を選択します。sal>(emp から avg(sal) を選択します。job=f.job) ジョブで並べ替えます。

上記の例では、サブクエリは外部クエリ テーブルの職種名を使用する必要があり、外部クエリはサブクエリからの求人情報を使用する必要があります。

12. 補足

12.1 自然なクエリ

自然なクエリが複数のテーブルを取得する場合、2 つのテーブル内の同じ列を持つテーブルが自動的に接続されます (自然な接続には同じ列名が必要です)
キーワード: natural join

例えば:

emp から empno、ename、job、dname を選択し、sal>2000 の dept を結合します。

従業員テーブルと部門はどちらもempno列を持っているので、この時点ではクエリを実行するとシステムが自動的に接続します。

12.2 クロスコネクト

クロス結合は結合条件を必要としない結合(2つのテーブルに関係がなくてもよい)であり、実行の結果は直積cross join :クロス結合

テーブル1から列1、列2を選択し、テーブル2をクロス結合します

以上が初心者向けのMySQLデータベース検索文DQLの詳しい内容です。MySQL検索文DQLの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • DQL コマンドを使用して MySQL でデータをクエリする方法
  • MySQL構文におけるDQL操作の詳細な説明

<<:  CSS3 変換遷移ジッター問題の解決

>>:  HTMLドロップダウンメニューを送信した後、デフォルト値に戻るのではなく、選択した値が保持されます。

推薦する

SQL GROUP BYの詳細な説明と簡単な例

GROUP BY ステートメントは、Aggregate 関数と組み合わせて使用​​され、1 つ以上の...

React のグローバル状態管理の 3 つの基本メカニズムの調査

目次序文小道具コンテクスト州要約する序文最新のフロントエンド フレームワークはすべて、コンポーネント...

JavaScript - Vue でのスロットの使用: スロット

目次Vue でのスロットの使用: slotスコープ付きスロット: テンプレートタグで囲む要約するVu...

JDBC を MySQL 5.7 に接続する方法

1. まずMySQLとEclipseの環境を準備します。環境がセットアップされたら、Eclipseの...

ノードにおけるhttpモジュールの使用と実行プロセス

ノードにおけるhttpの役割は何ですか? httpモジュールの役割は、サーバーの作成と記述を支援する...

Docker で Rancher をデプロイする方法 (落とし穴なし)

操作前に必ずお読みください:注意:管理に rancher を使用する場合は、k8s クラスターが構築...

CSS3はマスク連打機能を実現する

最近Bステーションでスマートアンチブロッキング弾幕と呼ばれる弾幕エフェクトを見ました。これは伝説のマ...

CSS シャドウアニメーションの最適化のヒント

このテクニックは、この記事から来ています - シルキーでスムーズなパフォーマンスでボックスシャドウを...

ReactプロジェクトでのTypeScriptの実装

目次1. はじめに2. 使用方法ステートレスコンポーネントステートフルコンポーネント制御コンポーネン...

MySQLがbinlogファイルを手動で登録し、マスタースレーブ異常を引き起こす理由

1. 問題の原因友人の @水米田 から、POSITION に基づくマスタースレーブについて質問があり...

CSSで制御可能な点線を実装する方法

序文CSS を使用して点線を生成するのは、フロントエンド開発者にとっては簡単です。一般的に、これを実...

Nginx プロキシを使用してフロントエンドのクロスドメイン問題を解決する方法

序文Nginx (「エンジン エックス」と発音) は、リバース プロキシ、ロード バランサ、HTTP...

MySQLシリーズのMariaDBサーバーのインストール

目次チュートリアルシリーズ1. yumパッケージマネージャーを使用してMariaDBサーバーをインス...

Vue2.x の応答性の簡単な説明と例

1. Vue レスポンシブの使用法を確認する​ Vue の応答性は、私たち全員がよく知っています。 ...

{{ }} で関数を直接使用する WeChat アプレットの例

序文WeChat アプレット開発 (ネイティブ wxml、wxcss) で、{{ }} 内で直接メソ...