No.2ベストアンサー
- 回答日時:
何が違うかと問われれば、そもそも概念が全く違います。
ステーキとフォーク・ナイフはなぜ別々に取り扱うのですか?というくらい違います。まず、データベースを構築する基本になるのは、テーブル(表)です。これはよいですね。
複雑なデータになると、一つの表で取り扱うといろいろと不都合が生じます。というわけで、表を複数作ることになります。
さて、今度は、データを利用する段になると、その表をいろいろな形で表示したくなります。その中には、いつも使う決まった定型パターンもでてきます。そこで、そのような決まった定型パターンをいつもいつも長いSQLで書くのは面倒なので、ビューという形で定型パターンを定義します。これがビューの基本です。(他にも、セキュリティー上の理由や、権限設定のためとか、構文上SQL一つの文章で書き表すことができない表現のためにSQLを分割するために使用したり、他にもいろいろ用途はありますが、これは応用編です。)
次です。では、テーブルもできました。データも入れました。いろいろなビューも作りました。
これをデータを閲覧する人のために、アプリケーションで扱えるようにしなくてはいけません。簡易的な場合は、windowsであれば、EXCELなどで参照することもありますが、普通は、専用のアプリケーションを何らかの言語を利用して作成するでしょう。C++・JAVA・C#・VBなど、言語の種類は多々ありますが、これらのプログラム内で、SQL文をデータベースシステムに渡して、結果を返してもらうことになります。データベースシステムから返ってくる返事は、普通は「集合」です。ところが、一般的な言語は、この集合を一度に扱える構文がありません。
そこで、返ってきたデータを、一行づつ取り扱うことになります。1行ずつ取り扱うために、現在行をマークする何かが必要です。これが「カーソル」と呼ばれます。カーソルを最初の行にあわして、1行目を処理。その後カーソルを次の行動かして、2行目を処理。これを最後まで繰り返すす。というのが一般的な処理になります。
カーソルにも、読み込み専用や、前に進むだけで後戻りできない物、果ては、書き込みまでできる物と、いろいろな種類がありますが、これも応用編です。
ライブラリー関数やクラスなどで、一度にデータを読み取って表の形にしてすぱっと返してくれるように「見せかけている」ものもありますが、あくまで、裏で、カーソルを使って一行ずつ処理しているのが普通です。
かなりはしょった説明ですが、こんなところで理解できますか?(概念をくだいているので、厳密さにはかけますが、ご容赦ください。)
No.1
- 回答日時:
何が分からないのか、具体的に示してください。
1.ビュー
(1)特定の行や列だけを、利用者に見せることができる。
(2)複雑なSQLをビューで吸収し、ビュー経由のSQLを簡素化できる。
(3)ビュー経由で操作することで、利用者側で実表の表名や列名を意識させないことが可能。
例えば、月毎の表を持つとして、
・2月には、1月表を先月ビュー、2月表を今月ビュー、3月表を来月ビューとして操作。
・3月には、2月表を先月ビュー、3月表を今月ビュー、4月表を来月ビューとして操作
このような手法をとれば、月次で過去の月のデータの全件削除も容易になる。
(4)ビュー経由で操作させることで、更新禁止にすることも可能。
ビュー内でジョインやグループ化を行っている場合、そのビューを使用しての更新や削除は不可になる。
2.カーソル
行を1行ずつ取り出し、内容により更新や削除も行える。
カーソルで使用する表は、実表でもビュー表でも、混在でも構わない。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- iPad iPadでoutlookのビューの幅を広げたいのですが、やり方が分かりません。 iPadでoutlo 2 2022/12/29 10:56
- Web・クリエイティブ 【 3DCGソフト⠀MAYAについての質問 】 MAYAでビューからイメージプレーンを読み込むと、ビ 1 2023/07/09 02:50
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- SQL Server SQLについて 3 2023/02/24 12:25
- その他(IT・Webサービス) レコード200万、カラム60,こういう大規模なデータを最適な管理できるソフト等教えていただけますでし 2 2022/09/17 14:54
- SQL Server SQLについて WITH句とサブクエリの使い分けは何でしょうか? 処理速度に違いがありますか? 1 2022/11/21 11:10
- Google+ Googleアカウントにログインせずにパスワードを確認する方法を教えて下さい。 間違えてChrome 2 2023/07/07 20:52
- SQL Server 大学でSQLの授業があるのですが全くわかりません。 表ではなく文で説明されているのですが調べても理解 6 2022/07/20 02:26
- MySQL SQLについて教えて下さい。 SELECT分で、あるカラムにある日付の 半年先のデータを取って来たい 3 2022/12/07 22:28
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
処理の途中で停止させ、再開さ...
-
Accessでデータシートに同じデ...
-
sqlにおけるテーブル名と各カラ...
-
1つのSQL文で文字列を置換する...
-
Accessの処理速度を速めるため...
-
IF NOT EXISTを使用するINSERT文
-
SQL文の結合(一対多)がわから...
-
ACCESSとEXCELLの共用
-
Access VBAからエクセルに出力...
-
同一テーブルのデータを参照し...
-
MySQL、Accessを利用したDBの設計
-
テーブルで一番古いレコードだ...
-
ビューのソートについて
-
「クリップボードにコピーされ...
-
ACCESSで容量が50MBになった...
-
SQLです!!教えてください。
-
男性と2人で飲食店に行きテーブ...
-
QSL でのフォーム画面作成について
-
下の画像はSQLの4大命令の性質...
-
Excel テーブル内の空白行の削除
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
Accessのテーブルデータを一気...
-
テーブルで一番古いレコードだ...
-
ビューのソートについて
-
Oracleで上書きImportはできま...
-
accessでレコード更新直後の反...
-
このISAMでは、リンクテーブル・・
-
マテリアライズドビューとスナ...
-
アクセス レコードセットを更...
-
同一テーブルのデータを参照し...
-
htmlコードで書かれた表にphpで...
-
結合テーブルでINSERTする方法...
-
ACCESSで容量が50MBになった...
-
ERROR1062:Duplicate entry.......
-
Accessでの稼働日数計算の方法
-
削除したテーブルを元に戻すこ...
-
Accessのインポートについて(上...
-
重複クエリを使ったデータ削除
-
処理の途中で停止させ、再開さ...
-
住所のDBテーブル、マスターの...
おすすめ情報