mysqlで表に列の追加をしたいのですが、コマンドを知ってる方いますか?

A 回答 (2件)

あるテーブルにフィールドを追加するのであれば、


alter table テーブル名 add フィールド名 フィールド型
でOKです。

例:
alter table mytbl add addfld varchar(8) not null default 'abc';
    • good
    • 0

既に回答が出ていますが、補足です。



after 列名
で、どこに列を追加するかを指定できます。

alter table mytbl add addfld varchar(8) not null after prev_fld;
これで、prev_fld列の後に追加できます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

Qviewにidentity列の追加

viewにidentity列を追加したいのですが、SQL文が分からなくて困っています。
追加する方法をご存知の方がいましたらよろしくお願いします。

作りたいviewは以下のようなviewです。

・テーブルA
ID  NAME   ADDRESS
1   山田    東京
2   鈴木    埼玉
3   田中    千葉
4   佐藤    埼玉
5   藤田    東京
6   石田    神奈川
7   松田    千葉

・作成したいview

ID  ADDRESS  出身人数
1   神奈川      1
2    埼玉      2
3    千葉      2 
4    東京      2

↑このID列をidentity列にしたいと考えています。
使用しているDBはH2です。よろしくお願いします。

Aベストアンサー

H2を良く知らないのですが、一般的には、group byとRownum()とを一緒に使うと
うまくいかないのではなかったかと。

SELECT ROWNUM ( ) AS ID,ADDRESS,COUNT(*) AS 出身人数
FROM SAMPLE
GROUP BY ADDRESS
ではなく、
SELECT ROWNUM ( ) AS ID,ADDRESS,出身人数
from
(
select ADDRESS,COUNT(*) AS 出身人数
FROM SAMPLE
GROUP BY ADDRESS
)
とするとうまくいくのでは?

ANO.1の方が示しておられるURLの
The first row has the row number 1, and is calculated before ordering and grouping the result set・・・
To get the row number after ordering and grouping, use a subquery.
というのが、
「group byの前に連番振りますよ、但し・・・。
サブクエリを使うと、group byの後に連番を振りますよ。」(適当な意訳ですけど)
つまり上記の意味です。

H2を良く知らないのですが、一般的には、group byとRownum()とを一緒に使うと
うまくいかないのではなかったかと。

SELECT ROWNUM ( ) AS ID,ADDRESS,COUNT(*) AS 出身人数
FROM SAMPLE
GROUP BY ADDRESS
ではなく、
SELECT ROWNUM ( ) AS ID,ADDRESS,出身人数
from
(
select ADDRESS,COUNT(*) AS 出身人数
FROM SAMPLE
GROUP BY ADDRESS
)
とするとうまくいくのでは?

ANO.1の方が示しておられるURLの
The first row has the row number 1, and is calculated before ordering and grouping the result set・...続きを読む

Qテーブルのカラム(列)を追加したい

お世話になります、

DBはOracle8iです。

一度作成して、データが入っているテーブルAの
カラム(列)をデータをそのままにして追加できるの
でしょうか?
追加前のデータにデフォルト値を与えることはできるのでしょうか?

[変更前]
名前 年齢 性別
あ   1  男
い   2  女
う   3  男

↓カラム追加

[変更後]
名前 年齢 性別 フラグ
あ   1  男   0
い   2  女   0
う   3  男   0 

以上のような感じにしたいのですが、
Alter table文を使うところまではわかっているのですが。。。

よろしくお願いします。

Aベストアンサー

ALTER TABLE テーブル名 ADD(
フィールド名 NUMBER(10)
);

見たいな感じですね。

既存のレコードの値は、後からupdate文で入れることになります。

といっても
update テーブル名 set 追加フィールド名 = 値;

でおしまいですけど。

QMySQLで新しくフィールドを、ある場所に追加したい。

普通にフィールドを追加するときは、

add table テーブル名 add 追加するフィールド名 その属性;

と書くとおもうのですが、これだとそのテーブルの一番下にフィールドが追加されてしまうと思います。
例えば、上から何番目(あるいは、あるフィールドとあるフィールドの間)にフィールドを追加したい、という処理はできるのでしょうか?

よろしくお願いします。

Aベストアンサー

>add table テーブル名 add 追加するフィールド名 その属性;

alter tableの誤りですよね?

alter table テーブル名 add 追加する列名 そのデータ型等
 [ { first | after 列名 } ]

といった構文で、追加位置を指定できます。

しかし、alter tableの処理では、テーブルの全行のコピーが発生する(※)ので、データ件数が多い場合は注意しましょう。

※定義変更対象のテーブルから、定義後の状態を反映した新たなテーブルが作成され、全件コピーすると同時に変更後の定義を反映する。その後、定義変更前のテーブル削除、定義変更を反映したテーブルの名称を変更前の名称に変更

http://dev.mysql.com/doc/refman/4.1/ja/alter-table.html  

QAccessの追加クエリで既存のテーブルに上書き追加をしたい

追加クエリを使用して既存テーブル(マスタテーブルとして使用)に「情報追加+変更箇所上書き」の作業をしたいと思うのですが、型変換エラー(キー違反)となってしまします。解決方法をご存知の方がおられましたら、ご教示願えればと思います。

Aベストアンサー

既存のキーをレコードの追加はできません。
存在する部分は、更新クエリーで処理します。
存在しない場合は、追加クエリーで追加します。
追加クエリーの対象は、不一致クエリーで対象を把握できます。

Qアクセスでフォームに追加項目を増やす場合、サブフォームにしたほうがよいのか、しないほうがよいのか教えてください。

Access2003を使用しています。
「取引先マスタ」という取引先の住所などが入ったフォームに契約書に関するデータも入力できるようにして欲しいと依頼が入りました。
それは契約の種別ごとに「契約締結日」、「取引先契約者」、「弊社担当者名」を設けます。
このような場合、契約書に関するデータは別のテーブルに入力してサブフォームにしたほうがよいのでしょうか?
それとも「取引先マスタ」と同じフォームのなかに入れたほうがよいのでしょうか?
あとで支障が出にくい方法をとりたいのですが、Accessに熟練されている方はどちらの方法を取られているのでしょうか?
アドバイスをお願いいたします。

Aベストアンサー

基本的な考え方としてはテーブル構成の正規化を考える必要があります。
「取引先マスタ」に契約書に関するデータを追加する場合、同じ取引先で契約が追加されたり、複数の契約が発生することはないのでしょうか?

取引先1件に関して必ず1契約のみであれば、取引先マスタに必要な項目を追加することも考えられると思いますが、一般的には契約内容を登録する別テーブルに、「取引先コード」、「契約種類」、「契約締結日」、「取引先契約者」、「弊社担当者名」などのフィールドを作成し、取引先コードでリレーションシップを作成することが一般的かと思います。

その上でサブフォームなどを作成し、画面で複数契約を同時に確認できるようにするか、フィルタなどを使い契約の種類を条件にして対象を絞り込むように作る方が後々支障が出にくいと思います。


このカテゴリの人気Q&Aランキング

おすすめ情報