[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

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

バインド変数

pointこの用語のポイント

point変数だよ

pointSQL文に埋め込むよ

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

スポンサーリンク

簡単に書くよ

バインド変数とは

SQL文に埋め込む変数。
もう少し具体的に書くと

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

image piyo

詳しく書くよ

一言で言えば「SQL文に埋め込む変数」が「バインド変数」です。

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

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

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

バインド変数

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

バインド変数2

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

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

バインド変数3

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

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

バインド変数4

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

バインド変数5

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

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

バインド変数6

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

バインド変数7

以上が予備知識です。
ここまでを踏まえて、読み進めてください。

データベースさんと会話をする際には

人:「年齢が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文に埋め込まれた変数のことなんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク