• ベストアンサー

Oracle テーブルの列削除

タイトルの通りテーブル(test)の列(retu)を削除したいのですが・・・ Sql*pLUS画面 SQL> alter table test drop(retu); ←この用に入力 alter table test drop(retu) * エラー行: 1: エラーが発生しました。 ORA-00905: キーワードがありません。 となってしまい列を削除できません。 なにか構文の間違いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • bourbon
  • ベストアンサー率46% (18/39)
回答No.4

alter table 表名 drop column 列名; はOracleのバージョン8.1.5からです。 それ以前の場合は表を再作成します、 まず、既存の表名を変更して、 create table as select します。その際に削除したい列は抜かします。 1.rename 既存の表名 to 新しい表名; 2.create table 既存の表名 as select 必要な列のみ記述 from 新しい表名; ただ、注意点としては「再作成」ですので、制約はNOT NULL以外全てなくなります。

imasyu
質問者

補足

バージョンは8.16です。いろいろ試したのですができません。 とりあえずbourbonさんの解答を参考にしてなんとか思う通りのことは出来ました。列を削除できないことでなにか心当たりがありましたらお願いします。

その他の回答 (5)

  • bourbon
  • ベストアンサー率46% (18/39)
回答No.6

うーん、なるほど・・・。 初めて見ました。。。 申し訳ないんですが、環境を聞かせてもらってもいいですか? OSとかOracleのVersionなど、分かる範囲で構いませんので、 お願いします。 ちょっと調べてみます。 よろしくお願いします。

imasyu
質問者

お礼

何度も回答ありがとうございます。 本当にすいません!!  以前Versionを8.16と補足したのですが・・・ 改めて管理担当者に問い合わせたところ8.05ということでした。 もうすでに良回答もらってたんですね、こちらの認識不足でbourbonさんにいらぬ手間をお掛けしてしまいましたね。 もっと慎重に質問しなくてはと反省しております。 超初心者なのでこれからもいろいろと質問することもあると思いますが、またお願いします。

  • bourbon
  • ベストアンサー率46% (18/39)
回答No.5

ORA-00905のエラーは構文に必須項目が抜けているために起こるエラーです。 なので、構文通りにSQL文を記述できていない可能性があります。 ですので、 alter table 表名 drop column 列名; と構文通りに記述して頂ければ、削除はできると思います。 質問されているコメント欄には間違った構文が掲載されていますので↓ > Sql*pLUS画面 > SQL> alter table test drop(retu); ←この用に入力 > alter table test drop(retu) 構文どおりに行ってもできないということでしたら、その状態を 掲載してください。よろしくお願いします。

imasyu
質問者

補足

何度も回答ありがとうございます。 実はあれから他のテーブルの列を削除しないといけないことがありまして  alter table test drop column retu; と入力したところ Oracle SQL*Plus画面-------------- SQL> alter table test drop column retu; alter table test drop column retu * エラー行: 1: エラーが発生しました。 ORA-00905: キーワードがありません。 SQL> -------------------------------- やはり同じエラーが出るようです。 列の追加や属性の変更はできるのですが・・・ またまれに DROP TABLE 表名; もできません、意味のないこととは知りつつも大文字にしてみたり小文字にしてみたりとそんなこともやってます。 何か思い当たることがありましたらよろしくお願いします。

  • TMINET
  • ベストアンサー率32% (45/140)
回答No.3

バージョンはいくつでしょうか? 列の削除コマンドが使えるのは8i以降のバージョンですが。

imasyu
質問者

補足

バージョンは8.16です。いろいろ試したのですができません・・・

  • madman
  • ベストアンサー率24% (612/2465)
回答No.2

すみません。切り貼りしたのでテーブル名を間違えました。 ALTER TABLE test DROP COLUMN retu;

imasyu
質問者

補足

さっそく試してみたのですがやはり同じエラーが出てしまいます。oracle自体に原因があるんでしょうか?

  • madman
  • ベストアンサー率24% (612/2465)
回答No.1

ALTER TABLE scott.emp DROP COLUMN retu; じゃないですか?

関連するQ&A