こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQLserverでの列の削除について

SQLserver2000にてSQL文の練習をしている、データベースの初心者です。

SQLserverでは、直接列の削除ができないと聞きました。
----------------------------------------
ALTER TABLE テーブル名
DROP 列名
----------------------------------------
↑このようにはできませんでした。

そこで、いったん削除したい列以外の列がある別のテーブルをつくってからテーブル名を変更する方法として、

1,新しいテーブルを、元のテーブルからデータをコピーして作る。
2,元のテーブルを削除
3,新しいテーブルの名前を元の名前に変更。

という手段を使えばよいという情報を得ましたが、1の部分がどうしてもできません。
(テーブル削除、テーブル名の変更はできました)

----------------------------------------
CREATE TABLE 新しいテーブル名
AS SELECT 削除した列以外の列名
FROM 元のテーブル名
----------------------------------------
このようにすると、

----------------------------------------
サーバー : メッセージ 156、レベル 15、状態 1、行 2
キーワード 'AS' 付近に正しくない構文があります。
----------------------------------------
といわれてしまいます。

EnterpriseManagerを使わずにやる方法が知りたいです。
正しいSQL文をどうかご教授ください。
どうぞよろしくお願いいたします。


※ちなみにOSはWIN2000を使っています。

投稿日時 - 2003-05-02 14:28:00

QNo.537452

困ってます

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

> SQLserverでは、直接列の削除ができないと聞きました。
> ----------------------------------------
> ALTER TABLE テーブル名
> DROP 列名
> ----------------------------------------

----------------------------------------
ALTER TABLE テーブル名
DROP COLUMN 列名
----------------------------------------
なら大丈夫じゃないでしょうか。

また、
SELECT 削除した列以外の列名
FROM 元のテーブル名

このSELECTがうまく動くかを確認してみてください。

投稿日時 - 2003-05-02 20:11:06

お礼

回答ありがとうございます。
反応が遅くなりすみませんでした。

COLUMNを入れるというのは試したことがありませんでした。
土曜から連休なので、連休明けの7日に早速やってみます!

投稿日時 - 2003-05-04 00:47:36

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.1

実際に書いたSQL文を見せて頂けますか?

CREATE TABLE 新しいテーブル名
AS SELECT 削除した列以外の列名
FROM 元のテーブル名

これだけでは、回答のしようがないので。
一応、上記の構文は間違ってはいないと思いますよ。

投稿日時 - 2003-05-02 17:19:26

補足

情報が足りず、失礼しました。

1、テーブルを作る。
-------------------------------
CREATE TABLE 住所録
(名前 CHAR(20),年齢 SMALLINT,住所 VARCHAR(80))
-------------------------------

2、住所録にデータを入れる。
-------------------------------
INSERT INTO 住所録
VALUES ('鈴木',23,'東京都')
-------------------------------

3、やっぱり年齢はいらない→年齢という列を消したい。
でも直接列は削除できないから・・・
まずは、住所録の列『名前,住所』をコピーした新しいテーブル、仮住所録を作ろう。
-------------------------------
CREATE TABLE 仮住所録
AS SELECT 名前,住所
FROM 住所録
-------------------------------

・・・・エラー
-------------------------------
サーバー : メッセージ 156、レベル 15、状態 1、行 2
キーワード 'AS' 付近に正しくない構文があります。
-------------------------------

はじめからの流れはこんな感じです。
この考え方以外に、できるだけ問題の起こらないような列の削除の仕方がありましたら、お教え願えますか?
よろしくお願いします。

投稿日時 - 2003-05-02 17:35:07

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-