
クエリという言葉を新しく覚えたのですが、意味についてはよく分かりませんでした。クエリって何でしょうか?
このような疑問に回答します。
・クエリとは?
・SQLって何?
クエリという用語は、IT業界に関わっていない方には、あまり馴染みがないかもしれません。データベースの関係でよく使われる用語となり、関連してSQLという用語もよく出てきます。今回は、クエリとあわせてSQLについても解説します。
クエリとは?
クエリについて説明しよう。


お願いします!
クエリとは、英語ではqueryで、「質問」や「疑問」という意味を持っており、データベース管理システム(DBMS)上でデータの検索や更新、削除などの処理を要求するための「命令文」のことや。SQLという言語を使って記述する。


クエリはDBMSからデータを検索したりするときにつかう命令文のこと・・・。データベース管理システムって何ですか?
データベース管理システム(DBMS)とは、データベースを管理するためのソフトウェアやな。


ふむふむ。ところで、SQLとは一体・・・?
SQLって何?
SQLの前に、クエリについてもう少し説明が必要やな。先ほども言ったように、データベースに対して、クエリとして命令をすることによって、データの検索や追加・削除などの操作ができる。


はい。
クエリには、データベースに対して問い合わせをするための言語をつかうんや。この問い合わせ言語には、SQLやXQueryなどがある。リレーショナルデータベースなどで使用されているのがSQLで、XMLデータベースなどで使用されているのがXQueryやな。


なるほど。リレーショナルデータベースとXMLデータベースって何ですか?
リレーショナルデータベース(RDB)は、関係データベースとも言われている。データを表形式で表示するデータベースやな。Excelみたいな感じや。リレーショナルには、テーブル同士を関係付けるという意味が含まれているんやで。


ふむふむ。
XMLデータベース(XML DB)は、XMLのデータをそのままの形で格納できるデータベースやな。RDBのように、形式に合わせる必要性がない。つまり、XML DBの方が柔軟性や拡張性が高い。


そうなのですね!それで、リレーショナルデータベースで用いられているSQLについて、教えてください!
SQLというのは、Structured Query Languageの略で、クエリとしては主にこの言語を利用する。SQLによって作る文章のことを、「SQL文」と言うんや。


SQLがクエリの一部ということでしょうか・・・?
まあ、そういうことや。念のため、明確にそれらの違いについて触れた方が良さそうやな。

SQLとクエリの違い
データベースに対して働きかけるという意味では同じだが、大きな違いは、言語と命令文という違いやな。

SQL:データベースを操作するための言語
クエリ:データベースに対して送る命令文
クエリという命令文に使われている言語がSQLといったイメージになるで。


なんとなくイメージができました!実は、SQLインジェクションという言葉も聞いたことがあるのですが、
やはり今回の話と関係していますか?
やはり今回の話と関係していますか?
SQLインジェクションとは?
SQLインジェクションは一種の攻撃手法や。


攻撃!?
そう。SQLインジェクションの「インジェクション」は、英語で「注入」という意味があるやろ。この攻撃は、不正なSQLをWebサイトにインジェクションするといった感じになる。たとえば、脆弱性があるWebサイトやアプリケーションに対して、不正なSQL文が注入されてしまうことによって、データベースが盗み取られたり、削除や改ざんをされてしまう危険性があるんや。主に、アプリケーションに対して行われるサイバー攻撃で、隙があると攻撃されてしまうぞ。


大切な情報が抜き取られそうで、恐ろしいですね・・・。
特に、機密情報や個人情報が漏えいしてしまったということ案もあるから、しっかりと対策をしなければならない。情報が漏えいしたら、企業の場合は、存続が左右されてしまうレベルなんや。損害賠償なんてこともある。会社の信頼性が損なわれてしまうで。また、重要なデータが削除されてしまい、バックアップを取っていなければ事業を継続できなくなってしまう。


なるほど。本当に恐ろしいですね。具体的に、どういった対策をすれば良いのでしょうか。
SQLインジェクションへの対策
SQLインジェクションへの対策としては、セキュリティレベルの高いアプリケーションを開発することや、そのアプリケーションの脆弱性診断も定期的に行ったほうが良い。また、サーバーやセキュリティソフトのアップデートも怠ってはならん。


普段からの確認も重要だということですね。
まとめ
クエリやSQLがどういうものか分かったかな?


はい!
・クエリは、データベース管理システムに対する命令文
・SQLは、データベースを操作するための言語
・SQLインジェクションは不正なSQL文でデータベースを操作する攻撃

ですね!
ふむ、よろしい。今回は、SQLインジェクションについても触れることができて良かった。同様のサイバー攻撃は、個人レベルに対しても起こることだから、よく注意するように!これからも、わからんかったら俺に聞くんやで!
