Symfoware Parallel Server RDBユーザーズガイド データベース定義編
目次 索引 前ページ次ページ

第3章 データベースの定義変更と削除> 3.1 データベースの定義変更

3.1.1 論理構造定義の変更

■スキーマ定義の追(CREATE SCHEMA)

既存のデータベースの定義に新たにスキーマ定義を追加することができます。スキーマ定義を追加する場合は、スキーマ定義時と同様に、CREATE SCHEMA文で指定します。CREATE SCHEMA文の指定方法の詳細については、“論理構造の定義”を参照してください。

在庫管理DBに属するスキーマを追加します。
CREATE SCHEMA  STOCKS 
                 (1)

(1) スキーマ名

■スキーマ定義の削(DROP SCHEMA)

スキーマ定義の削除をする場合は、DROP SCHEMA文を使用します。以下に指定例を示します。

在庫管理DBに属するスキーマを削除します。
DROP SCHEMA  STOCKS    RESTRICT 
               (1)

(1) 削除対象のスキーマ名

スキーマ定義を削除するときに、そのスキーマの配下に下記の定義がされている場合は、削除できません。スキーマ定義を削除する前に、これらの定義を削除しておくことが必要です。

ただし、CASCADE指をした場合は、上記の定義がなされていても無条件に関連する定義すべてを削除します。

■表定義の追(CREATE TABLE)

スキーマに表定義を追加する場合は、CREATE TABLE文を使用します。以下に指定例を示します。CREATE TABLE文の指定方法の詳細については、“論理構造の定義”を参照してください。

スキーマSTOCKSに製品表の定義を追加します。
CREATE TABLE  
       STOCKS.製品表 (品番 SMALLINT NOT NULL, 品名 NATIONAL CHAR(10),…) 
         (1)   (2)        
               (3)

(1) スキーマ名

(2) 表名

(3) 追加の対象とする実表の表名指定

■表定義の削(DROP TABLE)

表の定義の削除は、DROP TABLE文を使用します。

当該実表を参照しているビュー表またはプロシジャルーチンがある場合は、表定義を削除することはできません。あらかじめ、当該実表を参照しているビュー表またはプロシジャルーチンの定義を削除しておく必要があります。当該実表を参照するビュー定義およびプロシジャルーチン定義も一緒に削除する場合は、CASCADEを指定します。

同様に、実表に対して格納構造定義がある場合も、実表と一緒に格納構造定義を削除する場合は、CASCADEを指定することが必要です。

DROP TABLE文によって表定義を削除すると、同時にデータベースのデータの実体も削除されます。したがって、表定義で誤ってほかの表名を指定すると、定義情報だけでなく大切なデータの本体を失うことになります。DROP TABLE文の使用にあたっては十分な注意が必要です。

表定義の削除例を以下に示します。

在庫表の定義情報および在庫表を削除します。
DROP TABLE  STOCKS.在庫表   CASCADE 
              (1)    (2)      (3)
                 (4)

(1) スキーマ名

(2) 表名

(3) CASCADE指定

(4) 削除の対象とする実表の表名指定

■表定義の変(ALTER TABLE)

表の定義の変更は、ALTER TABLE文を使用します。ALTER TABLE文で以下の変更を行うことができます。

◆列定義の追

実表に列を新たに追加する場合は、ALTER TABLE文に列定義の追加を指定します。1つの表定義変更文で追加できるのは、1列です。追加する列の定義順は、既存の列の後になります。

また、追加する列に対する制約は、NOT NULLだけ指定可能です。NOT NULLを指定した場合、列定義にはDEFAULT句を指定する必要があります。

なお、既存のデータには、DEFAULT値が設定されます。

列定義の追加の指定例を以下に示します。

発注表に“販売価格”列を追加します。この結果を図:表への列の追加に示します。
ALTER TABLE    STOCKS.発注表   ADD 販売価格 INTEGER 
                 (1)    (2)            (3)
                    (4)

(1) スキーマ名

(2) 表名

(3) 列定義

(4) 変更対象表の指定

図:表への列の追加

◆列定義の削

実表から列を削除する場合は、ALTER TABLE文で列定義削除を指定します。1つの表変更文で1列しか削除できません。削除する列を参照しているビュー定義がある場合は、列削除はできません。また、列に対してインデックスのDSO定義がある場合は、列削除はできません。あらかじめインデックスのDSO定義を削除しておく必要があります。ただし、列に対して一意性制約がある場合は、インデックスのDSO定義を削除していても、削除することはできません。また、列定義の削除で表の列数をゼロにしてしまうことはできません。全列を削除する場合は、DROP TABLE文を使用します。列定義の削除の指定例を以下に示します。

発注表から仕入価格を削除します。この結果を図:表からの列削除に示します。
ALTER TABLE    STOCKS.発注表   DROP   仕入価格 
                 (1)    (2)           (3)
                    (4)

(1) スキーマ名

(2) 表名

(3) 削除列名

(4) 変更対象表の指定

図:表からの列削除

■ビュー定義の追(CREATE VIEW)

定義済みのスキーマにビュー定義を追加する場合は、CREATE VIEW文を使用します。ビュー表の定義の変更はできません。ビュー表の定義の変更は、一度ビュー定義を削除しておいて、あらためてビュー定義を追加する方法で行います。

ビュー定義の追加例を以下に示します。CREATE VIEW文の指定方法の詳細については、“論理構造の定義”を参照してください。

スキーマSTOCKSに“電話”ビュー表を追加します。
CREATE VIEW  STOCKS.電話社名,電話番号  (1)   (2)        (3)
                  (4)

             AS SELECT 会社名, 電話番号 FROM STOCKS.会社表 

(1) スキーマ名

(2) ビュー表名

(3) ビュー表の列名

(4) 追加対象のビュー表名

■ビュー定義の削(DROP VIEW)

定義済みのスキーマからビュー定義を削除する場合は、DROP VIEW文を使用します。

削除対象のビュー表を参照する別のビュー表またはプロシジャルーチンの定義がある場合、当該ビュー定義を削除することはできません。あらかじめ、削除対象のビュー表を参照するビュー表およびプロシジャルーチンの定義を削除しておく必要があります。削除対象のビュー表の定義と、それを参照するビュー表およびプロシジャルーチンの定義を一緒に削除するときは、CASCADEを指定します。

ビュー定義の削除例を以下に示します。

ビュー表“在庫ビュー”の定義を削除します。
DROP VIEW  STOCKS.在庫ビュー   CASCADE 
             (1)      (2)        (3)                   
                 (4)

(1) スキーマ名

(2) ビュー表名

(3) CASCADE指定

(4) 削除対象のビュー表名

■プロシジャルーチン定義の追(CREATE PROCEDURE)

プロシジャルーチンを追加する場合には、プロシジャルーチン定義文を使用します。プロシジャルーチン定義文の指定方法の詳細については、“論理構造の定義”を参照してください。

スキーマSTOCKSにPROC002を追加します。
CREATE  PROCEDURE  STOCKS.PROC002(IN PARAM1 INT) 
                        (1)            (2)
   BEGIN                                                        -+ 
     DECLARE 発注数量変数 INTEGER;                                |
     SELECT 発注数量 INTO 発注数量変数 FROM STOCKS.発注表          |→複合文 
          :                                                     |
   END                                                          -+ 

(1) ルーチン名

(2) パラメタ宣言

■プロシジャルーチン定義の削(DROP PROCEDURE)

プロシジャルーチンを削除する場合には、プロシジャルーチン削除文を使用します。削除対象のプロシジャルーチンを呼び出す別のプロシジャルーチンがある場合は、当該プロシジャルーチンを削除することはできません。ただし、CASCADEを指定すると、関連するプロシジャルーチンはすべて削除されます。プロシジャルーチン削除文の指定方法の詳細については、“論理構造の定義”を参照してください。

スキーマSTOCKSからPROC002を削除します。
DROP   PROCEDURE  STOCKS.  PROC002 
                         (1)

(1) ルーチン名

■権限情報の追(GRANT)

権限情報を追加する場合には、GRANT文を使用します。

削除権を追加する例を以下に示します。
GRANT  DELETE  ON    STOCKS.在庫表   TO  UCHINO, WAKAO, SUZUKI 
          (1)             (2)                      (3)

(1) 権限

(2) 対象名

(3) 権限受領者

■権限情報の削(REVOKE)

権限情報を削除する場合には、REVOKE文を使用します。

削除権を削除する例を以下に示します。
REVOKE  DELETE  ON  STOCKS.在庫表  FROM  UCHINO, WAKAO, SUZUKI 
          (1)           (2)                       (3)

(1) 権限

(2) 対象名

(3) 権限受領者

CASCADEを指定して権限を削除した場合、権限受領者がその権限を使って定義したビュー表およびプロシジャルーチンは、削除されます。たとえば、“SUZUKI”が会社表からビュー表“電話”を作っていたとします。

CREATE VIEW  STOCKS.電話(社名,電話番号) 
             AS SELECT 会社名, 電話番号 FROM STOCKS.会社表 

“SUZUKI”の会社表に対するSELECT権を削除した場合、“SUZUKI”が作成したビュー表“電話”も削除されます。

REVOKE  SELECT  ON  STOCKS.会社表  FROM  SUZUKI  CASCADE 

■注釈定義の変

注釈定義のうち、表および列の注釈定義は、ALTER TABLEで変更することができます。以下に例を示します。

表の注釈定義の変更例
ALTER TABLE    STOCKS.在庫表 

               COMMENT '製品名, 在庫数量,格納倉庫, 販売価格の表'
                                     (1)

(1) 変更する注釈定義

列の注釈定義の変更例
ALTER    TABLE STOCKS.在庫表 

         MODIFY   製品番号  COMMENT '製品のコード番号' 
                            (1)

(1) 変更する注釈定義

■表の交(SWAP TABLE)

表の交換は、表名を交換することにより、DSOとの関係も交換します。表の交換を行う場合には、SWAP TABLE文を使用します。これにより、以下の効果を得ることができます。

表の交換の例を、以下に示します。

毎日のデータを本日、1日前、2日前・・・という形態で管理する場合、日が変わる契機で、本日のデータを1日前に、1日前のデータを2日前にと順番にデータを移動する運用に表の交換を使用する例を示します。新しい日のデータは初期化して使います。
SWAP TABLE  表00  表01 (1) 
SWAP TABLE  表00  表02 (2) 
              : 
              : 
              : 
SWAP TABLE  表00  表29 (29) 
SWAP TABLE  表00  表30 (30) 


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2006