ホームページ  >  記事  >  データベース  >  オラクルのスキーマとは何ですか

オラクルのスキーマとは何ですか

WBOY
WBOYオリジナル
2022-05-09 10:34:1810537ブラウズ

Oracle では、スキーマはデータベース オブジェクトの集合です。Oracle ユーザーはスキーマに対応し、スキーマはユーザーを作成することによってのみ作成できます。スキーマはユーザーの別名、つまり、スキーマ名はユーザーと同じであり、名前は対応しており、同じです。

オラクルのスキーマとは何ですか

このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。

Oracle のスキーマとは

最初にその定義を見てみましょう:

スキーマは (ユーザーが使用する) データベース オブジェクトのコレクションです。 .

スキーマ オブジェクトは、データベースのデータを直接参照する論理構造です。

ユーザーは、オブジェクトに接続してアクセスできる、データベースで定義された名前です。

スキーマとユーザーは、データベース管理者がデータベースのセキュリティを管理するのに役立ちます。

定義から、スキーマはオブジェクトのコレクションであることがわかります。各コレクションを区別するには、このコレクションに名前を付ける必要があります。 Enterprise Managerソリューションでは、ユーザー名に似た多くのノードが表示されます。ユーザー名に似たこれらのノードは、実際にはスキーマです。スキーマには、テーブル、ビュー、シーケンス、ストアド・プロシージャ、シノニム、インデックス、クラスター、データベース リンク。

ユーザーは通常、スキーマに対応します。ユーザーのスキーマ名はユーザー名と同じであり、ユーザーのデフォルトのスキーマとして機能します。これが、Enterprise Manager スキームではスキーマ名がすべてデータベース ユーザー名であることがわかる理由です。 Oracle データベースでは新しいスキーマを作成できません。スキーマを作成するには、ユーザーを作成することによってのみ解決できます (Oracle には create schema ステートメントがありますが、スキーマの作成には使用されません)。同時に、ユーザー名と同じ名前のスキームがこのユーザー用に作成され、ユーザーのデフォルトのスキーマとして使用されます。つまり、スキーマの数はユーザーの数と同じであり、スキーマ名はユーザー名と1対1に対応し同一であるため、スキーマをユーザーのエイリアスと呼ぶことができます。正確ではありませんが、理解しやすいです。

ユーザーにはデフォルトのスキーマがあり、そのスキーマ名はユーザー名と同じです。もちろん、ユーザーは他のスキーマを使用することもできます。テーブルがどのスキーマに属しているかを指定せずにテーブルにアクセスすると、システムは自動的にデフォルトのシーマン名をテーブルに追加します。たとえば、データベースにアクセスするときは、select * from emp を通じて scott ユーザーの下の emp テーブルにアクセスします。実際、この SQL ステートメントを記述する完全な方法は select * from scott.emp です。データベース内のオブジェクトの完全名は、user.object ではなく schema.object です。オブジェクトの作成時にオブジェクトのスキーマを指定しない場合と同様に、オブジェクトのスキーマはユーザーのデフォルトのスキーマになります。これは、デフォルトの表スペースを持つユーザーに似ていますが、ユーザーは他の表スペースを使用することもできます。オブジェクトの作成時に表スペースを指定しない場合、オブジェクトはデフォルトの表スペースに保管されます。他の表スペースに格納される場合は、オブジェクトの作成時にオブジェクトの表スペースを指定する必要があります。

ああ、ここまで言いましたが、例を挙げましょう。そうしないと、すべてが退屈になってしまいます。

SQL> Gruant dba to scott
SQL> create table test(name char(10));
Table created.
SQL> create table system.test(name char(10));
Table created.
SQL> insert into test values('scott'); 
1 row created.
SQL> insert into system.test values('system');
1 row created.
SQL> commit;
Commit complete.
SQL> conn system/manager
Connected.
SQL> select * from test;
NAME
----------
system
SQL> ALTER SESSION SET CURRENT_SCHEMA = scott; --改变用户缺省schema名
Session altered.
SQL> select * from test;
NAME
----------
scott
SQL> select owner ,table_name from dba_tables where table_name=upper('test');
OWNER TABLE_NAME
------------------------------ ------------------------------
SCOTT TEST
SYSTEM TEST

--上記のクエリは、ユーザーのエイリアスとしてスキーマを使用するための基礎です。実際、使用に関しては、shcema は user とまったく同じであり、違いはなく、スキーマ名が表示される場所にユーザー名を表示することもできます。

推奨チュートリアル: 「Oracle ビデオ チュートリアル

以上がオラクルのスキーマとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。