• ベストアンサー

SQLServer2000:テーブルの先頭に列を追加したい

いつもお世話になっております SQLServer2000を使用しております。 あるテーブルに a,b,c,dという4つの項目が存在している状態で aの前にzというフィールドを追加したいと考えております。 Enterprise Managerを使えば簡単に行うことが出来ますが、 これをクエリアナライザで行いたい場合に どのようにSQL文を記述すればよいのか、見つけることが出来ませんでした。 このようなことは可能なのでしょうか。 ご存知の方がいらっしゃいましたら、ご教示のほど、何卒よろしくお願いいたします。

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

  • ベストアンサー
  • nov-d
  • ベストアンサー率36% (51/140)
回答No.1

アナログなやり方で恐縮ですが。。。(^_^; 1.「ALTER TABLE ADD...」で列追加 2.ターゲットとなるテーブルに関する外部参照制約を全てDisableに 3.INSERT INTO (新テーブル名) SELECT (望む順の列名) FROM (旧テーブル名); 4.Drop Table (旧テーブル名); 5.ALTER TABLE (新テーブル名) RENAME TO (旧テーブル名); 6.制約を再作成 あまり自信がありませんが、こんな具合でいけませんかね・・・。 #エリアナライザ的な書き方でなく、重ねて恐縮です。

o_w_nakazaki
質問者

お礼

早々のご返答を頂き、ありがとうございます。 手順は異なりますが、 同様の方法で対応することが出来ました。 本当に助かりました。ありがとうございました

関連するQ&A

  • varchar型の入力できる最大文字数について

    varcharでサイズを8000にしたフィールドに1000文字(例えば’aaa・・・「a」を1000文字・・・’)INSERTした後にそのフィールドをSELECTすると256文字しか入っていません。どうしてなんでしょうか? SELECT、INSERTなどのSQLの実行は”クエリ アナライザ”や”SQL Server Enterprise Manager”で試しました。 SQLServer初心者です。何卒宜しくお願い致します。

  • SQLserverについて

    SQLの勉強を兼ねて、SQLserver を インストールして使ってみたいのですが、 特にサーバーなど立てずに、 スタンドアローンの環境で SQLserverをインストールして ローカルのACCESS のmdbに接続して SQL文など実行出来るのでしょうか? (Enterprise Manager は 使えるのでしょうか?) よろしくお願いします。

  • SQLServer:SQL文でシングルクオテーションを混在させたフィールドを追加したい

    SQLServer2000を使用しております。 タイトルのとおりなのですが、 SQL文でシングルクオテーションを混在させたフィールドを追加するにはどのように記述すればよいのでしょうか。 レコードに混在させるには2つシングルクオテーションを記述すればよいというのはわかったのですが、 ALTER TABLE 等でフィールドを追加するときは、 この記述では追加が行われませんでした。 どなたかご教授の程、宜しくお願い致します。

  • SQLServerのテーブルについて

    今、SQLSERVER上に5200万行ほどのレコードを保持しているテーブルがあるとします。 クエリアナライザで検索条件を指定して検索しても 1時間ほどかかります。 そこでインデックスというものを追加したいのですが、 データ数が多いのか、うまくいきません。 どなたか教えて下さい。 ● hizuke | datetime ● name | varchar count | int area | varchar ●の部分にインデックスを付加したいと考えています。

  • テーブル作成後なんですが、Primary Keyをスクリプトで追加したい

    Windows2000でSQLServerを使用しています。 テーブルは作成したのですが、後からある項目にPrimary Key を エンタープライズマネージャを使用せず、スクリプトで追加したいのですが、 構文がわかりません。 どなたか教えていただけませんでしょうか。 よろしくお願いいたします。

  • SQLServerでテーブルの列数を求めたい。

    環境 WinXpProSP3 SQLserver2005EE SQLServer上にあるテーブルの「列数」を求めるSQL文はどう書けばよいのでしょうか? あちこち検索してみましたが、わかりませんでした。 よろしくお願いします。

  • SQLServer 複数列から同一語を検索

    SQLServer2008R2を使用しています。 次のようなテーブルAがあります。 ID Code1 Code2 Code3 Val1 Val2 Val3 -------------------------------------- 1  A1             1 2  A1   Z1         2   1 3  B1   A1         1   1 この時、Code1~3にあるA1に該当するVal1~3の合計をそれぞれ取得したいのですが、SQL文の書き方がわかりません。 SELECT Sum(Val1), Sum(val2), Sum(Val3) FROM A WHERE Code1='A1' OR Code2='A1' OR Code3='A1' のようなSELECT文では、B1・Z1の数も合計してしまいます。 B1・Z1の数が含まれないようなSQL文は、どのように記述したらよいでしょうか? どなたか有識者の方いらっしゃいましたら、宜しくお願い致します!

  • SQLServer2005で文字列の時刻の合計を出す方法はありますか?

    SQLServer2005で以下のテーブルがあります。 [Day] [Time]   1  1:30   1  2:00   2  4:45   3  2:30   3  1:45 Dayフィールド、Timeフィールドは共にvarchar2です。 (Timeには"1:30"の文字列が入っています) このテーブルを読み込むとき、各日ごとの合計を計算して出力するSQL文がわかりません。 ■■ 出力イメージ ■■ Day Time   1 3:30   2 4:45   3 4:15 DateAdd関数やMAX関数等を使って考えましたが実現できませんでした。 こういう処理をSQL文でおこなうことは可能でしょうか? もし実現可能な場合、方法やだいたいのやり方でも結構ですのでご教示いただけませんでしょうか? TimeフィールドがDatetime型から可能でしょうか? それとも、プロシージャや読み込んでから別途計算しなおさないと無理でしょうか? よろしくお願いします。

  • 位置を指定してフィールドを追加する

    位置を指定して、フィールドを追加する方法をがわかりません。 ALTER TABLE [既存のテーブル名] ADD [新しいフィールド名] VARCHAR(100) AFTER [既存のフィールド名]; 上記のような方法でできませんでした。 ちなみにSQLServer2000がインストールされた環境で、クエリアナライザで実行しました。 よろしくお願いいたします。

  • アクセスの追加クエリについて

    二つのテーブル間(AとB)を追加クエリを使い AからレコードをBに追加することは出来たんですが、 逆にBからAにレコードを追加しようと選択クエリを追加クエリに変更しようとしたんですが、ウィザードの追加先テーブル名にAのテーブル名が表れないですがその理由が全く分からないので分かる方教えていただけませんか? AとBのレコード内のフィールドは同じです。 AからBにレコードを移行する処理としてマクロを使いアクションとして ・クエリを開く(これは追加クエリです) ・SQLの実行(上と同じクエリを削除クエリに変更し、そのSQL文をSOLステートメントに貼り付けました) 上の処理は問題なく出来たので逆のBからAへレコード移行処理のマクロを作ろうとしたのですが、追加クエリの追加先テーブルにテーブルAの名前が出てこないので困っています。こういったAからB。BからAという処理は追加クエリで出来ないのでしょうか?