「分かりそう」で「分からない」でも「分かった」気になれる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文)のことなんだな~」と お考えください。

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

おまけ

■訳してみるよ

「main(メイン)」の意味は「主」とか「主要な」とか「中心的な」とかです。
「query(クエリ)」の意味は「質問」とか「疑問」とか「問い合わせ」とか「質問する」とか「問い合わせる」とかです。
何となく くっつけると

主問い合わせ

となります。





書籍画像
わわわ説明術コラム
宣伝だよ
エンジニア育成現場の「失敗」集めてみた。 42の失敗事例で学ぶマネジメントのうまい進めかた
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本
サイバーセキュリティお嬢様と学ぶ 情報セキュリティの基本