
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で質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に 1 2022/09/19 07:34
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Access(アクセス) Accessのスプレッドシートエクスポートで、シートが追加されてしまう 2 2022/07/16 21:45
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) お世話になります ACCESSを使用しています 下記のクエリデータ(1)があります 商品名 行数 A 1 2022/09/05 08:52
- Access(アクセス) Accessのリンクテーブルのパスを相対パスにする方法について教えて頂きたいです 1 2023/02/08 13:29
- Excel(エクセル) Excel Powerクエリーの質問。あるクエリに一致する行だけ除外できますか? 1 2022/08/22 13:48
- PHP 【PHP/MySQL】コード上で生成したクエリを基に集計クエリを作りたい 1 2022/07/28 15:06
- Access(アクセス) Access クエリ 同一テーブル内 複数フィールドの同時集計のやり方について 1 2022/05/18 19:01
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS クエリで重複データを最...
-
ACCESS クエリで、グループ化...
-
「データベースまたはオブジェ...
-
access・カウント結果がゼロで...
-
ACCESS クエリー 抽出条件が...
-
ACCESS のクエリー実行に異常に...
-
ACCESSでクエリを作成したら「...
-
ACCESSにてフィールド間の最小...
-
AccessでのDISTINCTROW 、DISTI...
-
クエリで「データ型が一致しま...
-
ユニオンクエリについて
-
Access あるクエリを利用して...
-
SqlServer2012 ビューとクエリ
-
追加先の発見方法(SQL以外)
-
Access VBAでパラメータクエリ...
-
ACCESSクエリの任意のレコード...
-
SQLで優先順位が高いレコードを...
-
Access200のFilterとFindの違い
-
ACCESSでデータの追加は?
-
Accessのフィルタ検索でデータ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS クエリで重複データを最...
-
「データベースまたはオブジェ...
-
ACCESSでクエリを作成したら「...
-
ACCESS クエリで、グループ化...
-
ACCESSにてフィールド間の最小...
-
access・カウント結果がゼロで...
-
追加先の発見方法(SQL以外)
-
ACCESS のクエリー実行に異常に...
-
クエリで「データ型が一致しま...
-
アクセスでフォームが更新でき...
-
Access あるクエリを利用して...
-
SqlServer2012 ビューとクエリ
-
access:連続データ入力
-
アクセスのスナップショット
-
Accessのクロス集計クエリから...
-
accessで選択クエリで得た全レ...
-
ACCESSで2つのテーブル比較で...
-
AccessでのDISTINCTROW 、DISTI...
-
選択クエリで偶数月しか表示し...
-
SQLで優先順位が高いレコードを...
おすすめ情報