プロが教えるわが家の防犯対策術!

COL COMMENTS FORMAT A44
SELECT * FROM DICTIONARY
WHERE LOWER(COMMENTS) LIKE 'constraint%';

とありますが、検索した結果、TABLE_NAME列とCOMMENTS列が取得されています。
COMMENTS列には'Constraint definition …'というデータが取得されていますが、LOWER関数を使っているのに先頭が大文字になっているのは、なぜでしょうか?
また、COL COMMENTS FORMAT A44と指定してから、SELECT を行っていますが、この'COL COMMENTS …'は、DICTIONARY のCOMMENTS列を44バイトに変更しているのでしょうか?
データディクショナリには、ALL~、USER~,DBA~があるとありますが、DICTIONARYもデータディクショナリでしょうか?
ユーザがアクセス可能な情報を格納したものであり、データベース管理者でなくてもアクセス可能な情報なのでしょうか?
接頭語が付いていませんがALLが付いたようなものでしょうか?

A 回答 (1件)

>COMMENTS列には'Constraint definition …'というデータが取得されていますが、LOWER関数を使っているのに先頭が大文字になっているのは、なぜでしょうか?



検索条件に関数を使用しても、SELECT句では指定してませんよね。
>WHERE LOWER(COMMENTS)
上記はあくまで検索時に実施されるだけです。
表示の際にも反映させたいなら、下記のように明示的に指定してください。
SELECT LOWER(COMMENTS)

>SELECT *
上記はLOWERを指定していませんよね。*で指定した場合は、単に以下と解釈されます。
>SELECT COMMENTS

>また、COL COMMENTS FORMAT A44と指定してから、SELECT を行っていますが、
>この'COL COMMENTS …'は、DICTIONARY のCOMMENTS列を44バイトに変更しているのでしょうか?

SQL*Plus上での書式を変更しているだけです。マニュアルを参照しましょう。

http://otndnld.oracle.co.jp/document/products/or …

>データディクショナリには、ALL~、USER~,DBA~があるとありますが、DICTIONARYもデータディクショナリでしょうか?
>ユーザがアクセス可能な情報を格納したものであり、データベース管理者でなくてもアクセス可能な情報なのでしょうか?
>接頭語が付いていませんがALLが付いたようなものでしょうか?

「DICTIONARY」は静的データ・ディクショナリ・ビューです。マニュアルにも載っています。

http://otndnld.oracle.co.jp/document/products/or …

>DICTIONARYは、データ・ディクショナリ表およびデータ・ディクショナリ・ビューについて示します。

上記の説明がマニュアルには記載さています。ユーザが参照できないディクショナリも表示されます。

実際はSYSの所有するViewなので以下SQLで定義を見てみると、特にユーザによる制限はしてません。

set long 10000
select * from dba_views where view_name ='DICTIONARY'
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2010/01/23 14:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!