みんなの為のMySQLまとめ(14)
参考
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/mysql_17.htm
■テーブルコピー
・問い合わせ結果で、新たにテーブルを作成することができる。
別テーブルへ移動するには、テーブルコピー後にオリジナルを delete、
新テーブルに整合性規則を追加するか、作成済みテーブルに insert で
select 追加すると良い。(下記のレコード追加も参照のこと。)
(表コピー)
create table workw as
select
*
from testm
where key1 like 'a%'
;select * from workw;
・集合問い合わせ結果で、新たにテーブルを作成することもできる。
create table work2w as
select
*
from testm
where key1 like 'a%'
union all
select
*
from testm
where key1 like 'a%'
;select * from work2w;
・空のテーブルをコピーしたい場合は、ありえないキーで抽出する。
create table work3w as
select
*
from testm
where key1 = '@';select * from work3w;
■レコード追加(レコード更新、インサート)
・テーブルにレコードを追加する。
insert into testm (
key1,
data1,
data2,
data3
)
values (
'a001',
100,
200,
300
);
・追加データの並びがテーブル定義と同一であるなら、項目名を省略できる。
nsert into testm values (
'a001',
100,
200,
300
);
・default が指定されていれば、Oracle のようにデータ値として、default
と書くことができる。
create table test4m (
key1 char(8),
data1 int8,
data2 int8,
data3 int8 default 123
);insert into test4m values (
'a001',
100,
200,
default
);select * from test4m;
・入力が必須でない項目は、省略して追加も可能である。
default 指定や not null 制約がない場合、NULL が割り当てられる。
create table test5m (
key1 char(8),
data1 int8,
data2 int8,
data3 int8 default 123
) type=InnoDB;
-- この形式は MySQL ではエラーになるので注意 --
insert into test5m values (
'a001',
100
);
-- データを省略する場合は、フィールド名の指定が必要 --
insert into test5m (key1, data2) values (
'a001',
100
);select * from test5m;
・問い合わせ結果を別テーブルへレコード追加することも可能である。
別テーブルへレコード移動するには、別テーブルへレコード追加後にオリジ
ナルを delete すると良い。
insert into workw
select
key1,
data1,
data2,
data3
from testm where key1 like 'a%';
・特定の項目を固定値にしたりもできる。
insert into workw
select
key1,
data1,
data2,
111
from testm where key1 like 'a%';
・特定の項目だけをセットすることもできる。
insert into workw (key1, data2)
select
key1,
data2
from testm where key1 like 'a%'
;
・NULL を項目にセットすることもできる。
もちろん、not null 制約があれば、NULL をセットすることはできない。
insert into testm (
key1,
data1,
data2,
data3
)
values (
'a001',
100,
200,
NULL
);
・データ中にシングルコーテーション「'」を含める場合は、「''」と 2 個
続けて書くと 1 個の「'」が文字として入る。
insert into testm (
key1,
data1,
data2,
data3
)
values (
'a0''1',
100,
200,
300
);
■レコード修正(レコード更新、アップデート)
・テーブルのレコードを修正する。
where 句には select と同様に複雑な指定が可能である。
update testm set
data1 = 111,
data2 = 222,
data3 = 333
where key1 = 'a001'
;
・MySQL では、insert は default で追加することができるが、
update では指定のしようがなかった。
update test4m set
data1 = 111,
data2 = 222,
data3 = default -- エラーになる
where key1 = 'a001'
;
・一項目だけの修正も可能である。
update testm set
data3 = 333
where key1 = 'a001'
;
・NULL を項目にセットすることもできる。
もちろん、not null 制約があれば、NULL をセットすることはできない。
update testm set
data1 = 111,
data2 = 222,
data3 = NULL
where key1 = 'a001'
;
■レコード削除(レコード更新、デリート)
・テーブルのレコードを削除する。
where 句には select と同様に複雑な指定が可能である。
delete from testm
where key1 = 'a001';
・この例では、testm の key1 の先頭が「a」で始まるレコードを全て削除して
いる。
・この例では、testm の全レコードを削除している。
件数が多いとレスポンスに問題がある。
テーブルを空にするのが目的なら、表切り捨て truncate を使う方が高速で
現実的である。
delete from testm;
Author And Source
この問題について(みんなの為のMySQLまとめ(14)), 我々は、より多くの情報をここで見つけました https://qiita.com/Taku94/items/86a62a8514721ddcbb1c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .