助け合いフォーラム

Oracle DB

Oracle Master Silver SQL 2019(1Z0-071)
問題ID : 26754
問題を開く
オブジェクト作成時に、オブジェクト名として使用できるものはどれですか(該当するものを全て選択して下さい)。
ただし、オブジェクト名は二重引用符(") で囲まない場合とします。

正解

EMP_

Dept

解説

オブジェクト名は以下の命名規則に従う必要があります。

・オブジェクト名は30バイト以下(12c R2以降は128バイト以下)
・使用できる文字は、0~9,A~Z,a~z(日本語環境の場合は漢字,ひらがな,カタカナも使用可)
・使用できる記号は、_,$,#のみ
・オブジェクト名の先頭の文字は、数字,記号以外の文字
・Oracleの予約語は使用できない

この他、同一スキーマ内では重複するオブジェクト名は使用できません。また、アルファベットの大文字と小文字は区別されません。
大文字と小文字を区別したり、スペースを含めるなどネーミング規則に反する列別名を使用する場合は、オブジェクト名を 二重引用符(") で囲まなければなりません。

以上より、
・EMP_
・Dept
が正解となります。

その他の選択肢については次のとおりです。

・2012DEPT
・[employees]
オブジェクト名の先頭の文字に数字や記号は使用できません。また、"[]"はオブジェクト名に使用できません。


 
SQLを表示
CREATE TABLE 2012DEPT
(id NUMBER(2),
name VARCHAR2(10)
);


 
SQLを表示
CREATE TABLE [employees]
(id NUMBER(2),
name VARCHAR2(10)
);


・DATE
DATEはOracleの予約語ですので、使用できません。


 
SQLを表示
CREATE TABLE DATE
(id NUMBER(2),
name VARCHAR2(10)
);

参考

データベースに格納できる表やビューなどを総称してデータベース・オブジェクトと言います。データベース・オブジェクトは必ずいずれかのユーザーに所有されており、スキーマ・オブジェクトとも呼ばれます。
主なスキーマ・オブジェクトは以下のとおりです。



スキーマとは、オブジェクトの所有者を表す論理的な概念です。データベースのユーザーは必ず1つのスキーマを所有し(スキーマ名はユーザー名と同じ名前になります)、ユーザーが作成したオブジェクトは、そのユーザーが所有するスキーマに格納されます。

ユーザーは別のユーザーが所有しているオブジェクトを参照することもできますが、その場合は、

 スキーマ名.オブジェクト名

のように、オブジェクト名の前にスキーマ名をつけて、どのスキーマのオブジェクトを参照するのかを指定しなければなりません。


 
SQLを表示
connect userA/oracle

SELECT object_name, object_type FROM user_objects;



 
SQLを表示
connect pingt/oracle

SELECT * FROM dummytable;

SELECT * FROM userA.dummytable;


ただし、自分自身が有するオブジェクトを参照する場合には、スキーマ名を省略することができます。スキーマ名を省略した場合は、ログインしているユーザーのスキーマ内のオブジェクトを参照します。


 
SQLを表示
connect pingt/oracle

SELECT object_name, object_type FROM user_objects;

SELECT * FROM pingt.departments;

SELECT * FROM departments;


なお、オブジェクト名は以下の命名規則に従う必要があります。

・オブジェクト名は30バイト以下(12c R2以降は128バイト以下)
・使用できる文字は、0~9,A~Z,a~z(日本語環境の場合は漢字,ひらがな,カタカナも使用可)
・使用できる記号は、_,$,#のみ
・オブジェクト名の先頭の文字は、数字,記号以外の文字
・Oracleの予約語は使用できない

この他、アルファベットの大文字と小文字は区別されません。
また、同一スキーマ内では重複するオブジェクト名は使用できません(異なるスキーマでは同じオブジェクト名を使用することができます)。
大文字と小文字を区別したり、スペースを含めるなどネーミング規則に反する列別名を使用する場合は、オブジェクト名を 二重引用符(") で囲まなければなりません。


 
SQLを表示
SELECT * FROM departments;

CREATE VIEW departments
AS
SELECT * FROM employees;



 
SQLを表示
connect pingt/oracle

SELECT * FROM departments;

SELECT * FROM userA.departments;
上に戻る

オブジェクト名について

投稿日 2023/01/29

問題文言葉足らずだと思います。
これらのオブジェクト名はすべて「“」で囲めば使用できると思うのですが。。。

スタッフからの返信

s staff_meg

2023/01/30 13:54

mmmss125さん、 ご指摘の点を修正致しました。 ご報告、誠にありがとうございました。

この投稿に対して返信しませんか?