表レベルの制約は必須です
次の5つの制約:
- NOT NULL
- UNIQUE
- PRIMARY KEY
- 外部キー
- チェック
注意事項
- あなたは制約名を指定しない場合は、Oracleサーバーは自動的にフォーマットSYS_Cnに従って制約名を割り当て
- 制約の作成と変更します。
- テーブルの同じ時間の建設で
- テーブルの構築後
- 制約は、テーブルレベルまたは列レベルで定義することができます
- 制約は、データ・ディクショナリ・ビューを介して見ることができます
テーブル・レベルおよび列レベルの制約の
範囲:
①カラムレベルの制約は、1つの列のみに影響を与えることができる
②テーブルレベルの制約(もちろん、テーブル・レベルの制約がカラムに作用することができる)複数列に作用し得る
方法定義:列制約を以下に定義列に従わなければならない、テーブル制約を持つ列はしませんが、個別に定義されました。
非空(nullでない)制約は、上の列に定義することができ
た制約の定義
CREATE TABLE [ スキーマを。] 表 (列データ型[ DEFAULT式expr ] [ column_constraint ] 、 ... [ table_constraint ] [ 、... ])。
CREATE TABLEの従業員を( EMPLOYEE_ID NUMBER(6 )、 FIRST_NAME VARCHAR2(20 )、 ... JOB_ID VARCHAR2(10)NOT NULL 、 CONSTRAINT emp_emp_id_pk PRIMARY KEY(EMPLOYEE_ID))。
制約の定義
- 列レベル
カラム [ CONSTRAINT CONSTRAINT_NAME ] CONSTRAINT_TYPE、
- 表レベル
コラム、... [ CONSTRAINT CONSTRAINT_NAME ] CONSTRAINT_TYPE (列、...)、
NOT NULL制約
- 列の値が空にすることはできませんようにするには:
- あなただけの、列レベルで定義することができます。
UNIQUE制約
- 複数のヌル値を許可する唯一の制約:NULL。
- あなたは、テーブルレベルまたは列レベルで定義することがあります。
PRIMARY KEY制約は、
テーブルレベルまたは列レベルで定義することができます。
CREATE TABLEの 部署を( DEPARTMENT_ID NUMBER(4 )、 DEPARTMENT_NAME VARCHAR2(30 ) CONSTRAINT dept_name_nn NOT NULL 、 MANAGER_ID NUMBER(6 )、 location_idの NUMBER(4 )、 CONSTRAINT dept_id_pk PRIMARY KEY(DEPARTMENT_ID))。
FOREIGN KEY制約は、
テーブルレベルまたは列レベルで定義することができます。
CREATE TABLEの従業員を( EMPLOYEE_ID NUMBER(6 )、 LAST_NAME VARCHAR2(25)NOT NULL 、 電子メール VARCHAR2(25 )、 給与 NUMBER(8、2 )、 COMMISSION_PCT NUMBER(2、2 )、 入社年月日DATE NOT NULL 、 ... DEPARTMENT_ID NUMBER(4 )、 CONSTRAINT EMP_DEPT_FK FOREIGN KEY (DEPARTMENT_ID) REFERENCESの部門(DEPARTMENT_ID)、 CONSTRAINT emp_email_uk UNIQUE(電子メール));
FOREIGN KEY制約のキーワード
- FOREIGN KEY:表の列は、テーブルレベルで指定されています
- REFERENCES:親表の列に示されています
- DELETE CASCADE ON(カスケード削除):親テーブルの列を削除すると、削除された列に対応する子テーブルでもあります
- DELETE SETのNULL(ブランクカスケード)ON:サブテーブル対応する列ブ
CHECK制約
- 各行は、の定義の条件を満たさなければなりません
制約を追加する
ALTER TABLE文:
- 追加または制約を削除しても、制約を変更することはできません
- 制約の有効化または無効化
- MODIFY文を使用するためにNOT NULL制約を追加します。
ALTER TABLEの テーブル ADD [ CONSTRAINT制約]タイプ(列)。
従業員から選択*としてemp表を作成するには、例えば、制約の追加と削除 アルターテーブルは、(EMPNAMEのVARCHAR2(50)NOT NULL)に変更し、EMP。
例
ALTER TABLEの従業員は、 ADD CONSTRAINT emp_manager_fk FOREIGN KEY (MANAGER_ID) REFERENCESの従業員(EMPLOYEE_ID)を、
制約を削除します
- EMPLOYEES表から制約を削除
ALTER TABLEの従業員DROP CONSTRAINTの emp_manager_fk。
無効化の制約
- ALTER TABLE文で無効な制約にDISABLE句を使用してください。
ALTER TABLEの従業員DISABLE CONSTRAINTの emp_emp_id_pk。
アクティベーションの制約
- ENABLE句は、現在、無効な制約を起動することができます
- あなたが定義またはアクティブUNIQUEまたはPRIMARY KEY制約は自動的にUNIQUEまたはPRIMARY KEYインデックスが作成されます
ALTER TABLEの 従業員 ENABLE CONSTRAINTの emp_emp_id_pkを。
クエリの制約
- クエリデータディクショナリビューUSER_CONSTRAINTS
SELECT CONSTRAINT_NAME、 CONSTRAINT_TYPE、 SEARCH_CONDITION から USER_CONSTRAINTS table_nameは= 「従業員」。
- クエリデータディクショナリビューUSER_CONS_COLUMNS
SELECT CONSTRAINT_NAME、 COLUMN_NAME から USER_CONS_COLUMNS table_nameは= 「従業員」。