表の列のデータ型を変更する SQL ORACLE

環境

  • Windows10

  • Oracle12c

  • SQL*Plus

目標

表の列を削除して追加する

プライマリキーはVARCHAR2で良かったのにNUMBERにしてました。 変更します。

列のデータ型を変更する構文

ALTER TABLE 表名 MODIFY (列名[データ型] [DEFAULT 式] [,列名 [データ型] [DEFAUlT 式]…]);

SQL*Plusで実行する

SQL> DESC CATM;
 名前                                      NULL?    型
 ----------------------------------------- -------- ----------------------------
 CATCD                                     NOT NULL NUMBER(4)
 NAME                                               VARCHAR2(10)
 GENDER                                             VARCHAR2(1)

SQL> ALTER TABlE CATM
  2  MODIFY(CATCD VARCHAR2(4));
MODIFY(CATCD VARCHAR2(4))
       *
行2でエラーが発生しました。:
ORA-01439: データ型を変更するには、修正する列を空にする必要があります

列を空にしないと消えないとのことなので空にします。

行を削除する構文

DELETE [FROM] 表名 [WHERE 条件];

SQL*Plusで実行する

SQL> SELECT * FROM CATM;

     CATCD NAME       G
---------- ---------- -
         1 アメショ   1

SQL> DELETE FROM CATM WHERE CATCD = 1;

1行が削除されました。

SQL> SELECT * FROM CATM;

レコードが選択されませんでした。

もう一回データ型変更を実行します。

SQL> DESC CATM;
 名前                                      NULL?    型
 ----------------------------------------- -------- ----------------------------
 CATCD                                     NOT NULL NUMBER(4)
 NAME                                               VARCHAR2(10)
 GENDER                                             VARCHAR2(1)

SQL> ALTER TABlE CATM
  2  MODIFY(CATCD VARCHAR2(4));

表が変更されました。

SQL> DESC CATM;
 名前                                      NULL?    型
 ----------------------------------------- -------- ----------------------------
 CATCD                                     NOT NULL VARCHAR2(4)
 NAME                                               VARCHAR2(10)
 GENDER                                             VARCHAR2(1)

終わりです。