• 締切済み

【mySQL】テーブル構造のアップデート

WEB向けCMSをつくっているのですが、 CMSで データベースのテーブルの カラムの追加や 型の変更が合った場合 レコードにできるだけ影響を与えずアップデートできるようにしたいのですが、 どうすればいいのでしょうか? WordPress等は、アップデート時にデータベース構造に関わるような改変が合った場合 どのようにアップデートをおこなっているのでしょうか?

  • MySQL
  • 回答数1
  • ありがとう数0

みんなの回答

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.1

Alter 文を使います。 型の変更はできません。

関連するQ&A

  • 複数テーブルからデータを取り、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

  • UPDATEで既存のレコードに文字列を追加したい

    いつもお世話になります。 SQL文で質問があります(環境はPHP+SQLiteです)。 keywordというカラムがあって、そこにはキーワードとして使う文字列が入っています。 (データベースを検索するときに使うタグを集めたようなものです) 例えば、 "本 料理 ブック cooking book" という感じです。 UPDATEで、このカラムに別のキーワードを追加したい場合、どのようなSQL文にすれば良いのでしょうか? 追加するキーワードは既存のキーワードと重複しないように追加したいです。 例えば、すでに"本 料理 ブック cooking book"というレコードがあるので、UPDATEで「レシピ」を追加したら"本 料理 ブック cooking book レシピ"となるように、「本」を追加する場合はすでに「本」という文字列があるので既存のままで変更なしにしたいです。 そもそもこのようなことはSQL文でできるのでしょうか? できないとしたら一旦SELECTでkeywordのレコードを取得してPHPで改変したものをUPDATEで上書きするしかないでしょうか? どうぞよろしくお願い致します。

  • postgresqlにて全レコードのupdate

    PostgreSQLの全レコードを順次Updateしたいのですが、 SQLの記述方法がわかりません。 [やりたいこと] ユーザ情報を保持しているテーブルに、新しく"ID_TMP"カラムを追加。 カラム"ID_TMP"に、ユーザIDを保持しているカラム"ID_INFO"の内容を書き込む。 コピーしたいレコードが単一の場合、次のSQLで可能だと思うのですが、 テーブルに保持している全レコードを順次処理する方法を教えてください。 update [テーブル名] set ID_TMP = (select ID from [テーブル名] where id = [ID名]); 宜しくお願いいたします。

  • csvファイルを使ってMySQLのテーブルを更新し

    約2万件ある15個のカラムで構成されるMySQLのテーブルがあります。 このテーブルをcsvファイルを使って更新しようと考えています。 csvファイルにはレコードIDとあるカラムの変更する値の2つのセルで 構成されています。 行数は毎回異なりますが、だいたい300行前後です。 csvファイルの具体的イメージはこんな感じです。 id order ============ 2,  200 4,  10 7,  460 11,  35 MySQLのテーブルの方にも「id」と「order」というカラムが存在します。 java や PHP を使ってやる方法はわかるんですが、プログラムを作成しないで SQLだけで行いたいと考えています。 LOAD DATA LOCAL INFILE などがあることがわかったのですが、レコードを REPLACE  するのではなく、一部のカラムをアップデートしたい、ということです。 どなたか、教えて頂けると助かります。 よろしくお願い致します。

  • 【MySQL】1対1でテーブルをあえて分ける

    mysqlを使用してデータベースを作成しているのですが データベースでテーブルを分けるときって 【アカウントテーブル】 ID アカウント 名 アカウント パスワード 名前 住所 電話番号 職業 【職業テーブル】 職業ID 職業名 というような1対多というのはよく組むとおもうんですが 下記のような 【アカウント情報テーブル(アカウント情報)】 アカウントID アカウント 名 アカウント パスワード 【アカウント情報テーブル(プロフィール情報)】 アカウントID 名前 住所 電話番号 職業 1対1の関係でテーブルをジャンル(エンティティ)ごとに複数にわけて あとでリレーションして一個にまとめるというのはデータベース的にあまりよろしくないのでしょうか? 何故、こんなことしたいかというと、1テーブルあたりのカラム数がかなり多くなってくると PHPでデータベースを書き込んだり呼び出したりする時に毎度多くのカラムを取り扱わなければならず SELECTで、カラムを一個一個選んで行かないといけません。 しかし、取り扱いたいカラムは大抵の場合あるジャンルだけなので リレーションするかしないかで、あるジャンルのデータだけを取り扱えれば 効率がよくなるのでは? というのがあります。 また、視覚的にカラムの把握もしやすくなります。 この1対1テーブルは、DB設計的にどうなでしょうか?

    • ベストアンサー
    • MySQL
  • mysqlで異なるテーブルの文字列も一括置き換え

    こんにちわ。 mysqlで複数のことなるテーブルの文字列を一括置き換えしたいと考えています。 ひとつのテーブルなら update テーブル名 set `カラム` = replace(`カラム`,'置換前','置換後') でできました。 table1 table2 table3 と構造が同じテーブルがたくさんある場合に、一括で置き換えができれば便利だと思っています。 どなたかご存知の方いらっしゃれば教えてください。 お願いします。

  • あるテーブルのあるコラムを固定の値に変更したい。

    Oracle 9i Databaseのデータベースがあります。 あるテーブルAがあり、大量のレコードが存在しています。 このテーブルAのコラムaを全件ある固定の値bに変更したいのですが、どのようにすればよいでしょうか。 レコード数が大量(数百万件)にあるので、できればupdateでなく何かSQLLoaderのように高速に行いたいのですが、もしご存知のかた、手順を教えて下さい。(SQLLoaderって追記しかできないのでしょうか??) 宜しくお願いします。

  • MySQLでテーブルの完全同期

    MySQLでテーブルの完全同期を行いたいです。 例えばAテーブルをUpdateしたらリアルタイムでBテーブルもUpdate、同様にInsert、Delete。 Aテーブルに1000レコードはいっていて、Bテーブルが0件の場合、自動的に1000件Bテーブルに取り込む。 このようなことを実現することは可能でしょうか

    • ベストアンサー
    • MySQL
  • テーブルのカラムの追加について

    初歩的なことかもしれませんが、下記質問について教えてください。 現在SQL Server2000の環境でDBを使用しております。 現在使用しているDBの既存テーブルに簡単なバッチファイルを使ってカラムを追加後(ALTER TABLE)、その追加したカラムにデフォルト値やそのテーブルにレコードを追加しようとしています(個々までバッチ処理: 今回試したのは、クエリアナライザにて試験的に行っています)。 ただ、カラムの追加までは可能ですが、デフォルト値やレコードの追加を行うと「追加したカラムが無効です」というエラーが表示されます。 恐れいりますが解決策があれば、教えてください。

  • update,deleteについて

    お世話になります。 下のようなテーブルでデータのメンテナンスを行いたいのですが、update,deleteを効率良く行う方法はありますでしょうか? No カラムA カラムB カラムC カラムD  ---------------------------------------- 1 aaa 111 あああ 2 aaa 222 いいい 123 3 aaa 333 ううう 4 aaa 444 えええ 5 aaa 555 おおお 456 6 bbb 222 いいい 7 bbb 333 ううう 8 bbb 555 おおお カラムAが「aaa」のレコードと「bbb」のレコードがあり、カラムB,Cは一部のレコードが重複しています。 この状態から、 ・No2のカラムDをNo6のカラムDにセット ・No5のカラムDをNo8のカラムDにセット ・No2,3,5のレコードを削除 したいのです。 ※カラムB,Cが重複している場合、カラムAが「bbb」のレコードにカラムDの値を反映し、カラムAが「AAA」のレコードは削除したいです。 update,delete共に効率良く行う方法があれば、助かります。 初歩的な質問かも知れませんが、御教示いただけますと幸いです。 よろしくお願い致します。