みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SqlServer2012 ビューとクエリ

SqlServerにおける、ビューとクエリについて、その違いというか、概念を教えてください。
私は、最初にAccessと「標準SQL」という本で、データベースを学びました。
本を読んでAccessに向かったときに、クエリってビューのことなのかな?と思って、ずっとやってきました。
ところが、SqlServerには、両方の言葉が出てきます。で、とりあえず、クエリをデザイナで作ってみて、クエリにクエリを内包するようなものを作る段になって、クエリが追加できなことに気づきました。Accessでクエリのタブがあるところに、ビューというタブがあるので、クエリの代わりに、ビューを作りました。まったく同じ手順で作れましたが、保存するときに、「OrderBy句は、ビュー定義のTOP句によって返される行を決定するためだけに使用されます。したがってクエリ自体でもOrderByが指定されていないと、ビューでクエリを実行したときに結果が並べ替えられ宇保証はありません。」
などと、表示されます。
ビューでクエリを実行するとは、どういう事なのでしょうか?クエリを実行するのと、ビューを実行(?)するのは、何か違うのでしょうか?

投稿日時 - 2012-12-28 16:36:41

QNo.7865423

困ってます

質問者が選んだベストアンサー

Accessのクエリーに相当するものはSQL Serverでは
ビュー、ストアドプロシージャ、テーブル値関数に
なります。
ビューに関して
Accessでいうところの
アクションクエリーは作成できません。
パラメータクエリーも作成できません。
Order By句にはTop句が必要で、
SELECT TOP (100) PERCENT とすると並べ替えは保証
されません。PERCENTを削除すれば並べ替えされますが
100の数字をあらがじめ予想される最大レコード数に
する必要があります。
SELECT TOP (5000) ・・・・・
ORDER BY ・・・・・
Where句、Group By句は使用できます。
ビューを元にして、別のビューを作成できます。

ストアドプロシージャに関して
いろいろできます。クロス集計もできます。
TOP句も必要ありません。ビュー、テーブル値関数を
元にして作成することもできます。
ストアドを元にして、別のストアドは作成できません。
Accessのフォームでレコードソースを
パラメータ付きストアドプロシージャにした場合
レコードの編集ができないことがあります。

ビューの利点は他の方が述べている以外に
他のデータベースのテーブルを参照するとき、一旦
ビューで受けておくと、自分のテーブルのように
扱うことができます。

投稿日時 - 2012-12-29 14:19:38

補足

回答ありがとうございます。
やはり、よくわからないので、図書館で本を何冊か借りてきました。
これから読んで、学習してみようと思います。

投稿日時 - 2012-12-29 19:24:06

お礼

結果的にクエリの代わりにビューを使うことにしました。
並べ替えが働かないのは、実際に使うSQLの中に、ビューを内包してOrderBy句を書くことにしました。
この度は教えていただいて、ありがとうございました。

投稿日時 - 2013-01-01 16:24:09

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

クエリ(Query)は「問い合わせ」の意味でSQLのQは元々はQueryの略でしたが今はSQLで一つの言葉になっています。ビュー(View)は「景色」や「見解」と言った意味ですが、RDBMSでは実際のテーブルをSQLのSELECTで問い合わせた状態を、仮想のテーブルと見立てる場合に使用します。ちなみに私の作っているツールは7種類のRDBMSに対応していますが、テーブル名一覧等のテーブル構造がRDBMS毎に異なるのでViewを造って見かけ上同じ構造のテーブルに見立てる事でツール側ではどのRDBMSでも同じ書き方でSQLが書けるので便利に使っています。

投稿日時 - 2012-12-29 14:34:40

補足

回答ありがとうございます。
やはり、よくわからないので、図書館で本を何冊か借りてきました。
これから読んで、学習してみようと思います。

投稿日時 - 2012-12-29 19:25:24

お礼

結果的にクエリの代わりにビューを使うことにしました。
並べ替えが働かないのは、実際に使うSQLの中に、ビューを内包してOrderBy句を書くことにしました。
この度は教えていただいて、ありがとうございました。

投稿日時 - 2013-01-01 16:24:23

ANo.1

SQL Server の View と Access の クエリは同じだと思います。
しかし、
SQL Server の クエリ と Access のクエリは同じでは無いと思います。

SQL Server の クエリとは
SQL文そのもの または それを保存したファイルを表しています。
クエリを実行するとは、SQL文を実行すると同じ意味です。

Table には実データが格納されていますが、
View の実体は SQL文です。

このSQL文をView として作成すれば、Table と同じように使えるようになります。

例えば t_aaa というテーブルが有った時、

検索する場合のSQL文としては
SELECT * FROM t_aaa

という感じで、テーブル名を使ってクエリを実行します。

t_aaa を元にした View v_bbb を作成したとします。

SQL文としては
SELECT * FROM v_bbb

これを実行することが
ビューでクエリを実行するという意味です。
(出力結果はビューの作りによって異なります)

View を作成する主な理由は以下です。
・よく使用する複雑なSQLを簡単に扱えるようにする。
・セキュリティのため、View にのみアクセス権を与える。

投稿日時 - 2012-12-28 21:06:10

補足

回答ありがとうございます。
やはり、よくわからないので、図書館で本を何冊か借りてきました。
これから読んで、学習してみようと思います。
ちなみに、Accessからインポートしたクエリは、テーブル扱いになっています。いっそう混乱します。

投稿日時 - 2012-12-29 19:20:47

お礼

結果的にクエリの代わりにビューを使うことにしました。
並べ替えが働かないのは、実際に使うSQLの中に、ビューを内包してOrderBy句を書くことにしました。
この度は教えていただいて、ありがとうございました。

投稿日時 - 2013-01-01 16:23:40

あなたにオススメの質問