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を置く。 2.SQLコマンドを発行し,データを取り込む。 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」で削除すると確認のメッセージなしに 実行されるので注意。 • カラム名の変更 既存のテーブルからカラムの名前を変更 する場合は、 「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が存在 しなくてもエラー表示は出なくなる。
© Copyright 2024 ExpyDoc