3-3.テーブルを更新する 2004年 4月22日(木) 01T6074X 茂木啓悟
テーブルを更新する(P69~79) テーブルにレコードがすでに入力されており、それらを変更する場合は、「データの更新」を行う。また、追加や削除にも所定の操作が必要になり、追加の際にはファイルからの一括追加も可能である。
データを変更する データの更新にはupdate文を使う。更新の際には必ずwhere句を使って、更新対象のレコードを指定する。 mysql> update FRIENDS_T set ADD_C = -> “北海道函館市何処町1-1-1”where ID_C = “1”; where句で更新対象のデータを指定しないでupdateコマンドを発行すると、すべてのレコードのカラムが変わってしまうので注意。
また更新するカラムとそのカラムのデータをwhere以下に指定して、レコードを更新することも可能。 mysql> update FRIENDS_T set ADD_C= -> “北海道函館市何処町1-1-1”where ID_C = -> “東京都千代田区何処町1-1-1” この場合は、where以下で指定する語句が1字でも異なると、「該当データがない」ということになり、更新できない。
データの削除 データを削除する場合、データの更新同様、where句で削除するレコードの条件を指定し、deleteコマンドを発行する。 mysql> delete from FRIENDS_T where ID_C = “4” 上のコマンドでIDが4の出雲友子さんが削除される。 条件に該当するレコードが2つ以上あれば、それらすべてが消えてしまう。
レコード中の特定のカラムのデータのみを消すときは、Null値もしくは“”(空文字)にカラムのデータを置き換えるようにする。 mysql> update FRIEND_T set ADD_C = null where ID_C = 3; 上のコマンドでID_Cが3の友田知香さんの住所がNullになる。 次のコマンドで友田さんの内容を確認すると、 mysql> select * from FRIENDS_T where NAME_C like “友田%”;
+---+---- - + ----+ |ID_C |NAME_C |ADD_C | | 3 |友田知香 | NULL | 友田さんの住所がNull値なっていることが認できる。 Null値とは「何も入っていない」を意味し、入力するときは“”で囲んではいけない。
ファイルからのデータ入力 [friends.csv] 3,友田知香,青森県青森市何処町2-2-2 4,出雲友子,岩手県青森市何処町2-3-3 5,是田良友,埼玉県さいたま市何処町3-2-7 上のカンマ区切りのデータ、friends.csvをテーブルに読み込むときは、
1.MySQLの導入されたマシンの上の書き込み権限のあるディレクトリにfriends.csvを置く。 mysql> load data infile -> “/directory_names/friends.csv” -> into table FRIENDS_NEW fields terminated by “,”; 「 /directory_names/ 」の中は,データファイルがある場所を絶対パスで記述する。 2行目以降を読み込む場合は,上のSQLコマンドの最後に -> ignore 1 lines; を付け足す。
他のテーブルのデータを入力 コピー元のテーブルFRIENDS_T2をコピー先のテーブルFRIENDS_T2_COPYにすべてのデータを流し込むには、 mysql> insert into FRIENDS_T2_COPY select * from -> FRIENDS_T2;
カラムを個別に指定してデータを追加する場合は カラムを個別に指定してデータを追加する場合は mysql> insert into -> FRIENDS_T2_COPY(ID_C2,NAME _C2,BLOOD_C2) select -> ID_C,NAME_C,BLOOD_C from FRIENDS_T2; とすることでFRIENDS_T2の 3カラム分のレコードがFRIENDS_T2_COPYへコピーされる。
カラムを操作する カラムの追加 既存のテーブルのカラムを増やす場合は, 「alter table テーブル名 add カラム名 データ型」が基本構造となる。 mysql> alter table FRIENDS_T add AGE_C int; 上のコマンドで既存のテーブルに整数型の年齢カラムが追加される。 この場合、AGE_Cは既存のカラムの最後に追加される。
追加する位置を指定する場合 既存のカラムの最初に追加する場合は「first」を付け足す。 mysql> alter table FRIENDS_T add AGE_C01 int first; 上のコマンドでAGE_C01というカラムが先頭に追加される。
指定した既存のカラムのあとに追加する時は、コマンドに「arter カラム名」を付け足す。 mysql> alter table FRIENDS_T add AGE_C02 int after -> NAME_C; 上のコマンドで名前カラムの後に年齢カラムAGE_C02が追加される。
カラムの削除 既存のテーブルから不要なカラムを削除する場合は、「alter table テーブル名 drop カラム名」というコマンドを使う。 mysql> alter table FRIENDS_T drop AGE_C01; このコマンドで前に作成したAGE_C01が削除される。 「drop」で削除すると確認のメッセージなしに実行されるので注意。
ー> int; 上のコマンドでAGE_C02がAGE_C00に変更されます。 カラム名の変更 既存のテーブルからカラムの名前を変更する場合は、 「alter table テーブル名 change 現在のカラム名 新カラム名 データ型」が基本構造。 mysql> alter table FRIENDS_T change AGE_C02 AGE_C00 ー> int; 上のコマンドでAGE_C02がAGE_C00に変更されます。
カラムの定義の変更 既存のテーブルからカラムのデータ型や属性を変更する場合は、 mysql> alter table FRIENDS_T change AGE_C00 AGE_C00 ー> tinyint; 上のコマンドでデータ型がintからtinyintに変更される。 文字列型のデータのカラムを数値型に変更する場合、数値でないカラムのデータはすべて0に変わってしまうので注意。
「alter table テーブル名 modify カラム名 新データ型」のコマンドで同様にカラムのデータ型と属性だけを変更するとができる。 mysql> alter table FRIENDS_T modify AGE_C00 int; 上のコマンドでAGE_C00のデータ型が intに変更される。
テーブルを操作する テーブル名の変更 「alter table 現在のテーブル名 rename as 新テーブル名」の構文で既存のテーブル名を変更する。 mysql> alter table FRIENDS_T rename as FRIENDS_T2; 上のコマンドで既存のテーブル名FRIENDS_Tが新テーブル名FRIENDS_T2に変更される。
テーブルの削除 テーブルを削除する場合は mysql> drop table FRIENDS_T02; このコマンドでFRIENDS_T02は削除される。 2つ以上のテーブルを一度に削除する場合は,テーブル名を「,」で区切って記述する。
また、指定したテーブルが存在しない場合は 「ERROR 1051:Unknown table」 というエラーが表示されるが、 mysql> drop table if exists TTTT,TTTT2; のように、「if exists」を付け加えると存在しないテーブル名TTTT、TTTT2を削除しようとしてもエラー表示は出ない。
DBを削除する DBに対する可能な操作は、DBの削除だけで、既存のDBの名前を変更することはできない。 DB名を変更したい場合は、mysqldumpでファイルにバックアップし、新しい名前のDBを作った後、その中へバックアップしたファイルの内容を流し込む。
mysql> drop database DB_NAME; 上のコマンドでデータベースDB_NAMEとその中のテーブルすべてが削除される。 また、「if exists」を入れることでDBが存在しなくてもエラー表示は出なくなる。