
SqlServerにおける、ビューとクエリについて、その違いというか、概念を教えてください。
私は、最初にAccessと「標準SQL」という本で、データベースを学びました。
本を読んでAccessに向かったときに、クエリってビューのことなのかな?と思って、ずっとやってきました。
ところが、SqlServerには、両方の言葉が出てきます。で、とりあえず、クエリをデザイナで作ってみて、クエリにクエリを内包するようなものを作る段になって、クエリが追加できなことに気づきました。Accessでクエリのタブがあるところに、ビューというタブがあるので、クエリの代わりに、ビューを作りました。まったく同じ手順で作れましたが、保存するときに、「OrderBy句は、ビュー定義のTOP句によって返される行を決定するためだけに使用されます。したがってクエリ自体でもOrderByが指定されていないと、ビューでクエリを実行したときに結果が並べ替えられ宇保証はありません。」
などと、表示されます。
ビューでクエリを実行するとは、どういう事なのでしょうか?クエリを実行するのと、ビューを実行(?)するのは、何か違うのでしょうか?
No.2ベストアンサー
- 回答日時:
Accessのクエリーに相当するものはSQL Serverでは
ビュー、ストアドプロシージャ、テーブル値関数に
なります。
ビューに関して
Accessでいうところの
アクションクエリーは作成できません。
パラメータクエリーも作成できません。
Order By句にはTop句が必要で、
SELECT TOP (100) PERCENT とすると並べ替えは保証
されません。PERCENTを削除すれば並べ替えされますが
100の数字をあらがじめ予想される最大レコード数に
する必要があります。
SELECT TOP (5000) ・・・・・
ORDER BY ・・・・・
Where句、Group By句は使用できます。
ビューを元にして、別のビューを作成できます。
ストアドプロシージャに関して
いろいろできます。クロス集計もできます。
TOP句も必要ありません。ビュー、テーブル値関数を
元にして作成することもできます。
ストアドを元にして、別のストアドは作成できません。
Accessのフォームでレコードソースを
パラメータ付きストアドプロシージャにした場合
レコードの編集ができないことがあります。
ビューの利点は他の方が述べている以外に
他のデータベースのテーブルを参照するとき、一旦
ビューで受けておくと、自分のテーブルのように
扱うことができます。
この回答への補足
回答ありがとうございます。
やはり、よくわからないので、図書館で本を何冊か借りてきました。
これから読んで、学習してみようと思います。
結果的にクエリの代わりにビューを使うことにしました。
並べ替えが働かないのは、実際に使うSQLの中に、ビューを内包してOrderBy句を書くことにしました。
この度は教えていただいて、ありがとうございました。
No.3
- 回答日時:
クエリ(Query)は「問い合わせ」の意味でSQLのQは元々はQueryの略でしたが今はSQLで一つの言葉になっています。
ビュー(View)は「景色」や「見解」と言った意味ですが、RDBMSでは実際のテーブルをSQLのSELECTで問い合わせた状態を、仮想のテーブルと見立てる場合に使用します。ちなみに私の作っているツールは7種類のRDBMSに対応していますが、テーブル名一覧等のテーブル構造がRDBMS毎に異なるのでViewを造って見かけ上同じ構造のテーブルに見立てる事でツール側ではどのRDBMSでも同じ書き方でSQLが書けるので便利に使っています。この回答への補足
回答ありがとうございます。
やはり、よくわからないので、図書館で本を何冊か借りてきました。
これから読んで、学習してみようと思います。
結果的にクエリの代わりにビューを使うことにしました。
並べ替えが働かないのは、実際に使うSQLの中に、ビューを内包してOrderBy句を書くことにしました。
この度は教えていただいて、ありがとうございました。
No.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 にのみアクセス権を与える。
この回答への補足
回答ありがとうございます。
やはり、よくわからないので、図書館で本を何冊か借りてきました。
これから読んで、学習してみようと思います。
ちなみに、Accessからインポートしたクエリは、テーブル扱いになっています。いっそう混乱します。
結果的にクエリの代わりにビューを使うことにしました。
並べ替えが働かないのは、実際に使うSQLの中に、ビューを内包してOrderBy句を書くことにしました。
この度は教えていただいて、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS クエリで重複データを最...
-
「データベースまたはオブジェ...
-
ACCESSでクエリを作成したら「...
-
ユニオンクエリについて
-
ACCESS クエリで、グループ化...
-
Accessのクロス集計クエリから...
-
access・カウント結果がゼロで...
-
クエリで「データ型が一致しま...
-
マイクロソフトAccessでsqlのas...
-
[ACCESS]クエリで抽出したレコ...
-
Access あるクエリを利用して...
-
SqlServer2012 ビューとクエリ
-
Accessで複数のクエリを1つのCS...
-
AccessでのDISTINCTROW 、DISTI...
-
ACCESSでデータ削除すると「読...
-
ACCESSにてフィールド間の最小...
-
テーブルに主キーを作らないデ...
-
ACCESSで入力フォームをHTMLフ...
-
ファイルメーカーで住所内の市...
-
アクセスのフォームのビューが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS クエリで重複データを最...
-
「データベースまたはオブジェ...
-
ACCESSでクエリを作成したら「...
-
ACCESSにてフィールド間の最小...
-
access・カウント結果がゼロで...
-
ACCESS クエリで、グループ化...
-
SqlServer2012 ビューとクエリ
-
access:連続データ入力
-
追加先の発見方法(SQL以外)
-
AccessのクエリをSqlサーバーの...
-
AccessでのDISTINCTROW 、DISTI...
-
SQLで優先順位が高いレコードを...
-
ACCESSで2つのテーブル比較で...
-
accessで選択クエリで得た全レ...
-
クエリで「データ型が一致しま...
-
Access200のFilterとFindの違い
-
マイクロソフトAccessでsqlのas...
-
ACCESSでデータ削除すると「読...
-
ACCESSでデータの追加は?
-
ACCESS クエリー 抽出条件が...
おすすめ情報