プライマリ・コンテンツに移動
Oracle® Database 2日でデータベース管理者
12c リリース1 (12.1)
B71307-08
目次へ移動
目次
索引へ移動
索引

前
次

8.4.1.2 表の列の属性について

データを保持するために表の列を定義します。列を作成するときに、次の属性を指定します。

8.4.1.2.1 データ型

データ型の属性は、列に格納されるデータの種類を定義します。 表を作成する場合、各列のデータ型を指定する必要があります。

データ型は各列に含むことができる値のドメインを定義します。たとえば、DATE列では値February 29(うるう年を除く)、値2またはSHOEは使用できません。その後、列に挿入した各値はその列をデータ型と想定します。たとえば、17-JAN-2004を日付列に挿入する場合、有効な日付に変換したことを確認した後にOracle Databaseは文字列を日付値として処理します。

表8-1に、一般的なOracle Database組込みデータ型の一部を示します。

表8-1 一般的なデータ型

データ型 説明

VARCHAR2(size [BYTE|CHAR])

sizeは、バイト数または文字数での可変長の文字列の最大長を示します。たとえば、様々な国の郵便番号を保持する列は、VARCHAR2(12)のように定義され、12バイトに制限されます。

VARCHAR2(10 CHAR)などのCHAR修飾子を使用して、必要なバイト数に関係なく、文字の最大長を示すことができます。これは特にダブルバイトおよびトリプルバイト長の文字を使用する言語に有効です。BYTEおよびCHAR修飾子は、デフォルト値がバイト単位のNLS_LENGTH_SEMANTICSパラメータの設定を上書きします。最大サイズは4000バイトまたは4000文字です。最小サイズは1バイトまたは1文字です。VARCHAR2には、sizeを指定する必要があります。

詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

NUMBER (p,s)

精度p、位取りsを持つ数。精度は値の最大桁数を設定し、スケールは、小数点以下の桁数を定義します。たとえば、貨幣の値を保持するフィールドは、NUMBER(12,2)と定義され、基本通貨単位(ドル、ポンド、マルクなど)は10桁で表し、補助通貨単位(セント、ペニー、ペニッヒなど)は2桁で表します。精度pには1から38の値を指定できます。位取りsには-84から127の値を指定できます。

DATE

日付と時刻の両方含むコンポジット値です。各「DATE」値として、データベースには、世紀、年、月、日、時間、分および秒が格納されています。タイプ「DATE」の表列に日付を入力するとき、NLS_DATE_FORMAT初期化パラメータを指定した書式を使用する必要があります。NLS_TERRITORY初期化パラメータで、NLS_DATE_FORMATパラメータのデフォルト値を決定します。たとえば、アメリカでは、NLS_DATE_FORMATパラメータのデフォルトはDD-MON-RRです。したがって、「11-JAN-2006」の形式の日付を入力する必要があります。この形式に時刻は含まれていないため、時刻は午前0時(深夜)にデフォルト設定されます。また、文字列を日付に変換するTO_DATE機能を使用して、時刻を含めるか、他の形式に日付を入力します。有効な日付範囲は紀元前4712年1月1日から紀元9999年12月31日です。

CLOB

シングルバイト・キャラクタまたはマルチバイト・キャラクタを含むキャラクタ・ラージ・オブジェクト(CLOB)。固定幅および可変幅のキャラクタ・セットがサポートされ、両方ともデータベース・キャラクタ・セットで使用されます。最大サイズは(4GB - 1)*(データベース・ブロック・サイズ)です。たとえば、32Kのブロック・サイズの場合、最大CLOBサイズは128TBです。

8.4.1.2.2 NOT NULL列制約

制約により列の有効な値が決定します。SQL Developerでは、「表の作成」ダイアログ・ボックス・ページの列レベルで定義できる制約は、行が挿入または更新されるたびに列に値があることを要求するNOT NULL制約のみです。表レベルの制約についてで説明されている、列定義の一部または表定義の一部として定義できるその他の制約とは異なり、NOT NULL制約は列定義の一部として定義する必要があります。

データベースの整合性のため列にデータを指定する必要がある場合は、NOT NULL制約を使用します。たとえば、すべての従業員が特定の部門に所属する必要がある場合、部門の識別子を含む列はNOT NULL制約を付けて定義される必要があります。ただし、行が追加または変更される際にデータが不明または存在しない可能性があるときは、NOT NULLとして列を定義しないでください。NOT NULL制約を使用しない列の例として、メール・アドレス内の2番目のオプション行があります。

データベースは列または表の主キーを含む列にNOT NULL制限を自動的に追加します。

8.4.1.2.3 デフォルト値

列に値が入力されないまま新しい行が挿入されると、この値が列に自動的に格納されます。デフォルト値はリテラルに、または式として指定できます。ただし、式を作成する方法には制限があります。詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

8.4.1.2.4 暗号化

列データの自動暗号化が可能です。詳細は、『Oracle Database 2日でセキュリティ・ガイド』の透過的データ暗号化の説明を参照してください。