Oracle管理者のためのSQLリファレンス
■制約の確認/作成/削除
表の各列には整合性制約と呼ばれるルールを指定できます。整合性制約は5つあります。
NOT NULL制約
列の値がNULLでないこと。列に必ず値を入力しなければなりません。
一意キー制約(UNIQUE制約)
列のすべての値が一意であること。指定した列で値が重複することは許されません。ただしNULLは複数存在することが許されます(NULLはどの値とも等しいと見なされない)。
主キー制約(PRIMARY KEY制約)
その列が行を一意に識別できること。表には、主キー制約を最大1つ指定できます。主キー制約では、値は重複してはならず、またNULLも許可されません。
参照整合性制約(REFERENCES制約)
関連付けられた表の共通する列の関係が保たれていること。参照整合性制約では、表の各行の外部キー値は、親表の値と一致していなければなりません。外部キー制約とも呼ばれます。
CHECK制約
列の値が指定した条件を満たすこと。列の値は、CHECK制約で指定した条件に対しTRUEまたはUNKNOWNでなければなりません。
(SQLの表記ルールは、こちらから参照できます)
制約の定義を確認する | |
SELECT
* FROM user_constraints; |
|
┗ | 制約の定義を確認するには、USER_CONSTRAINTSまたはALL_CONSTRAINTSまたはDBA_CONSTRAINTSを参照します。USER_CONSTRAINTSでは現行ユーザーが所有している制約定義が表示されます。ALL_CONSTRAINTSでは現行ユーザーがアクセス可能な制約定義が表示されます。DBA_CONSTRAINTSではデータベース内のすべての制約定義が表示されますが、このビューにアクセスするにはSELECT ANY TABLE権限が必要です。この権限は、デフォルトでDBAロールに割り当てられます。 |
関連項目:表の確認/作成/変更/削除 |
表の作成時に表内指定で制約を作成する | |
CREATE
[GLOBAL TEMPORARY] TABLE [schema .]table (
|
|
┗ | 表の作成時に表内指定で制約を作成するには、CREATE TABLE文で列を指定する際に、列名、データ型に続けてCONSTRAINT句で制約名(constraint_name)、制約の種類(NOT NULL、UNIQUE、PRIMARY KEY、REFERENCES、CHECK)を指定します。NOT NULL制約は表内指定でのみ作成できます。参照整合性制約(REFERENCES)では参照する表の列名を指定します。CHECK制約では「column > 0」のような条件式を指定します。 |
関連項目:リレーショナル表を作成する 表の作成時に表外指定で制約を作成する 制約を削除する |
表の作成時に表外指定で制約を作成する | |
CREATE
[GLOBAL TEMPORARY] TABLE [schema .]table |
|
┗ | 表の作成時に表外指定で制約を作成するには、CREATE TABLE文で列を指定した後に、CONSTRAINT句で制約名(constraint_name)、制約の種類(UNIQUE、PRIMARY KEY、REFERENCES、CHECK)を指定します。NOT NULL制約は表外指定では作成できません。参照整合性制約(REFERENCES)では参照する表の列名を指定します。CHECK制約では「column > 0」のような条件式を指定します。 |
関連項目:リレーショナル表を作成する 表の作成時に表内指定で制約を作成する 制約を削除する |
表に制約を追加する | |
ALTER
TABLE [schema.]table |
|
┗ | 表の作成後に制約を追加するには、ALTER TABLE 文のADD CONSTRAINT句を使用して制約を指定します。指定方法は「表の作成時に表内指定で制約を作成する」と同じです。ただし、この方法ではNOT NULL制約は追加できないので、「表にNOT NULL制約を追加する」の方法を使用します。 |
関連項目:表の作成時に表内指定で制約を作成する 表にNOT NULL制約を追加する 制約を削除する |
表にNOT NULL制約を追加する | |
ALTER
TABLE [schema.]table MODIFY (column NOT NULL); |
|
┗ | 表の作成後にNOT NULL制約を追加するには、ALTER TABLE 文のMODIFY句を使用して、列名(column)にNOT NULLを指定します。 |
関連項目:表に制約を追加する 制約を削除する |
制約を削除する | |
ALTER
TABLE [schema.]table |
|
┗ | 制約を削除するには、ALTER TABLE 文のDROP句を使用します。主キー制約(PRIMARY
KEY制約)は表に1つしかないので列名の指定は不要です。一意キー制約(UNIQUE制約)は削除する列名(column)を指定します。それ以外の制約は、CONSTRAINT句に続けて削除する制約名(constraint)を指定します。
CASCADE句 |
関連項目:表の作成時に表内指定で制約を作成する 表の作成時に表外指定で制約を作成する 表に制約を追加する |
Oracle管理者のためのSQLリファレンス |
Oracle関連記事リンク集 | |
Database Expert フォーラム 新着記事
- Oracleライセンス「SE2」検証 CPUスレッド数制限はどんな仕組みで制御されるのか (2017/7/26)
データベース管理システムの運用でトラブルが発生したらどうするか。DBサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は、Oracle SE2の「CPUスレッド数制限」がどんな仕組みで行われるのかを検証します - ドメイン参加後、SQL Serverが起動しなくなった (2017/7/24)
本連載では、「SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、「ドメイン参加後にSQL Serverが起動しなくなった場合の対処方法」を解説します - さらに高度なSQL実行計画の取得」のために理解しておくべきこと (2017/7/21)
日本オラクルのデータベーススペシャリストが「DBAがすぐ実践できる即効テクニック」を紹介する本連載。今回は「より高度なSQL実行計画を取得するために、理解しておいてほしいこと」を解説します - データベースセキュリティが「各種ガイドライン」に記載され始めている事実 (2017/7/20)
本連載では、「データベースセキュリティに必要な対策」を学び、DBMSでの「具体的な実装方法」や「Tips」などを紹介していきます。今回は、「各種ガイドラインが示すコンプライアンス要件に、データベースのセキュリティはどのように記載されているのか」を解説します
|
|