• ベストアンサー

データがある場合のカラムの削除

データがあるカラムを削除したいのですが、出来ません! drop column column_name だとデータ無しの場合しか通用しなくて・・・。 削除対象のカラムのデータだけを消そうかと、 delete from table_name where column_name=値; も考えたのですが、 where句で引っ掛かったレコードが全部消えてしまいます・・・。 1カラムだけ削除する方法を教えて下さい(><) 宜しくお願いします。

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

  • ベストアンサー
回答No.2

alter table table_name drop column column_name; で削除できない場合は、制約が対象でない列も参照している場合はエラーが戻されます。 通常であればデータがあっても削除できます。 その列を使用している制約を変更して実行するか cascade constraints句を指定(この場合、制約も削除される)してみてはどうでしょう? #せめてオラクルのバージョンは書きましょう。

noname#68148
質問者

お礼

ありがとうございます!出来ました・・・

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

元のテーブルが TableA COL1 COL2 COL3 COL4 で COL4 を削除するとすると CREATE TABLE TableB AS (SELECT COL1 , COL2 , COL3 FROM TableA); TRUNCATE TABLE TableA; DROP COLUMN COL4; INSERT INTO TableA (COL1 , COL2 , COL3) SELECT COL1 , COL2 , COL3 FROM TableB; DROP TABLE TableB; CREATE TABLE xxxx AS でのテーブルのコピーは覚えておくと便利です。

noname#68148
質問者

お礼

ありがとうございます!出来ました・・・

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SQL文 この部分はなんていうのでしょう?

    SELECT T_テーブル1.フィールド1 FROM T_テーブル1 ORDER BY T_テーブル1.フィールド1; なら、 ”ORDER BY句” SELECT T_テーブル1.フィールド1 FROM T_テーブル1 WHERE (((T_テーブル1.フィールド1)="A")); なら ”WHERE句” と言いますが、 DELETE Table1.* FROM Table1; や UPDATE テーブル1 Set テーブル1.フィールド1 = "い" WHERE (((テーブル1.フィールド1)=”あ")); や DROP Table Table1; の deleteやupdateやdropの部分は何て言うのでしょうか? そのまま、SELECT句DELETE句などというのでしょうか?

  • sqliteでWHERE句に存在しないデータを削除

    PHPのsqliteで $sql=DELETE FROM TABLE WHERE C=データ $db->exec($sql) を使ったところ、WHERE句に存在しないデータがあると、エラーとなります。 sqliteで存在しなくてもエラーとならないような処理はどのようにしたらいいでしょうか?

  • 複数テーブルからデータを取り、updateする

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=1211685 にも同じような質問があったのですが、同様の処理でうまくupdateされません。分かる方がいらっしゃいましたら教えてください。 今、テーブルが2つ(table1、table2)があり、それぞれ2つのカラム(column1、column2)を持っています。ここで、それぞれのカラム2が等しく、カラム1が指定した値のレコードのみ値をupdateしたいです。 update table1 set column1 = 'AAA' from table1,table2 where table1.column2 = table2.column2 and table1.column1 = 'BBB' and table2.column1 = 'CCC' としたところ、「from table1,table2 where 」の辺りに間違いがあると表示されます。 上の例とどう違うのか分かりません。 よろしくお願いします。m(__)m

  • sqlite3 空白レコードの削除(2)

    空白レコードの削除ができません。 ターミナルからは、delete from list where name is null;でうまくいくのですが phpからは削除できません ご教授おねがいいたします。 $st = $pdo->query("delete from list where name is null ");

    • 締切済み
    • PHP
  • データ内の「\」や「'」を抽出するには

    データ内に「\」や「'」が含まれているデータを抽出するには SELECT * FROM table WHERE column LIKE '%\%' SELECT * FROM table WHERE column LIKE '%'%' で良いのでしょうか?

    • ベストアンサー
    • MySQL
  • カラムにデータがあるかないか確認したいです。

    環境:mySQL、PHP セレクト文で対象カラムの中にデータが入っているか否かを 確認するphpの書き方を教えていただけないでしょうか。。 例: たとえば、カラム名 no に1が入っていて そのレコードにある bunsyo の中にデータが入っているか否かを確認したいと 考えてます。 $kakunin = mysql_query("select bunsyo from テーブル名 where no=1 "); 上記だとデータを参照するだけなので、、、 入っているかいないかを確認したいと考えてます。 返ってくるのが true=1、false=0 とかで返ると次の処理がしやすいので助かります。。。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • カラム情報(主キー、データ型、桁数等)を取得するには

    テーブルに格納されているカラム情報(カラム名、主キー、データ型、データの桁数)を取得したいと考えています。 主キー情報とそれに付随するカラム情報は現在下記のSQL文で取得しています。 SELECT C.TABLE_NAME , COL.COLUMN_NAME, C.CONSTRAINT_TYPE, COL2.DATA_TYPE, COL2.DATA_LENGTH FROM USER_CONSTRAINTS C, USER_CONS_COLUMNS COL, USER_TAB_COLUMNS COL2 WHERE C.TABLE_NAME = COL.TABLE_NAME AND C.CONSTRAINT_NAME = COL.CONSTRAINT_NAME AND C.TABLE_NAME = COL2.TABLE_NAME AND COL.COLUMN_NAME = COL2.COLUMN_NAME AND C.CONSTRAINT_TYPE = 'P' AND UPPER(C.TABLE_NAME) = UPPER('テーブル名') ORDER BY C.TABLE_NAME, COL.POSITION ここで、主キー以外のカラムに対しても同様にカラム情報を取得したいのですが、どのように取得すればよろしいでしょうか? ※カラム名、主キー有無、データ型、桁数 でカラム情報を取得できれば最も良いのですが、 主キー情報を除いた全体のカラム情報を取得する事ができれば、こちらの情報でも助かります 宜しくお願い致します。

  • カラムの削除が出来ません

    Microsoft SQL2000を使用しているのですが あるテーブル(table_A)のカラム(column_A)を削除したいので 以下のようなクエリ及び、GUIでの削除を実行しました。 ----------------実行クエリ----------------------- ALTER TABLE dbo.table_A DROP COLUMN column_A GO ------------------------------------------------- ところがどちらの削除を方法を実行しても以下のようなエラーメッセージが返されます。 -----------------エラーメッセージ---------------- テーブル 'table_A' - テーブルを修正できません。 ODBC エラー : [Microsoft][ODBC SQL Server Driver][SQL Server] 行 2: 'column_A' の近くに無効な構文があります。 ------------------------------------------------- カラム名の変更などはできるのですが どうしても削除だけ出来ません。 なお、このカラムは主キーとしての設定や 他のテーブルへの外部キーとしての設定を行っていません。 型は[varchar] (20) COLLATE Japanese_BIN NULLです。 どなたか対処方法をご存知の方がおられましたら ご回答よろしくお願いします。 それでは失礼します

  • sqlte3空白レコードの削除

    空白レコードの削除ができません。ご教授お願い致します。 $st = $pdo->query(delete from list where name="" );

    • 締切済み
    • PHP
  • MySQLのカラムを削除したが,それを復元したい

    MySQLのテーブル内のカラムを再編成しようとしています. そこで,カラムAをALTER TABLE DROPで削除しました. その直後,カラムAは必要であることに気づきました. テーブルのバックアップを取っていないので,困ります. この削除コマンドをキャンセル(UNDO)したり,削除したカラムを復元できますか?