Oracle では、スキーマはデータベース オブジェクトの集合です。Oracle ユーザーはスキーマに対応し、スキーマはユーザーを作成することによってのみ作成できます。スキーマはユーザーの別名、つまり、スキーマ名はユーザーと同じであり、名前は対応しており、同じです。
このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。
最初にその定義を見てみましょう:
スキーマは (ユーザーが使用する) データベース オブジェクトのコレクションです。 .
スキーマ オブジェクトは、データベースのデータを直接参照する論理構造です。
ユーザーは、オブジェクトに接続してアクセスできる、データベースで定義された名前です。
スキーマとユーザーは、データベース管理者がデータベースのセキュリティを管理するのに役立ちます。
定義から、スキーマはオブジェクトのコレクションであることがわかります。各コレクションを区別するには、このコレクションに名前を付ける必要があります。 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 サイトの他の関連記事を参照してください。