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リファレンス |
TechTargetジャパン
Database Expert フォーラム 新着記事
- IBMが歴史を変える!? 新カテゴリの製品を発表 (2012/5/25)
IBMは新たな製品カテゴリとなる「PureSystems」を発表。DB2 10とビッグデータの関係、PureSytemsの斬新さはどこかに迫ります - クラウド時代のデータ処理を支える分散KVSの可能性 (2012/5/23)
現在、高速データ処理の主流はインメモリ型データ処理だが、別の方法として分散KVSが注目を集めている。今回は分散KVSについて話を聞いた - 複数の表からデータを取り出して表示させる(2) (2012/4/23)
前回はSQLの基本的な結合構文について説明しました。今回は、より複雑な自己結合や外部結合について説明します - SQL Server、OOWにIQ、盛りだくさんの4月 (2012/4/20)
オラクルオープンワールドが3年ぶりに東京で開催されたほか、SQL Server 2012が提供開始されるなど、今月は話題が盛りだくさんです
|
|
@IT 新着記事
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
お勧め求人情報
転職/派遣情報を探す
**先週の人気講座ランキング**
〜 Android編 〜
ホワイトペーパー(TechTargetジャパン)
ソリューションFLASH
