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

バインド変数

pointこの用語のポイント

point変数だよ

pointSQL文に埋め込むよ

point後から実際の値に置き換えることで、動的にSQL文を作れるよ

スポンサーリンク

簡単に書くよ

バインド変数(読:バインドヘンスウ 英:bind variables)とは

SQL文(データベースに対する命令文)に埋め込む変数(値を入れておく箱)
もう少し具体的に書くと

実際の値を後から設定できるように、SQL文の一部を変数にしておくことがあるのですけどね。そのときの変数のことだよ
です。


image piyo

詳しく書くよ

サクっと一言で説明すると

SQL文に埋め込む変数

が「バインド変数」です。

……と、いきなり言われても分からないですよね。
大丈夫です。
順番に説明していきます。

まずは予備知識からいきましょう。

データベース
SQL
SQL文
バインド
変数


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

データベースは「データを入れておく箱」です。
突っ込んで考えると混乱するかもしれません。
何となくのフィーリングで理解してください。

バインド変数

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

バインド変数2

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

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

バインド変数3

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

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

バインド変数4

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

バインド変数5

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

バインド変数6

バインドは「あっち と こっち を紐付ける、関連付ける、割り当てること」です。

バインド変数7

変数は「値を入れておく箱」です。

バインド変数8

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

データベースDBさんと会話をするときは

人:「年齢が10歳の人は何人いる?」
DB:「3人です」

人:「年齢が20歳の人は何人いる?」
DB:「5人です」

人:「年齢が30歳の人は何人いる?」
DB:「10人です」

人:「年齢が40歳の人は何人いる?」
DB:「2人です」

人:「年齢が50歳の人は何人いる?」
DB:「1人です」

人:「年齢が60歳の人は何人いる?」
DB:「12人です」


のように、似通った内容の問い合わせが続くときがあります。
お問い合わせ内容は、年齢の数字部分以外は同じですよね?

同じ部分を何回も言うのは、かったるいです。
短縮しましょう。

具体的には、以下のような会話にします。

人:「これから『年齢がX歳の人は何人いる?』って聞いていくから。『X』の部分は都度指示するから読み替えてね」
DB:「分かりました」

人:「X=10」(年齢が10歳の人は何人いる?)
DB:「3人です」

人:「X=20」(年齢が20歳の人は何人いる?)
DB:「5人です」

人:「X=30」(年齢が30歳の人は何人いる?)
DB:「10人です」

人:「X=40」(年齢が40歳の人は何人いる?)
DB:「2人です」

人:「X=50」(年齢が50歳の人は何人いる?)
DB:「1人です」

人:「X=60」(年齢が60歳の人は何人いる?)
DB:「12人です」


いかがでしょう?
人間様の話す量が、だいぶ減りましたよね。

この話における「年齢がX歳の人は何人いる?」がベースになるSQL文です。
「X」の部分がバインド変数に相当します。

SQL文の中に変数を埋め込むことでベースのSQL文を使い回し、楽をしようとするテクニックがあります。
このテクニックで使われる変数がバインド変数です。

バインド変数を使うメリットは、会話の量が減ることによる効率化です。

データベースさんの気持ちになって考えてみてください。
毎度毎度「年齢が○歳の人は何人いる?」と聞かれたのでは、一言一句、注意して聞かなくてはなりません。
お問い合わせ内容が、もしかしたら「年齢が○歳の『女の』人は何人いる?」かもしれませんし「年齢が○歳の人は何人いるか知らんけど、今日、暇?」かもしれませんからね。
最後まで油断はできないのです。

それに対し、あらかじめ「『年齢がX歳の人は何人いる?』って聞いていくよ」と言われていたら、どうでしょう。
あとは「X歳」の「X」がいくつかさえ分かれば、お問い合わせに答えられますよね。
心の準備ができます。
会話の量が減っても、むしろ減るからこそ、テンポよく答えていけるはずです。

これがバインド変数を使うメリットです。
同じような内容のお問い合わせが続くときにデータベースさんが楽できます。

一方のバインド変数を使うデメリットですが、ここでは触れません。
突っ込んで説明すると頭が痛くなっちゃうからです。
とりあえず「条件次第では逆に遅くなる」とだけ覚えておいてください。
何でもかんでもバインド変数を使えば良くなるわけではないのです。


image piyo2

一言でまとめるよ

まぁ「バインド変数」って単語が出てきたら「SQL文(データベースに対する命令文)に埋め込まれた変数(値を入れておく箱)なんだな~」と お考えください。

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

おまけ

■訳してみるよ

「bind(バインド)」の意味は「縛る」とか「くくる」とか「結びつける」とか「巻き付ける」とか「束ねる」とか「束縛する」とか「拘束する」とかです。
「変数」は日本語ですね。
何となく くっつけると

束ねる変数

となります。


■検索してみる?




書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本
実践サイバーセキュリティ入門講座 現場に残された痕跡からハッカーの攻撃を暴け
クイズで学ぶUIデザイン ユーザビリティの基本が身につく50問