「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

主問い合わせ【SQL】

pointこの用語のポイント

point入れ子になったSQL文における外側のSQL文だよ

point最終的な結果を得るSQL文だよ

スポンサーリンク

簡単に書くよ

主問い合わせ【SQL】(読:シュトイアワセ 英:main query)とは

「副問い合わせ」と呼ばれている「入れ子になったSQL文(データベースに対する命令文)(SQL文の結果を使ったSQL文)」の話で出てくる用語のひとつ
であり

入れ子の外側のSQL文(最終的な結果を得るSQL文)のこと
です。


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として

データベース
テーブル
SQL
SQL文クエリ
select文
副問い合わせ


について結構ガッツリ説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

データベースは「データを入れておく箱」です。

主問い合わせ

ただし「データベース」という用語は、実際には もう少し複雑な概念です。
データを入れておく箱そのものは「テーブル」と言います。

主問い合わせ2

とりあえず

データベースの話において、実際にデータを入れておく箱がテーブル

と覚えてください。

SQLは「データベースと やり取りするときに使う言葉」です。

主問い合わせ3

データベースにデータを入れるときは、データベースさんに「これを入れておいて」と命令します。
データベースからデータを取り出すときは、データベースさんに「こんなデータを取り出しておくれ」と命令します。
SQLは、そんな命令をするときに使う言葉です。

SQL文は「データベースに対する、SQLを使った命令文」です。
クエリ」とも呼ばれます。

主問い合わせ4

「SQL」と「SQL」は違います。
あまり神経質になる必要はありませんが、区別できるように しておいてください。

SQLは「言語」です。
SQL文は「命令(文)」です。

主問い合わせ5

例えば、そうですね。
ピヨ子さんがピヨ太君に日本語で「パン買ってこい!」と命令したとしましょう。

主問い合わせ6

ピヨ子さんが人間、ピヨ太君がデータベースだとすれば「日本語」が「SQL」です。
「パン買ってこい!な命令」が「SQL文」になります。

主問い合わせ7

select文はデータベースさんに対する「これ、探してこい」な命令文です。
データベースの中にあるデータを取り出すときに使います。

主問い合わせ8

select文の基本的な書式は以下の通りです。

SELECT
 【取り出す項目】
FROM
 【対象のテーブル】
WHERE
 【取り出す条件】
;


例えば

SELECT
 column1
FROM
 tbl1
WHERE
 ID = 1
;


というselect文が あったとしましょう。

これは

「tbl1」という名前のテーブルから「項目『ID』の値が1」な条件に合うデータを選んで、選び出されたデータの項目「column1」の値を取り出してよ

な命令です。

主問い合わせ9

副問い合わせは「入れ子になったSQL文」です。
もしくは「入れ子になったSQL文における中に書いてある方のSQL文」です。
サブクエリ」と表現されることも あります。

実はSQL文というのは入れ子にできるのです。
例えば

SELECT
 count(*)
FROM
 (
  SELECT
   column1
  FROM
   tbl1
  WHERE
   ID = 1

 )
;


のような書き方ができます。

このSQL文は

1.「tbl1」という名前のテーブルから「項目『ID』の値が1」な条件に合うデータを選んで、選び出されたデータの項目「column1」の値を取り出してよ
2.「1」で取り出したデータの件数を教えてよ


な命令です。
※【取り出す項目】に書いてある「count(*)」は「件数を教えてよ!」な指示です。

つまり

select文の結果に対してselect文をしている

わけです。

主問い合わせ10

この例で登場した

SELECT
 count(*)
FROM
 (
  SELECT
   column1
  FROM
   tbl1
  WHERE
   ID = 1

 )
;


のように、入れ子になっているSQL文が副問い合わせです。
言い方を変えると

SQL文の結果を使ったSQL文

です。

主問い合わせ11

あるいは

SELECT
 count(*)
FROM
 (
  SELECT
   column1
  FROM
   tbl1
  WHERE
   ID = 1

 )
;


における

  SELECT
   column1
  FROM
   tbl1
  WHERE
   ID = 1


のように、入れ子になっているSQL文において中に書いてある方のSQL文が副問い合わせです。

主問い合わせ12

どちらを指しているかは文脈から判断してください。

あと、今回は「select文の結果をselect文する」例を紹介しましたが、いろいろな書き方の副問い合わせがあります。
そこら辺の あれやこれやが気になる方は他のところで情報を補完してください。

以上を踏まえて、本題に入ります。

先ほど副問い合わせの説明をするときに

SELECT
 count(*)
FROM
 (
  SELECT
   column1
  FROM
   tbl1
  WHERE
   ID = 1

 )
;


という例を挙げました。

繰り返しになりますが、このSQL文は

1.「tbl1」という名前のテーブルから「項目『ID』の値が1」な条件に合うデータを選んで、選び出されたデータの項目「column1」の値を取り出してよ
2.「1」で取り出したデータの件数を教えてよ


な命令です。

主問い合わせ13

このSQL文において

2.「1」で取り出したデータの件数を教えてよ

を取得するSQL文が「主問い合わせ」です。
メインクエリ」と表現されることも あります。

実際のSQL文としては

SELECT
 count(*)
FROM
 (
  SELECT
   column1
  FROM
   tbl1
  WHERE
   ID = 1

 )
;


における

SELECT
 count(*)
FROM
 (
  SELECT
   column1
  FROM
   tbl1
  WHERE
   ID = 1
 )
;


の部分です。
つまり、SQL文全体です。

……という解釈と

SELECT
 count(*)
FROM


の部分という解釈があるようです。

主問い合わせ14

突き詰めて考えると分からなくなりそうですね。
表現としては

1.入れ子になったSQL文の外側の方
2.最終的な結果を得るSQL文


のどちらかで覚えておけば良いと思います。


image piyo2

一言でまとめるよ

まぁ「主問い合わせ」って単語が出てきたら「入れ子になったSQL文(データベースに対する命令文)(SQL文の結果を使ったSQL文)における、外側のSQL文(最終的な結果を得るSQL文)のことなんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像029
書籍画像077

おまけ

■検索してみる?




書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本【Audible】
「定年力」の鍛え方 老後の毎日を最高にする方法
サイバーセキュリティお嬢様と学ぶ 情報セキュリティの基本