939 :
デフォルトの名無しさん:02/04/26 19:36
Oracleでなのですが、
あるユーザーでsqlplusでconnectした後、どのテーブルが存在するのか知りたい時は、
何のコマンドを打てばよいのでしょうか?
MySQLでは、show tables; でOKなのですが、Oracleでの方法が分かりません・・・。
それらの説明があるサイトとかってありません?
(Oracle社のサイト以外で・・・)
SQLのこれは勉強した方がいいって言うのを5つ教えて下さい.
>>942 なぜ5つ?その数字の根拠はなんじゃらほい
>>939 そういうシステムオブジェクトとかって
各社共通のビューを作ってくれたらとっつきやすいのに
って思うんだけどねぇ。
945 :
デフォルトの名無しさん:02/04/26 22:13
みなさんVantive については知らないんですか?
検索かけると
「検索中、、、」
とかでて
「あー今一生懸命検索してるんだなー」
とか生暖かい目で見守ってると、5分くらい砂時計のままで、
「もしや」
と思ってctrl + alt + del 押すと
Vantive (応答無し)
とかなってるんです。
どうしようもなく使えないデーターベースです。
なんでこんなにクソなんですか。
946 :
デフォルトの名無しさん:02/04/26 22:14
しかも強制終了すると、入力中のデーターも道連れにして落ちるんですよ!
どうしてくれるんですか!
>>946 Vantive って何か知らないけど、「応答無し」は、単にWindows
メッセージに対して応答していないだけでしょ?
処理自体は頑張ってやってんじゃないの?
で、強制終了で入力中のデータが道連れって当たり前のような・・・
というか、妙に残る方が怖くない?
949 :
デフォルトの名無しさん:02/04/26 23:57
>>947 顧客情報の管理です。客が300万人いるんです。
>>948 1回Vantive を再起動して、もう一度検索をかけるとうまくいくことが多いです。
このときは10秒くらいででます。だから5分も待つのはおかしいとおもいます。
なんらかの処理が進行しているような気配はありません。
入力も、3件までしかバッファできなくて、未入力が3件ある状態で4件目を開こうとすると
「メモリーが足りません」
とかでて入力できないのです。
そういうときは、わざわざどれか1件を急いで入力完了してから4件目を開きます。
面倒くさくてしかたがないです。
951 :
デフォルトの名無しさん:02/04/27 00:33
>>950 そうです、そういう情報がほしかったんです。
クライアントの名前がVantiveで、中身はオラクルやらSQLやらサイベースやら、条件によって変わるんですね?
じゃあ、そのクライアントがVB製なのかな?
>>944 どのDBもそれぞれ異なる設計思想で作られ、異なる実装が行われている。
ビューを統一したくてもできないし、したところで「本当に重要な」情報はみれない。
テーブル名の一覧だって、テーブルがどの空間概念上に存在するかによって
取得できなければいけない情報も異なるだろ?
953 :
デフォルトの名無しさん:02/04/27 16:19
>>939 正解をそのまま教えるのはなんだからヒントだけ。
概要かリファレンスでデータ・ディクショナリを探してみよう。
(´-`)..。oO(そろそろ次スレの季節)
>>913 できないから買ってるんじゃないの。
少なくとも、オレの周りに居る人で、
書籍多く持ってて無能なやつは居ないぞ。
次スレタイトル、どんなのが良い?
SELECT データベース総合スレ,2 FROM ム板;
とか? SQLスレミタイデダメカァ
ネタスレじゃないからシンプルなのでいいよ。
sqlはやめてくれ。
sql質問スレになっちまう。
今独学でVBとSQLの勉強をしているんだけど、ある程度レベルが上がったら就職しようと
思っていますが,実際の所企業に就職するかそれとも派遣会社に行くか迷っています。
よいアドバイスがあれば聞かせてください.
あっそれと独学だとどこまで勉強したらよいのかわからないので学校に行こうかとも
思っています.学校だと求人も来ているかも知れませんし.
ちなみに自分は26歳です.
正直、PGとしてなら派遣でないと難しいのではないでしょうか。
「すれ立てるまでもない・・」から移動してきました。
データベース設計で2テーブル間に多対多のリレーションを張りたいんですが
リレーションが設定されていないレコードを効率よく SELECT できるような
設計が思いつかずに困っています。今は次のようにしています。
CREATE TABLE TABLE_A (
TABLE_A_KEY INTEGER NOT NULL PRIMRY KEY,
:
);
CREATE TABLE TABLE_B (
TABLE_B_KEY INTEGER NOT NULL PRIMARY KEY,
:
);
CREATE TABLE RELATION_AB (
TABLE_A_REF INTEGER NOT NULL FOREIGN KEY REFERENCES ON TABLE_A (TABLE_A_KEY);
TABLE_B_REF INTEGER NOT NULL FOREIGN KEY REFERENCES ON TABLE_B (TABLE_B_KEY);
);
この状態で、
SELECT * FROM TABLE_A WHERE TABLE_A_KEY NOT IN (SELECT TABLE_A_REF FROM RELATION_AB);
というクエリーを投げると当然ながら悶絶するほど処理が遅いのです。
こういう場合に有効なデザインにはどのようなものがあるのでしょうか?
>>962 なぜWeb制作板に・・・・と思ったら板分割前のスレか。
>>963 SELECT *
FROM TABLE_A A
WHERE NOT EXISTS (
SELECT TABLE_A_REF
FROM RELATION_AB REL
WHERE A.TABLE_A_KEY = REL.TABLE_A_REF );
相関副問い合わせ使うほうが早い気がする。
これで等価だよな?SQLのこと言ってんじゃないのかな?
自信ないのでsage
>>963 全部SQLでやんなきゃダメでしょか?
フルスキャンで両テーブルをぶっこぬいた上で、ホストしているほうのプログラムで対処するも一法かと…
WOなら、JDBC経由でテーブルぶっこぬいてきて、
使いたいテーブルをUIにドラッグ&ドロップ。
必要なメソッド・オブジェクトも「使うだけ」。
あ、スレ違いだな。
皆さんレスありがとうございます。
>>965 確かにこちらの方が格段に速く処理できますね。
ただ、データ件数が数百万件ほどあるので、
いずれにしても実用的なレスポンスでないという点は変わりません。
>>966 全データの抽出ではきついものがありますが、
事前に絞込みがうまく行えればそれも手かもしれませんね。
検討してみます。
>>963 DBは何使ってる?
ORACLEならMINUSという便利な関数があるんだが・・・・
SELECT * FROM TABLE_A
MINUS
SELECT * FROM TABLE_B;
で、望みの事は出来る。
#TABLE_AとTABLE_Bは全く同じ型のフィールドを同じ数だけ持つ場合
#TABLE_Aのみに存在する行を取得する
でも、型にINTEGER使ってるからORACLEじゃないな。
EXCEPTかDIFFERENCEは使えないか?
>>969 今使っているのは InterBase6 です。
EXCEPT も DIFFERENCE も MINUS もないようです。
最悪、リレーションの最大数を見積もって、
外部キーフィールドを多めに定義しておいて、
TABLE_A と TABLE_B の間を直接つなぐことになると思います。
>>963 代案1
整合性保証のための迷子探しならファイルアウトしてマッチング。
その間他の処理は停止というのがよさげ。
代案2
A, B 登録時に、同じ LUW で releation entry つくっちゃって、
相方は not-linked を示すダミーコードを割り当てといて、
未割り当ては、そいつで探すってのでどう?
ないものを探すより速いはず
データが多いのでなんだけど、どうせリンク張るんだろうから
データ量は問題にはならんと推定。
インデックスの書換えが不細工だけど。多件更新したらインデックスの
再編成でもするってことで。
対話式なら探すほうの速度優先ってかんじでどうっすか?
データベースを実務で使うにはストアドプロシージャやデータの正規化するための
知識がないとやばいですか?いやなんとなく苦手な方なので・・・。
>>972 そうだねぇ。あったほうが良いねぇ。
関わるDBMSがリレーショナルデータベースなら体に染み込ませる順番は
リレーショナルモデルの概念、正規化、ストアドプロシージャだろうな。
ま、ストアドプロシージャを使えないDBもあるから急ぐ必要はないよ。
エドガー・コッドの理論に関する良書があったら読むべきだね。
小学校の算数で習う集合から類推できれば難しいものじゃないよ。
勉強と一緒に実践を繰り返していけば、そのうち理解が深まるよ。
そういうわけでよ、ま、頑張ってくれや。
>>927 苦手って、仕事でお金もらうなら、そんなこと言えないだろ(w
趣味なら必要なし、好きにすれば。
ユーザとして「使う」なら知らなくてもOK。
だが、開発者、とくに設計・デザインをするなら必須。
その辺を知らない(ISAMオンリーな)奴が設計したDBの
酷さといったら...ブルブル
>>971 目的が、リレーション未設定のデータを対象に新たにリレーションを張る、
という処理で日常的に発生するものなので、他の動作を停止というのは難しいです。
代案2は現実的なところだと思います。
今は、基本設計を変更して多対多のリレーションを分解できないかどうか検討中です。
それでどうしても上手くいかないようなら代案2を中心に実装を進めようと思います。
ありがとうございました。
>>962 最後のやつは最近書き込みがないみたいだから
関連スレに入れなかったよ。気を悪くしないでyo。
>>977 BAD ADDRESSでみれないんだが…
ごめん。独り言
981 :
デフォルトの名無しさん:02/05/01 12:43
どなたか、セーブポイントって言葉を説明してもらえませんか?
SQLServer と理論とじゃ、定義違ってますよね、これ。
うまく説明できないのだけど。
理論じゃ、チェックポイント=セーブポイントなんでしょうか。
SQLServer のチェックポイントが Informix で言うところと
同じ意味で在れば、SAVEPOINT とはまた違うと思うよ。
なんの DB なのかは知らないけど Oracle にもチェックポイント
あるでそ?
986 :
デフォルトの名無しさん:02/05/02 01:35
>>984 ごめん、つっこまれるかと思ったけど、敢えて省いたんだ。
じつは情報処理の試験をこの間受けまして・・・
いわゆる参考書と言葉の定義が違ったようだったので。
987 :
デフォルトの名無しさん:02/05/02 01:44
>>985 SQLServerのセーブポイントは、トランザクションの入れ子のようなもので、
トランザクション内で部分的ロールバックをやるようなものだったと思います。
参考書で言うセーブポイントはチェックポイントと同義で、
DBの変更をバッファからドライブへ書き出した直後で、強制終了等した後に、
ウォームスタートでとりあえず最初に参照するポイントです。
988 :
デフォルトの名無しさん:
SQL*Serverのストアドプロシジャをネストして使用する方法について教えてください
ACCESS2000のパラメータ付きクエリを、
SQL*Server2000へ移行したいと考えています。
このクエリはネストしていて、クエリ1の結果(結果は複数レコード)を
使用してクエリ2の処理を行います。
基本的にはストアドプロシジャに移植すればよいと思いますが、
ストアドプロシージャの書き方がわかりません。
もしクエリ1の結果が1件であれば、クエリ2の中からEXECUTE命令を
使ってクエリ1を呼び出せば処理することが出来ると思いますが、
クエリ1の結果が複数の場合はどうしたらよいでしょうか?
クエリ1の結果を一時テーブルに格納するという手も考えたのですが、
多ユーザからの同時アクセスを考えると、あまりよい方法とも思えません。
もっとスマートな方法をご存知の方がいらっしゃいましたら教えてください。
よろしくお願いいたします。