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ランキング
-
ACCESS クエリで重複データを最...
-
ACCESS クエリで、グループ化...
-
ACCESSでクエリを作成したら「...
-
月別の利用者実人員の集計方法
-
access・カウント結果がゼロで...
-
ACCESSにてフィールド間の最小...
-
「データベースまたはオブジェ...
-
access:連続データ入力
-
Access あるクエリを利用して...
-
ユニオンクエリについて
-
ASでつけた名前はWHERE条件にで...
-
ACCESSで2つのテーブル比較で...
-
クエリーからクエリーを呼ぶこ...
-
SqlServer2012 ビューとクエリ
-
Access VBAでパラメータクエリ...
-
アクセスのスナップショット
-
追加先の発見方法(SQL以外)
-
MSアクセスのクエリで結果が...
-
クエリで「データ型が一致しま...
-
ACCESSで2つのテーブルの合計値...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS クエリで重複データを最...
-
ACCESSでクエリを作成したら「...
-
access・カウント結果がゼロで...
-
ACCESS クエリで、グループ化...
-
「データベースまたはオブジェ...
-
ACCESS クエリー 抽出条件が...
-
クエリで「データ型が一致しま...
-
ACCESSにてフィールド間の最小...
-
追加先の発見方法(SQL以外)
-
access:連続データ入力
-
SQLで優先順位が高いレコードを...
-
ACCESS のクエリー実行に異常に...
-
Accessのクロス集計クエリから...
-
accessで選択クエリで得た全レ...
-
Access あるクエリを利用して...
-
ユニオンクエリについて
-
ACCESSでデータ削除すると「読...
-
Accessのフィルタ検索でデータ...
-
ACCESSで2つのテーブル比較で...
-
アクセスでフォームが更新でき...
おすすめ情報