reponの忘備録

「喉まででかかってる」状態を解消するためのメモ

LAMPのお勉強日記 (3)

LAMP環境のお勉強日記

目的

  • 自分が何をやったのか記録する
  • 自分が何を出来るのか公開する

経過

まず、MySQLの勉強をする(その後、PHPとの連携の勉強に移る予定)。

XAMPPにより、コマンドプロンプトで作業する。

リレーショナルデータベースとは(再掲)



今日学んだこと

テーブルの改造
前回のテーブルから。

+--------+-------------+------+-----+---------+-------+
| 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                 |
| ヨシフ・ヴィサリオノ |
+----------------------+


今日はここまで。


次回は「主キー」の設定から。

おしらせ

つながり合うSNS

http://http://survive-sns.jp/

メンバー募集中です!


サーバを新たに立て、一新した「サバイブSNS2.0」に、ぜひご加入ください!