この記事では、CREATE TABLE
について説明します。 指図。より正確には、null列とdate列ではなく、主キーと外部キーを使用してOracleでテーブルを作成する方法に焦点を当て、既存のテーブルに基づいて新しいテーブルを作成する方法を詳しく見ていきます。 、 もっと。また、テーブルを操作するときにdbForge StudioforOracleを使用することのメリットとメリットについても確認します。
コンテンツ
- OracleCREATETABLEステートメントの構文
- CREATETABLEの例
- PRIMARYKEY制約のあるCREATETABLE
- 外部キーを使用してテーブルを作成する
- NOTNULL列のテーブルを作成
- 日付列を含むテーブルを作成する
- SQLの代替となるOracleCREATETABLE IF NOT EXISTS
- CREATE TABLEASSELECTを使用して別のテーブルから新しいテーブルを作成します
- PL/SQLのSELECTからテーブルを作成
- データを作成して一時テーブルに挿入する方法
- dbForgeforOracleを使用してウィンクでテーブルを作成する
- 結論
Oracleでテーブルを作成することは、データを配置する方法の1つであるため、CREATE TABLE
について可能な限り学ぶことが重要です。 指図。 Oracleでテーブルを作成するには、いくつかの異なる方法があります。これらについては、このガイドで詳しく説明します。
新しいテーブルを作成するには、CREATETABLEシステム権限が必要であることに注意してください。別のユーザーのスキーマにテーブルを作成する場合は、CREATEANYTABLEシステム権限が必要です。テーブルの所有者である場合は、UNLIMITED TABLESPACEシステム権限、またはテーブルに含まれるテーブルスペースのクォータが必要です。
さらに、テーブルによって参照されるすべてのタイプにアクセスする場合は、オブジェクトテーブルまたはオブジェクトタイプ列を含むリレーショナルテーブルを作成するには、EXECUTEオブジェクト特権またはEXECUTEANYTYPEシステム特権が必要です。
この記事の例はOracle19cバージョンに関連していますが、方法は使用中のすべてのOracleバージョン(Oracle 10g、11g、12cなどを含む)で同じです。
OracleCREATETABLEステートメントの構文
基本から始めましょう。 Oracleデータベースに新しいテーブルを作成するには、CREATE TABLE
ステートメントを使用できます。 CREATE TABLE
Oracleの構文は次のとおりです。
CREATE TABLE schema_name.table_name (
column_1 data_type column_constraint,
column_2 data_type column_constraint,
...
table_constraint
);
提供されている構文を詳しく見てみましょう:
-
schema_name.table_name
:新しいテーブルが属するテーブルとスキーマの名前。 -
column_1
およびcolumn_2 data_type column_constraints
:列名のプレースホルダー。 -
data_type
:NUMBER、VARCHARなど。 -
column_constraint
:NOT NULL、主キー、チェックなど。 -
table_constraint
:テーブルの制約(主キー、外部キー、チェック)。
OracleのCREATE TABLE
が見つかります この記事でさらに構文例を示します。
注 :
Oracleでテーブルを作成する方法を学ぶだけでなく、についての知識を深めることもできます。 OracleALTERTABLEステートメント 。
CREATETABLEの例
練習から学ぶことは常に良いことです。したがって、OracleのCREATE TABLE
を見てみましょう。 例:
次の例は、従業員という名前の3列のテーブルを作成する方法を示しています。 :
CREATE TABLE employees
( employee_id number(10) NOT NULL,
employee_name varchar2(50) NOT NULL,
city varchar2(50)
);
- 列1 名前はemployee_id 数値データ型(最大10桁の長さ)があります。 null値を含めることはできません。
- 列2 名前はcustomer_name また、varchar2データ型(最大50文字の長さ)を持ち、null値を含めることはできません。
- 列3 名前はcity そしてvarchar2データ型を持っています。前の2つとは異なり、この列にはnull値を含めることができます。
PRIMARYKEY制約のあるCREATETABLE
それでは、主キーを使用してOracleでテーブルを作成する方法を見てみましょう。テーブルの主キーを定義するには、以前に作成したテーブル Employeesを使用できます。 、Oracle SQL CREATE TABLE
を編集します ステートメントを作成し、 employee_idを定義します 主キーとして:
CREATE TABLE employees
( employee_id number(10) NOT NULL,
employee_name varchar2(50) NOT NULL,
city varchar2(50),
CONSTRAINT employees_pk PRIMARY KEY (employee_id)
);
PRIMARY KEY
句を使用すると、列を主キーとして指定できます。主キー構文を使用して、テーブル内の一意の各行を識別できます。他のデータベースとは対照的に、Oracleではテーブルに主キーを1つだけ含めることができ、テーブルが有効であると見なされるには、主キーの各フィールドにNULL以外の値が含まれている必要があります。上記の例では、 employee_idを定義します。 主キー列としての列 。
Oracle CREATE TABLE
の構文を見てみましょう。 ステートメントFOREIGN
鍵。列レベルまたはテーブルレベルの両方で定義できます:
CREATE TABLE table_name
(
col1 datatype [ NULL | NOT NULL ],
col2 datatype [ NULL | NOT NULL ],
...
col_n datatype [ NULL | NOT NULL ]
constraint <name> FOREIGN KEY (col1,col2) REFERENCES table(col1,col2)
) tablespace <tablepace name>
CREATE TABLE table_name
(
col1 datatype [ NULL | NOT NULL ] constraint <name> primary key
,
col2 datatype [ NULL | NOT NULL ],
...
col_n datatype [ NULL | NOT NULL ]
) tablespace <tablepace name>;
CREATE TABLE dept
( dept_id number(10) NOT NULL,
dept_name varchar2(50) NOT NULL,
CONSTRAINT dept_pk PRIMARY KEY (dept_id)
);
CREATE TABLE emp
( emp_no number(10) NOT NULL,
emp_name varchar2(50) NOT NULL,
dept_id number(10),
salary number(6),
CONSTRAINT emp_pk PRIMARY KEY (emp_no),
CONSTRAINT dept_fk
FOREIGN KEY (dept_id)
REFERENCES dept(dept_id) );
この構文では:
- 列1
emp_no
というラベルが付いています 、および数値としてフォーマットされます。つまり、null値を含めることはできません。 - 列2 タイトルは
emp_name
、varchar2(50)として構築され、null値を含めることはできません。 - 列3 名前は
dept_id
数値データ型があります。 - 列4
salary
と呼ばれます 数値列としてもフォーマットされます。 - テーブルレベルの主キー制約
emp_pk
キーで定義されています(emp_no
。 - テーブルレベルの外部キー制約
dept_fk
部門テーブルdept_id
を参照します 。
NOTNULL列のテーブルを作成
列を空にすることはできず、何らかの値を含める必要があることを指定する場合は、NOTNULLとして定義できます。 CREATE TABLE
の構文を見つけます 以下のOracleのNOTNULL列を使用したコマンド:
CREATE TABLE employees_bdays
(
emp_name VARCHAR(30),
bday DATE
emp_id VARCHAR(15) NOT NULL
);
ご覧のとおり、 emp_id データの各行に値を入力することを意味します。これはNULLではないためです。
Oracleで日付列を使用してテーブルを作成する必要がある場合は、次の構文が役立つ場合があります。
CREATE TABLE employees_bdays (
bday DATE
);
列に日付を効率的に挿入するには、 to_dateが必要です。 日付を含む文字列と、受け取った日付の解釈方法を指示する別の文字列を受け入れる関数。
to_date('01 December 2021','DD Month YYYY')
to_date('01/12/2021','DD/MM/YYYY')
SQLの代替となるOracleCREATETABLE IF NOT EXISTS
非常に役立つSQLCREATE TABLE IF NOT EXISTS
に慣れているユーザー コマンドは、Oracleにそのようなステートメントがないため、がっかりする可能性があります。ただし、Oracleでテーブルを作成する前にテーブルがすでに存在するかどうかを判断する必要がある場合は、この問題の代替ソリューションを以下に示します。
テーブルの作成中にエラー(ORA-00955:nameは既存のオブジェクトですでに使用されています)を受け取った場合、そのようなテーブルがすでに存在することを示すインジケーターとして機能します。
CREATE TABLE AS SELECTを使用して、別のテーブルから新しいテーブルを作成します
場合によっては、あるテーブルからデータをコピーして、別のテーブルに挿入する必要があります。 Oracleで別のテーブルのようなテーブルを作成するのは非常に簡単であり、さらに非常に便利です。同じ構造のテーブルを作成する場合は、時間と労力を節約できます。また、テストのプロセスを簡素化します。
Oracleの別のテーブルからテーブルを作成する方法を確認するには、以下のスクリプトを参照してください。
CREATE TABLE table_name AS (
SELECT select_query
);
これは、CREATE TABLE AS SELECT(CTAS)とも呼ばれます。
table_nameを入力することもできます 新しいテーブルに使用するか、SELECT
を使用します それをコピーするためのクエリ。また、SELECT * FROM
と入力することもできます old_table すべてのデータを新しいテーブルにコピーする必要がある場合。コピーする値を制限する必要がある場合は、WHERE
条項はあなたに役立ちます。
PL/SQLのSELECTからテーブルを作成
Oracleでは、SELECT
を入力して、別のテーブルから1つのテーブルを作成することもできます。 CREATE TABLE
の最後にあるステートメント 声明。この場合、古いテーブルのすべてのレコードが新しいテーブルにコピーされます。 Oracle CREATE TABLE
の構文 SELECT
から は次のとおりです:
CREATE TABLE new_table
AS (SELECT * FROM old_table);
ご覧のとおり、SELECT
からのPL/SQL表の作成 コマンドは非常に役立ちます。 SELECT
から一時テーブルを作成することもできることに注意してください 。
Oracleでは、一時テーブルを使用して、1つのセッションまたは1つのトランザクションに属するデータを格納します。
ORACLE一時テーブルは、すべての制限があるDDLオブジェクトです。
では、Oracleで一時テーブルを作成するにはどうすればよいでしょうか。 CREATE GLOBAL TEMPORARY TABLEステートメントを使用して、一時テーブルを作成できます。テーブル内のデータがトランザクション固有(デフォルト)であるかセッション固有であるかを定義するには、ONCOMMIT句を使用します。
トランザクション固有のデータの構文は次のとおりです。
CREATE GLOBAL TEMPORARY TABLE admin_work_area
(startdate DATE,
enddate DATE,
operation CHAR(20))
ON COMMIT DELETE ROWS;
dbForgeforOracleを使用してウィンクでテーブルを作成
時間は常に最も価値のあるリソースの1つです。したがって、時間を節約するという点で、適切なIDEを使用すると役立つ場合があります。最良のソリューションの1つは、dbForge StudioforOracleです。これは、Oracleデータベースの開発、管理、および管理に使用できるユニバーサルツールです。この効率的なGUIクライアントは、DBA、データベース開発者、ソフトウェアエンジニア、およびアナリストに最適です。 dbForge Studio for Oracleは、複数のOracleサーバー間のデータ同期を可能にし、データベース開発プロセスの自動化を促進します。
IDEを初めて開くと、データベース接続のプロパティが表示されます。 窓。手動で開くには、データベースを選択します 新しい接続をクリックします 。
その後、対応するフィールドに入力し、接続のテストを押します 。
すべてが正しく構成されている場合は、正常に接続されたメッセージが表示されます。 どういうわけか次のようになります:
Oracleサーバーに接続したら、新しいテーブルを作成するユーザーを選択します。 Oracleで新しいユーザーを作成する方法に関する最近のブログ投稿は、このステップで役立つ場合があります。
新しいテーブルを作成するための最初のステップは、必要なスキーマを右クリックすることです。 新しいオブジェクトをポイントします 最初のオプションをクリックします:テーブル 。
1.名前 テーブルエディタのテキストボックス 、テーブル名を入力します。以下の例では、 employeesというタイトルのテーブルを作成しています。 。
2.下のグリッドに、将来の列の名前を入力し、データ型を選択し、それらをNULLにしないかどうかを選択します。
3.列のプロパティ テーブルエディタの右側に表示されます 。
4.テーブルエディタで実行するすべてのアクションが表示されます 、ウィンドウの下部にあるSQLクエリに反映されます。
テーブルのプロパティを設定したら、[変更を適用]をクリックします 以上です!
テーブルの作成は、データの整理に役立つため、Oracleデータベースを操作する際の最も一般的なタスクの1つです。このガイドでは、10の異なる方法を使用してOracleでテーブルを作成する方法の詳細なウォークスルーを提供しました。 Oracle SQL CREATE TABLEステートメントを使用してクエリを手動で実行するか、適切なIDEを使用してプロセスを自動化できます。この場合、dbForge StudioforOracleが最適です。
便利なリンク
- Oracleでデータベースを作成する
- Oracleでテーブルの名前を変更します
- PL/SQLフォーマッタ