ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Oracle, SQLServer, DB2... etcコミュのSQLServer初心者 (オラクルは経験あり)

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめまして。
このたび、SQLServer2005を使う事になったのですが、戸惑いが多いです。
何点かご意見頂ければ、幸いです。
?SQLServerでキーの無いテーブルのロウ(行・レコード)を更新するには、
 どうしたらいいのでしょうか?
 Oracleでは、ROWIDとか有るのですが、SQLServerには見つからない気がしますが・・・
 タイムスタンプという型もある様ですが、カラムを自分で設定していないと使えないですね。
 基本的に、キーが無いので、その前にSelectする訳ですから、for updateを使えばいいのでしょうけれど・・・
?直接データを検索する便利のツールとかありますか?
 Oracleの場合は、オブジェクトブラウザ等が多く使用されているのを見ますが、
 SQLServerの場合は、付属のManagementStudioを使うのが普通なのでしょうか?

よろしくお願いします。

コメント(14)

たしかにROWIDはありませんな。私もはまりました。
SQLサーバのクライアント接続ツールがマイクロソフトから提供されてるはずなので、ダウンロードしてみてはいかがでしょうか?
マネージメントなんちゃらから接続するより便利はいいですよ。
付属のマネージメントスタジオでもいいですが、
よく使ってるのは、CSEですね。
いろいろ有難うございます。

やっぱりROWIDは無いのですね。残念・・・
ManagementStudioでは、エクセルからデータを貼り付けたりも出来ないし、
逆に、抜き出しも一度CSVへ出さないと使えない・・・
マイクロソフト製の割りに、なんという連携の不便さ。
エクスプローラライクな画面のツールが多く、
多機能だが使いやすいとは思えないツールが多いですね。(自分的には)
簡単にデータが検索出来て、変更できるシンプルなのでいいんだが・・・

で、不便なら、自分で作っちゃえって訳で、作ってます。(^^;
後は、読み出した値の変更後の更新。
ORACLE版は、以前はROWIDを使っていたので、キー項目の値も変更出来ます。
ここをなんとか実現したいんですけどね。
うーん、えーと・・・
入力情報などの履歴として、トランザクションを作成時、
システム的には、追加しかしないデータの為、高速化の為、一切キーを設定しない。
(キーを作成すれば、それだけインデックスの作成時間が必要ですし)
それでもレコードのユニーク性を確立する為に、連番、INSERT時のシステム時間を入れる項目、タイムスタンプ列を追加するんでしょうね。

さて、ツール的に、キー項目を変更したい!
ORACLEではROWIDで行えたんですけどね・・・
Oraさん、ありがとう。
英語だけど、大丈夫かな・・・試してみます。
> ManagementStudioでは、エクセルからデータを貼り付けたりも出来ないし、

セル選択ではなく、行選択すればエクセルのデータは貼り付けられます。
列は一致させる必要がありますが。
行選択で出来るのですね、なるほど・・・
ありがとうございます。

toadsoftも試しました。
機能豊富。でも、重いですね・・・
はじめまして。

SQLServer2000で開発をすることとなったのですが、
300項目あるテーブルAから50項目、
50項目あるテーブルBから3項目を
テーブルCにinsertするっていう処理を
ストアドでやろうとしてます。

カーソルでテーブルAを取得して
1行ずつ読み込んでいき
テーブルBの項目を取得して
テーブルCにinsertする、ということを考えていたんですけど
当方の勉強不足で、Transact-SQLにはPL/SQLでいう%ROWTYPEがないことを
最近気が付きました。。。

このような処理のときって
多少、複雑でも1つのSQLで全部済ませたほうが
いいのでしょうか?
お知恵をお貸しください。
じっぺさん、こんにちは。

処理を行うにあたり次のどちらが良いかという質問だと理解しました。

1.1つのSQLで済ませる、ただし、この場合複雑性が増すと想定される
2.カーソルを使用して繰り返す

正しいでしょうか?
(%ROWTYPEについては質問の意図として影響していないと思っています)

私が考える回答は、「時と場合によるが、今回のケースでは処理を1つにした方が良い可能性が高い」です。

処理を作成する場合は、その処理において何を重視するかを考えると良いかと思います。

たとえば、パフォーマンスを求める場合は、カーソルを使用するよりも、ひとつの処理としてまとめる方が良いケースが多いと思います。
また、パフォーマンスが求められない処理で、運用保守性を重視する場合は、多少合理的ではなくてもコードのわかりやすさを重視した方がよいケースもあります。

今回のケースを拝見する限りでは、行っている処理がNested Loop結合の内部処理に相当するように思えます。さほど複雑な処理ではないようなので、1つのSQLとしてまとめた方が、パフォーマンス・運用保守性の両面で良いのではないかと思います。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Oracle, SQLServer, DB2... etc 更新情報

Oracle, SQLServer, DB2... etcのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング