「表の作成と管理」の編集履歴(バックアップ)一覧はこちら

表の作成と管理」(2006/01/29 (日) 03:54:22) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

-10.1 スキーマオブジェクト データベースの中で定義・作成され、利用されるものをオブジェクトと呼ぶ。 オブジェクトはスキーマオブジェクトと非スキーマオブジェクトの2種類に分けられる。 【スキーマオブジェクト】 特定のユーザーによって所有される。データの格納や検索のために直接的に使われる。 +表 +インデックス +ビュー +シノニム :オブジェクトに対する別名。   →名前を簡略化したり、オブジェクトの所有者を隠す。 +順序   :一意な値を生成する。 +データベースリンク:リモートデータベースにアクセスするために使われる。 【非スキーマオブジェクト】 特定のユーザーには所有されず、システム全体で共用される。 +記憶域 +ローカル +ユーザー など -10.2 オブジェクトのネーミング規則 +使用できる文字はアルファベット、数字、_、$、#  →日本語環境であれば漢字、カタカナ、ひらがなも使用可能 +名前は必ず文字で開始する(数字や_、$、#は不可) +名前の長さは30Bytesまで。 +スキーマの中で一意でなければならない  →スキーマが異なれば、同じ名前でも可。 +Oracleの予約語は使用不可 -10.3 CREATE TABLE必要要件 +CREATE TABLE権限(自分のスキーマに自分所有の表を作成可能) →CREATE ANY TABLE権限(他のスキーマに他ユーザー所有する表を作成可能) +記憶域(表を格納する) -10.4 CREATE TABLE文 構文 CREATE TABLE [スキーマ名].表名 (列名 データ型 [DEFAULT 式] [制約]) [TABLESPACE 表領域名] [領域管理パラメータ] <次の項目を指定可能> +スキーマ +列のデータ型 +制約 ★シノニムは指定できない →CREATE SYNONYM文で定義する -10.5 SQL文でのスキーマ名デフォルト値 SQL文でスキーマオブジェクトを指定する際にスキーマ名を省略すると、ログオンユーザー名がデフォルトで使われる。 -10.6 表名と列名の一致は可能か? 可能。表名と列名が同一でも問題なし。 -10.7 オブジェクト名の大文字・小文字区別 オブジェクトの名前は大文字と小文字が区別されない。 小文字を使う場合、ダブルクォーテーション(")で名前を囲う。 また、以下の場合にも(")で名前を囲う。 +空白を含む名前 +数字、#、_、$で始まる名前 +英数字、#、_、$以外の文字を含む名前 +予約語を名前として使用する場合 -10.8 Oracle予約語 DATE:予約語 DATA:予約語でない -10.13 VARCHAR2(n)について +nを超えるデータはエラーになる。 +nは省略不可。 +1~4000バイトまで格納できる。 -10.14 CHAR(n)について +nを超えるデータはエラーになる。 +nは省略可能。(デフォルトは1) +1~2000バイトまで格納できる。 -10.15 NUMBER(p,s)について +pは精度。10進数桁の総数を表す。1~38桁。 +sは位取り(小数点以下の桁数)。-84~127桁。 +pは省略可能。その場合、浮動小数点を格納する。 -10.15 DATEについて +世紀、年、月、日、時間、分、秒を持つ。 +固定長でDBに格納される。 +日付書式のデフォルトは「DD-MON-RR」 【RR書式のデータ解釈】 +RR =50~99で入力・・・1950~1999年(現在の年の上2桁-1の上2桁で戻される) +RR =0~49出入力・・・・2000~2049年(現在の年と同じ上2桁で戻される) -10.18 TIMESTAMPについて(1) TIMESTAMPデータ型はDATEデータ型を拡張したものである。 ◆世紀、年、月、日、時間、分、秒、1秒未満の単位をもつ。 →時間を厳密に扱いたい場合に使用 【TIMESTAMP型の定義】[ ]内は省略可能 +TIMESTAMP[(精度)] +TIMESTAMP[(精度)] WITH TIME ZONE +TIMESTAMP[(精度)] WITH LOCAL TIME ZONE -10.19 TIMESTAMPについて(2) ◆TIMESTAMP +ローカル時間(例えば日本標準時)のTIMESTAMP値 +タイムゾーンによる時差・・・協定世界時(UTC)との時差(日本は+9時間) ◆TIMESTAMP WITH TIME ZONE +主キーまたは一意キーの一部として指定できない。 +複数のタイムゾーンの時間の後先を厳格に評価する場合に使用する。 ◆TIMESTAMP WITH LOCAL TIME ZONE +主キーまたは一意キーの一部として指定できる。 +複数のタイムゾーンにわたって、クライアントのタイムゾーンで時間を指定する場合に適している。 +時差を列データとして含まない。 -10.20 INTERVAL(期間データ型)について 【INTERVAL YEAR TO MONTH型の定義】[ ]内は省略可能 INTERVAL YEAR[(精度)] TO MONTH ※精度のデフォルトは2 【YEAR TO MONTH期間リテラルの定義】[ ]内は省略可能 +INTERVAL '整数1-整数2' YEAR[(精度)] TO MONTH ・・・① +INTERVAL '整数1' YEAR[(精度)]・・・② +INTERVAL '整数1' MONTH[(精度)]・・・③ ①INTERVAL '整数1-整数2' YEAR[(精度)] TO MONTH ◆整数1は年期間 ◆整数2は月期間(値は0~11) (例)現在時刻から1年6カ月後の日付を取得 SELECT SYSDATE,SYSDATE + INTERVAL '1-6' YEAR TO MONTH TARGET_DATE FROM dual; SYSDATE :2005/04/08 02:48:39 TARGET_DATE:2006/10/08 02:48:39 ②INTERVAL '整数' YEAR[(精度)] ◆整数1は年期間 ③INTERVAL '整数1' MONTH[(精度)] ◆整数1は月期間 -10.22 LONG型について LONG型は可変長文字列型である。 +最大2GBまでデータを格納できる。 +1つの表で1つの列にしか適用できない。 +WHERE句、GROUP BY句、ORDER BY句の中では使えない。 +LONG型の代わりに、新しいCLOB型があり、LONG型の制約のいくつかが改善されている。 -10.24 制約の種類 +NOT NULL制約・・・列にNULLを設定できないようにする。 +一意制約・・・指定された列(または列の組み合わせ)の値は、NULL値を除いて一意でなければならない。 +主キー制約・・・NOT NULL制約と一意制約の複合 +外部キー制約・・・値を使った関連付けを矛盾なく維持する。参照整合性制約または参照制約とも呼ばれる。 +チェック制約・・・チェック条件を明示的に指定し、データをチェックする。 -10.25 制約のガイドライン +制約名を省略すると、OracleサーバーがSYS_Cn(nは一意な整数)の名前を生成する。 +制約名はオブジェクトのネーミング規則に従う。 +制約名は、1つのスキーマの中で一意である必要がある。 +CREATE TABLE文で表を作成するときに制約を定義できる。 +表の作成後はALTER TABLE文で制約を追加できる。 +制約を定義する構文には、列レベルと表レベルの2つの構文がある。 +データディクショナリービューで制約を確認できる。 (USER_CONSTRAINTS,USER_CONS_COLUMNS) -10.28 表レベル制約構文使用時の注意点 +他の列との組み合わせの制約(複合主キーなど)を指定できる。 +NOT NULL制約は指定できない。 +ALTER TABLEで制約だけを単独で追加する場合、表レベル構文を使う必要がある。 -10.31 一意制約について +NULL値を除いて一意となる。 +重複値を入力するとエラーになる。 +Oracleサーバーは暗黙的に一意索引を作成する。 +個数に制限はない。 【複合一意キーの定義】[ ]内は省略可能 ・・・, [CONSTRAINT 制約名] UNIQUE(列名1,列名2),・・・ -10.35 主キーについて +NULL値は禁止される。 +値は一意となる。 +1つの表には1つだけ主キーを定義できる。 +Oracleサーバーは暗黙的に一意索引を作成する。 【複合主キーの定義】[ ]内は省略可能 ・・・, [CONSTRAINT 制約名] PRIMARY KEY(列名1,列名2),・・・ ★主キーを作成しなくてもエラーにはならないが、主キーがないと行の一意性が保証されないため、実用上は必須である。 -10.39 外部キー制約 外部キー制約は、参照整合性制約または参照制約とも呼ばれる。値を使った関連付けを矛盾なく維持する制約。 +参照する列は外部キー、参照される列は親キーと呼ばれる。 +外部キーの値は(1)親キーの値のいずれかに一致 (2)NULL のどちらかでなければならない。 +外部キーが参照している親キーの値は削除できない。 →ON DELETE CASCADEオプションで削除可能。 外部キーを定義する前に、親キーには主キーまたは一意キー制約が定義されていなければならない。 -10.41 外部キー制約設定時の親キー削除 外部キー制約が設定されている状態で親キーを削除する場合、次の2つのオプションが利用できる。 +ON DELETE CASCADE・・・親キーを削除するときに、参照している外部キーの行も削除する。 +ON DELETE SET NULL・・・親キーを削除するときに、参照している外部キーをNULLに置き換える。 -10.42 チェック制約の定義 +列レベル構文では表内の他の列を参照できない。 +表レベル構文では表内の他の列を参照できる。 +表内の他の行の値を参照する問合せは使えない。 +CURRVAL, NEXTVAL, LEVEL, ROWNUM擬似列は使えない。 +SYSDATE, UID, USER, USERENV関数は使えない。 -10.46 副問合せを使った表作成 【副問合せを使った表作成の基本構文】[ ]内は省略可能 CREATE TABLE 表名[(列名, 列名・・・)] AS 副問合せ; 【副問合せを使った表作成のポイント】 +指定する列数と副問合せの列数が一致する必要がある。 +列名、デフォルト値、制約を指定できる。 +SELECT句で式を指定した場合は、列名または列別名を指定しなければならない。 +データ型、NOT NULL制約、データが表にコピーされる。また、列を指定しない場合、列名がコピーされる。 ★DEFAULT値や、NOT NULL以外の制約はコピーされない。
-10.1 スキーマオブジェクト データベースの中で定義・作成され、利用されるものをオブジェクトと呼ぶ。 オブジェクトはスキーマオブジェクトと非スキーマオブジェクトの2種類に分けられる。 【スキーマオブジェクト】 特定のユーザーによって所有される。データの格納や検索のために直接的に使われる。 +表 +インデックス +ビュー +シノニム :オブジェクトに対する別名。   →名前を簡略化したり、オブジェクトの所有者を隠す。 +順序   :一意な値を生成する。 +データベースリンク:リモートデータベースにアクセスするために使われる。 【非スキーマオブジェクト】 特定のユーザーには所有されず、システム全体で共用される。 +記憶域 +ローカル +ユーザー など -10.2 オブジェクトのネーミング規則 +使用できる文字はアルファベット、数字、_、$、#  →日本語環境であれば漢字、カタカナ、ひらがなも使用可能 +名前は必ず文字で開始する(数字や_、$、#は不可) +名前の長さは30Bytesまで。 +スキーマの中で一意でなければならない  →スキーマが異なれば、同じ名前でも可。 +Oracleの予約語は使用不可 -10.3 CREATE TABLE必要要件 +CREATE TABLE権限(自分のスキーマに自分所有の表を作成可能) →CREATE ANY TABLE権限(他のスキーマに他ユーザー所有する表を作成可能) +記憶域(表を格納する) -10.4 CREATE TABLE文 構文 CREATE TABLE [スキーマ名].表名 (列名 データ型 [DEFAULT 式] [制約]) [TABLESPACE 表領域名] [領域管理パラメータ] <次の項目を指定可能> +スキーマ +列のデータ型 +制約 ★シノニムは指定できない →CREATE SYNONYM文で定義する -10.5 SQL文でのスキーマ名デフォルト値 SQL文でスキーマオブジェクトを指定する際にスキーマ名を省略すると、ログオンユーザー名がデフォルトで使われる。 -10.6 表名と列名の一致は可能か? 可能。表名と列名が同一でも問題なし。 -10.7 オブジェクト名の大文字・小文字区別 オブジェクトの名前は大文字と小文字が区別されない。 小文字を使う場合、ダブルクォーテーション(")で名前を囲う。 また、以下の場合にも(")で名前を囲う。 +空白を含む名前 +数字、#、_、$で始まる名前 +英数字、#、_、$以外の文字を含む名前 +予約語を名前として使用する場合 -10.8 Oracle予約語 DATE:予約語 DATA:予約語でない -10.13 VARCHAR2(n)について +nを超えるデータはエラーになる。 +nは省略不可。 +1~4000バイトまで格納できる。 -10.14 CHAR(n)について +nを超えるデータはエラーになる。 +nは省略可能。(デフォルトは1) +1~2000バイトまで格納できる。 -10.15 NUMBER(p,s)について +pは精度。10進数桁の総数を表す。1~38桁。 +sは位取り(小数点以下の桁数)。-84~127桁。 +pは省略可能。その場合、浮動小数点を格納する。 -10.15 DATEについて +世紀、年、月、日、時間、分、秒を持つ。 +固定長でDBに格納される。 +日付書式のデフォルトは「DD-MON-RR」 【RR書式のデータ解釈】 +RR =50~99で入力・・・1950~1999年(現在の年の上2桁-1の上2桁で戻される) +RR =0~49出入力・・・・2000~2049年(現在の年と同じ上2桁で戻される) -10.18 TIMESTAMPについて(1) TIMESTAMPデータ型はDATEデータ型を拡張したものである。 ◆世紀、年、月、日、時間、分、秒、1秒未満の単位をもつ。 →時間を厳密に扱いたい場合に使用 【TIMESTAMP型の定義】[ ]内は省略可能 +TIMESTAMP[(精度)] +TIMESTAMP[(精度)] WITH TIME ZONE +TIMESTAMP[(精度)] WITH LOCAL TIME ZONE -10.19 TIMESTAMPについて(2) ◆TIMESTAMP +ローカル時間(例えば日本標準時)のTIMESTAMP値 +タイムゾーンによる時差・・・協定世界時(UTC)との時差(日本は+9時間) ◆TIMESTAMP WITH TIME ZONE +主キーまたは一意キーの一部として指定できない。 +複数のタイムゾーンの時間の後先を厳格に評価する場合に使用する。 ◆TIMESTAMP WITH LOCAL TIME ZONE +主キーまたは一意キーの一部として指定できる。 +複数のタイムゾーンにわたって、クライアントのタイムゾーンで時間を指定する場合に適している。 +時差を列データとして含まない。 -10.20 INTERVAL(期間データ型)について 【INTERVAL YEAR TO MONTH型の定義】[ ]内は省略可能 INTERVAL YEAR[(精度)] TO MONTH ※精度のデフォルトは2 【YEAR TO MONTH期間リテラルの定義】[ ]内は省略可能 +INTERVAL '整数1-整数2' YEAR[(精度)] TO MONTH ・・・① +INTERVAL '整数1' YEAR[(精度)]・・・② +INTERVAL '整数1' MONTH[(精度)]・・・③ ①INTERVAL '整数1-整数2' YEAR[(精度)] TO MONTH ◆整数1は年期間 ◆整数2は月期間(値は0~11) (例)現在時刻から1年6カ月後の日付を取得 SELECT SYSDATE,SYSDATE + INTERVAL '1-6' YEAR TO MONTH TARGET_DATE FROM dual; SYSDATE :2005/04/08 02:48:39 TARGET_DATE:2006/10/08 02:48:39 ②INTERVAL '整数' YEAR[(精度)] ◆整数1は年期間 ③INTERVAL '整数1' MONTH[(精度)] ◆整数1は月期間 -10.22 LONG型について LONG型は可変長文字列型である。 +最大2GBまでデータを格納できる。 +1つの表で1つの列にしか適用できない。 +WHERE句、GROUP BY句、ORDER BY句の中では使えない。 +LONG型の代わりに、新しいCLOB型があり、LONG型の制約のいくつかが改善されている。 -10.24 制約の種類 +NOT NULL制約・・・列にNULLを設定できないようにする。 +一意制約・・・指定された列(または列の組み合わせ)の値は、NULL値を除いて一意でなければならない。 +主キー制約・・・NOT NULL制約と一意制約の複合 +外部キー制約・・・値を使った関連付けを矛盾なく維持する。参照整合性制約または参照制約とも呼ばれる。 +チェック制約・・・チェック条件を明示的に指定し、データをチェックする。 -10.25 制約のガイドライン +制約名を省略すると、OracleサーバーがSYS_Cn(nは一意な整数)の名前を生成する。 +制約名はオブジェクトのネーミング規則に従う。 +制約名は、1つのスキーマの中で一意である必要がある。 +CREATE TABLE文で表を作成するときに制約を定義できる。 +表の作成後はALTER TABLE文で制約を追加できる。 +制約を定義する構文には、列レベルと表レベルの2つの構文がある。 +データディクショナリービューで制約を確認できる。 (USER_CONSTRAINTS,USER_CONS_COLUMNS) -10.28 表レベル制約構文使用時の注意点 +他の列との組み合わせの制約(複合主キーなど)を指定できる。 +NOT NULL制約は指定できない。 +ALTER TABLEで制約だけを単独で追加する場合、表レベル構文を使う必要がある。 -10.31 一意制約について +NULL値を除いて一意となる。 +重複値を入力するとエラーになる。 +Oracleサーバーは暗黙的に一意索引を作成する。 +個数に制限はない。 【複合一意キーの定義】[ ]内は省略可能 ・・・, [CONSTRAINT 制約名] UNIQUE(列名1,列名2),・・・ -10.35 主キーについて +NULL値は禁止される。 +値は一意となる。 +1つの表には1つだけ主キーを定義できる。 +Oracleサーバーは暗黙的に一意索引を作成する。 【複合主キーの定義】[ ]内は省略可能 ・・・, [CONSTRAINT 制約名] PRIMARY KEY(列名1,列名2),・・・ ★主キーを作成しなくてもエラーにはならないが、主キーがないと行の一意性が保証されないため、実用上は必須である。 -10.39 外部キー制約 外部キー制約は、参照整合性制約または参照制約とも呼ばれる。値を使った関連付けを矛盾なく維持する制約。 +参照する列は外部キー、参照される列は親キーと呼ばれる。 +外部キーの値は(1)親キーの値のいずれかに一致 (2)NULL のどちらかでなければならない。 +外部キーが参照している親キーの値は削除できない。 →ON DELETE CASCADEオプションで削除可能。 外部キーを定義する前に、親キーには主キーまたは一意キー制約が定義されていなければならない。 -10.41 外部キー制約設定時の親キー削除 外部キー制約が設定されている状態で親キーを削除する場合、次の2つのオプションが利用できる。 +ON DELETE CASCADE・・・親キーを削除するときに、参照している外部キーの行も削除する。 +ON DELETE SET NULL・・・親キーを削除するときに、参照している外部キーをNULLに置き換える。 -10.42 チェック制約の定義 +列レベル構文では表内の他の列を参照できない。 +表レベル構文では表内の他の列を参照できる。 +表内の他の行の値を参照する問合せは使えない。 +CURRVAL, NEXTVAL, LEVEL, ROWNUM擬似列は使えない。 +SYSDATE, UID, USER, USERENV関数は使えない。 -10.46 副問合せを使った表作成 【副問合せを使った表作成の基本構文】[ ]内は省略可能 CREATE TABLE 表名[(列名, 列名・・・)] AS 副問合せ; 【副問合せを使った表作成のポイント】 +指定する列数と副問合せの列数が一致する必要がある。 +列名、デフォルト値、制約を指定できる。 +SELECT句で式を指定した場合は、列名または列別名を指定しなければならない。 +データ型、NOT NULL制約、データが表にコピーされる。また、列を指定しない場合、列名がコピーされる。 ★DEFAULT値や、NOT NULL以外の制約はコピーされない。 -10.50 DROP文による表の削除 +表内の構造が全て削除される。(データや制約など) +表に作成された索引は自動的に削除される。 +DDL文なのでトランザクションはコミットされる。 表が使用していた全ての領域は解放され、ほかのオブジェクトで再利用可能となる。 +表の所有者またはDROP ANY TABLEシステム権限を持つユーザーだけが削除できる。 +表に依存するオブジェクトは削除されないが無効になる。(ビュー、シノニムなど)

表示オプション

横に並べて表示:
変化行の前後のみ表示:
目安箱バナー