SQLに関する本を読んでいます。その本にはアドホッククエリという用語がありますが、私にはわかりません。
アドホッククエリとは正確には何ですか?
アドホックは「この目的のために」ラテン語です。これを「オンザフライ」クエリまたは「ジャストソー」クエリと呼ぶことができます。これは、必要な場所に大まかに入力するだけの種類のSQLクエリです。
var newSqlQuery = "SELECT * FROM table WHERE id = " + myId;
...これは、の値に応じて、コードのその行が実行されるたびにまったく異なるクエリですmyId
。アドホッククエリの反対は、ストアドプロシージャなどの事前定義されたクエリです。このクエリでは、テーブルから選択するという一般的な目的全体(たとえば)に対して単一のクエリを作成し、IDを変数として渡します。
アドホッククエリは、クエリが発行される前に決定できないクエリです。必要に応じて情報を取得するために作成され、通常はデスクトップに常駐するクエリツールによって構築される動的に構築されたSQLで構成されます。
チェック: http: //www.learn.geekinterview.com/data-warehouse/dw-basics/what-is-an-ad-hoc-query.html
アドホッククエリは、DBサーバーで使用可能な任意または複数のマージされたテーブルから特定のレコードセットを提供するために作成されたクエリです。これらのクエリは通常、使い捨ての目的を果たし、将来再実行するためにストアドプロシージャに組み込む必要がない場合があります。
アドホックシナリオ:一意の変数セットを持つ特定のデータサブセットのリクエストを受け取ります。必要な結果を提供できる事前に作成されたクエリがない場合は、アドホッククエリを作成してレコードセットの結果を生成する必要があります。
使い捨てのアドホッククエリ以外にも、ストアドプロシージャがあります。つまり、DBインターフェイスツール内に保存されているクエリ。次に、これらのストアドプロシージャをモジュールまたはマクロ内で順番に実行して、オンデマンド、スケジュール、または別のイベントによってトリガーされる事前定義されたタスクを実行できます。
ストアドプロシージャのシナリオ:毎月、同じテーブルセットから同じ変数を使用してレポートを生成する必要があります(これらの変数は、特定の事前定義値、「今月末」などの計算値、またはユーザーの入力値の場合があります)。初めて、アドホッククエリとしてプロシージャを作成します。結果をテストして正確性を確認した後、このクエリを展開することを選択できます。次に、クエリまたは一連のクエリをモジュールまたはマクロに保存して、必要に応じて再実行します。
アドホッククエリは、クエリが発行される前に決定できないクエリです。必要に応じて情報を取得するために作成され、通常はデスクトップに常駐するクエリツールによって構築される動的に構築されたSQLで構成されます。アドホッククエリは、コンピューターやデータベースマネージャーには存在しませんが、データユーザーのニーズに応じて動的に作成されます。
SQLでは、アドホッククエリは緩く型付けされたコマンド/クエリであり、その値はいくつかの変数に依存します。コマンドを実行するたびに、変数の値に応じて結果が異なります。事前に決定することはできず、通常は動的計画法のSQLクエリに分類されます。アドホッククエリは短命であり、実行時に作成されます。
また、アドホッククエリはSQLインジェクション攻撃に対して脆弱であることを追加したいと思います。これを使用せず、代わりにパラメーター化されたSQLを使用する必要があります(JavaのPreparedStatementなど)。
アドホッククエリとは、まだ定義されておらず、定期的に必要とされないクエリであるため、通常のレポートやクエリのセットには含まれていません。
アドホックステートメントは、Where句があり、Where句が実際には次のようなリテラルを持つことができるT-SQLステートメントです。
Select * from member where member_no=285;
または変数:
declare @mno INT=285;
Select * from member where member_no=@mno
アドホッククエリ-
アドホッククエリは次のとおりです。
アドホッククエリは、コンピュータ定義の一種です。つまり、このクエリは、必要なときにのみ情報を取得するように特別に設計されています。事前定義済み。こちらをご覧くださいhttps://www.youtube.com/watch?v=0c8JEKmVXhU
SQL Serverでは、「アドホッククエリ」はアドホック分散クエリにも使用されます。これらは、OpenRowsetまたはOpenDatasourceを介した他のサーバーでのアドホッククエリです。アドホック分散クエリは、そのように構成した後にのみ許可されます。これはサーバー構成オプションです。