LAMPのお勉強日記 (3)
LAMP環境のお勉強日記
承前
目的
- 自分が何をやったのか記録する
- 自分が何を出来るのか公開する
今日学んだこと
テーブルの改造
前回のテーブルから。
+--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | bang | varchar(10) | YES | | NULL | | | nama | varchar(10) | YES | | NULL | | | tosi | int(11) | YES | | NULL | | +--------+-------------+------+-----+---------+-------+
カラムの定義の変更
「mysql>alter table [テーブル名] modify [カラム名] [データ型]」
ex) mysql>alter table tb1 modify name varchar(100)
これで10文字→100文字に変わりました。
カラムの追加
「mysql>alter table [テーブル名] add [カラム名] [データ型]」
ex) mysql>alter table tb1 add shozoku varchar(30);
desc tb1;
で確認。
カラムの最後に追加されているのがわかる。
+---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | bang | varchar(10) | YES | | NULL | | | nama | varchar(10) | YES | | NULL | | | tosi | int(11) | YES | | NULL | | | shozoku | varchar(30) | YES | | NULL | | +---------+-------------+------+-----+---------+-------+
一番先頭にカラムを追加するには、
「mysql>alter table [テーブル名] add [カラム名] [データ型] first」
ex) mysql>alter table tb1 add shozoku varchar(30) first;
自由な位置にカラムを追加するには、
「mysql>alter table [テーブル名] add [カラム名] [データ型] after [カラム名]」
と、あるカラムの後ろに追加する形になる。
ex) mysql>alter table tb1 add shozoku varchar(30) after nama;
desc tb1;
で確認。
カラム「nama」の後に追加されているのがわかる。
+---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | bang | varchar(10) | YES | | NULL | | | nama | varchar(10) | YES | | NULL | | | shozoku | varchar(30) | YES | | NULL | | | tosi | int(11) | YES | | NULL | | +---------+-------------+------+-----+---------+-------+
カラムの位置変更
一番先頭に位置を変えるには
「mysql>alter table [テーブル名] modify [カラム名] [データ型] first」
ex) mysql>alter table tb1 modify nama verchar(10) date first;
※文字型の場合、verchar(10)のように「()」まで必要
desc tb1;
で確認。
カラム「nama」が先頭に来た。
+---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | nama | varchar(10) | YES | | NULL | | | bang | varchar(10) | YES | | NULL | | | shozoku | varchar(30) | YES | | NULL | | | tosi | int(11) | YES | | NULL | | +---------+-------------+------+-----+---------+-------+
自由な位置に変えるには、
「mysql>alter table [テーブル名] modify [カラム名] [データ型] after [カラム名]」
ex) mysql>alter table tb1 modify tosi int after nama;
※数値型の場合は、「()」は省略可
desc tb1;
で確認。
カラム「tosi」がカラム「nama」の後に来た。
+---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | nama | varchar(10) | YES | | NULL | | | tosi | int(11) | YES | | NULL | | | bang | varchar(10) | YES | | NULL | | | shozoku | varchar(30) | YES | | NULL | | +---------+-------------+------+-----+---------+-------+
カラムの名前と名義の変更
「mysql>alter table [テーブル名] change [変更前カラム名] [変更後カラム名] [変更後データ型]」
ex)カラム「生年月日」seinenをdatetime型で作成したが、時間が不必要なのでdate型に変えた mysql>alter table tb1 add seinen datatime; mysql>alter table tb1 change seinen seinen date;
※変更後のカラム名が変わらない場合も、同じ名前を入れないとダメらしい(Syntax errorが出た)
desc tb1;
で確認。
+---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | bang | varchar(10) | YES | | NULL | | | nama | varchar(10) | YES | | NULL | | | tosi | int(11) | YES | | NULL | | | shozoku | varchar(30) | YES | | NULL | | | seinen | datetime | YES | | NULL | | +---------+-------------+------+-----+---------+-------+ ↓ +---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | bang | varchar(10) | YES | | NULL | | | nama | varchar(10) | YES | | NULL | | | tosi | int(11) | YES | | NULL | | | shozoku | varchar(30) | YES | | NULL | | | seinen | date | YES | | NULL | | +---------+-------------+------+-----+---------+-------+
※もし時間を入力していた場合には、すべて削除される
カラムの削除
「mysql>alter table [テーブル名] drop [カラム名]」
ex)カラム「生年月日」seinenを削除する。 mysql>alter table tb1 drop seinen;
desc tb1;
で確認。
+---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | bang | varchar(10) | YES | | NULL | | | nama | varchar(10) | YES | | NULL | | | tosi | int(11) | YES | | NULL | | | shozoku | varchar(30) | YES | | NULL | | +---------+-------------+------+-----+---------+-------+
データ入力時の注意
たとえばvarchar(10)と10文字に設定してあるところに30文字を入力したらどうなるか?
mysql>insert into tb1 (nama) values('ヨシフ・ヴィサリオノヴィチ・ジュガシヴィリ');
Syntax errorはでない。
が、10文字以降は切り捨てられる。
mysql>select nama from tb1; +----------------------+ | nama | +----------------------+ | sato | | ヨシフ・ヴィサリオノ | +----------------------+
今日はここまで。
次回は「主キー」の設定から。