カラム名の変更、データ型の変更 free60

Wednesday,July,10,2013


○データベースを表示させる
show databases;
○データベースに接続する
USE sadachika_shop;
○テーブルを表示させる。
SHOW TABLES;
Tables_in_sadachika_shop
sadachi_allproducts
以下つづく

○○サンプルを作る
mysql> create table sadachika_shop.sadachi_food(sada_id int not null, sada_name varchar(10) default 'none');      *カラム名sada_id INT型 not null(データ無しを許さない), カラム名sada_name VARCHAR型 {default 'none'}設定;
               ↑テーブル
○テーブルを表示させる。
SHOW TABLES;
Tables_in_sadachika_shop
sadachi_allproducts
sadachi_food   *作成された
以下つづく
○テーブルの構造を見る
mysql> show columns from sadachika_shop.sadachi_food;              *columns(新聞など印刷物の)縦の段; 欄.                     
Field          Type         Null   Key    Default    Extra
sada_id        int(11)      NO            NULL                          *Key項目がなし、プライマリキーだとPRIと表示される カラム名sada_id INT型(おそらく数字のみ入力可能)
sada_name      varchar(10)  YES           none                          *Key項目が      カラム名sada_name VARCHAR型 文字にデータを格納する、INT型は数字だけしか使用できない
                           ↑↑not null設定,↑これ何んだろうね

○作成したテーブル(sadachi_food)の定義を確認してみる
mysql> show create table sadachika_shop.sadachi_food\G
*********** 1. row **************
       Table: sadachi_food
Create Table: CREATE TABLE 'sadachi_food'(
 'sada_id' int(11) NOT NULL,                     *カムラの名前sada_id、INT型
 'sada_name' varchar(10) DEFAULT 'none',         *○普通はDEFAULT NULLなんですが DEFAULT 'none'と表示されている。カムラの名前sada_name、VARCHAR型
) ENGINE=InnoDB DEFAULT CHARSET=utf8             *デフォルトでcp932になるみたい 指定する場合は、文字セットと照合順序を指定してデータベース(フォルダ)を作成
1 row in set (0.61 sec)                          *例えば、こんな感じ、忘れないために書いておくmysql> create database sadachika_cp932db character set cp932; 
         *↑デフォルトはInnoDBだが、指定する場合のためにメモを残しておく InnoDBを変えたりするには、mysql> create table sadachika_novel(sada_id int) engine=MyISAM;   *INT型 MyISAMと入力

○データをカラムに入力
mysql> insert into sadachika_shop.sadachi_food(sada_id, sada_name) values(1, '書店');
mysql> insert into sadachika_shop.sadachi_food(sada_id, sada_name) values(2, '薬局');
mysql> insert into sadachika_shop.sadachi_food(sada_id, sada_name) values(3, '食品スーパー');
mysql> insert into sadachika_shop.sadachi_food(sada_id, sada_name) values(4, 'リサイクル店');
mysql> insert into sadachika_shop.sadachi_food(sada_id, sada_name) values(5, null);
mysql> insert into sadachika_shop.sadachi_food(sada_id, sada_name) values(6, '');    
mysql> insert into sadachika_shop.sadachi_food(sada_id) values(7);                   *sada_nameへのデータ入力を止めてみる

○テーブルの中身の表示 
mysql> select * from sadachika_shop.sadachi_food;
sada_id    sada_name
      1    書店
      2    薬局
      3    食品スーパー
      4    リサイクル店
      5    NULL       *DEFAULT 'none'の効果がわからない
      6               *空白values(6, '');
      7    none       *sada_nameへのデータ入力を止めてみる DEFAULT 'none'設定は、こうなるんだ!

○○カラム名の変更、データ型の変更
mysql> alter table sadachika_shop.sadachi_food change sada_id hirayama_id int not null; *名前だけ変更するのであってもあわせて型を入力する。
                                                       ↑旧カラム名   ↑新しく変更するカラム名(hirayama_id)
○テーブルの中身の表示 
mysql> select * from sadachika_shop.sadachi_food;
hirayama_id    sada_name             *カラム名が変わったね
          1    書店
          2    薬局
          3    食品スーパー
          4    リサイクル店
          5    NULL       *DEFAULT 'none'の効果がわからない
          6               *空白values(6, '');
          7    none       *sada_nameへのデータ入力を止めてみる  DEFAULT 'none'設定は、こうなるんだ!

○○カラム名の変更、データ型の変更                                                    ↓{varchar(10)→varchar(20)}
mysql> alter table sadachika_shop.sadachi_food change sada_name hirayama_name varchar(20) default '無記入ですよ By 定近';        *データ型は{VARCHAR型default 'none'}→VARCHAR型'無記入ですよ By 定近'
                                                       ↑旧カラム名   ↑新しく変更するカラム名(hirayama_name)

○テーブルの中身の表示 
mysql> select * from sadachika_shop.sadachi_food;
hirayama_id    hirayama_name             *カラム名が変わったね *カラム名が変わったね
          1    書店
          2    薬局
          3    食品スーパー
          4    リサイクル店
          5    NULL       *DEFAULT 'none'の効果がわからない
          6               *空白values(6, '');
          7    none       *DEFAULT 'none'設定は、こうなるんだ!

○データをカラムに入力
mysql> insert into sadachika_shop.sadachi_food(sada_id) values(8);*ERROR だってカラム名を変更したんだからね
mysql> insert into sadachika_shop.sadachi_food(hirayama_id) values(8);  *改めてhirayama_idで入力してみる

○テーブルの中身の表示 
mysql> select * from sadachika_shop.sadachi_food;
hirayama_id    hirayama_name             *カラム名が変わったね *カラム名が変わったね
          1    書店
          2    薬局
          3    食品スーパー
          4    リサイクル店
          5    NULL       *DEFAULT 'none'の効果がわからない
          6               *空白values(6, '');
          7    none       *DEFAULT 'none'設定は、こうなるんだ!
          8    無記入ですよ By 定近       *DEFAULT '無記入ですよ By 定近'設定は、こうなるんだ!

○テーブルの構造を見る
mysql> show columns from sadachika_shop.sadachi_food;                       *columns(新聞など印刷物の)縦の段; 欄.                     
Field              Type         Null   Key    Default              Extra
hirayama_id        int(11)      NO            NULL                          *Key項目がなし、プライマリキーだとPRIと表示される カラム名sada_id INT型(おそらく数字のみ入力可能)
hirayama_name      varchar(10)  YES           無記入ですよ By 定近          *Key項目が     カラム名sada_name VARCHAR型 文字にデータを格納する、INT型は数字だけしか使用できない
 ↑カラム名が平山に                            ↑データが入力されないときの警告文

○作成したテーブル(sadachi_food)の定義を確認してみる
mysql> show create table sadachika_shop.sadachi_food\G
*********** 1. row **************
       Table: sadachi_food
Create Table: CREATE TABLE 'sadachi_food'(
 'hirayama_id' int(11) NOT NULL,                                 *カムラの名前hirayama_id、INT型
 'hirayama_name' varchar(20) DEFAULT '無記入ですよ By 定近',     *○普通はDEFAULT NULLなんですが DEFAULT '無記入ですよ By 定近'と表示されている。カムラの名前hirayama_name、VARCHAR型
) ENGINE=InnoDB DEFAULT CHARSET=utf8                             *デフォルトでcp932になるみたい 指定する場合は、文字セットと照合順序を指定してデータベース(フォルダ)を作成
1 row in set (0.61 sec)                                          *例えば、こんな感じ、忘れないために書いておくmysql> create database sadachika_cp932db character set cp932; 
         *↑デフォルトはInnoDBだが、指定する場合のためにメモを残しておく InnoDBを変えたりするには、mysql> create table sadachika_novel(sada_id int) engine=MyISAM;   *INT型 MyISAMと入力

○○カラム定義だけを変更する
mysql> alter table sadachika_shop.sadachi_food modify hirayama_id smallint;
                                                       ↑対象のカラム ↑*変更したい型を入力する  {元はINT型 not null(データ無しを許さない)} → SMALLINT型へ変更を行なう
○テーブルの構造を見る
mysql> show columns from sadachika_shop.sadachi_food;
Field              Type         Null   Key    Default              Extra
hirayama_id        smallint(6)  NO            NULL                         *int(11)→smallint(6)になっちゃった 文字?数字?の格納はどうなるんだろう? 
hirayama_name      varchar(10)  YES           無記入ですよ By 定近

○作成したテーブル(sadachi_food)の定義を確認してみる
mysql> show create table sadachika_shop.sadachi_food\G
*********** 1. row **************
       Table: sadachi_food
Create Table: CREATE TABLE 'sadachi_food'(
 'hirayama_id' smallint(6) DEFAULT NULL,                         *カムラの名前hirayama_id、INT型→SMALLINT型へ変更された  NOT NULL→DEFAULT NULLへ変更された  無データの格納が可能に変わった
 'hirayama_name' varchar(20) DEFAULT '無記入ですよ By 定近',     
) ENGINE=InnoDB DEFAULT CHARSET=utf8                             
1 row in set (0.61 sec)


○データをカラムに入力  smallint(6)が気になるので、何か文字を入力してみる
mysql> insert into sadachika_shop.sadachi_food(hirayama_id, hirayama_name) values('あ','あいう');   *ERROR
mysql> insert into sadachika_shop.sadachi_food(hirayama_id, hirayama_name) values('a','あいう');    *ERROR
mysql> insert into sadachika_shop.sadachi_food(hirayama_id, hirayama_name) values(1,'あいう');      *上書きされたかな  数字だけしか入力できないならINT型と同じじゃないのか
mysql> insert into sadachika_shop.sadachi_food(hirayama_name) values('かきく');                     *hirayama_id(smallint型)にデータを入れない場合のテスト

○テーブルの中身の表示 (hirayama_idSMALLINT型)
mysql> select * from sadachika_shop.sadachi_food;
hirayama_id    hirayama_name                                     *カラム名が変わったね *カラム名が変わったね
          1    書店
          2    薬局
          3    食品スーパー
          4    リサイクル店
          5    NULL       *DEFAULT 'none'の効果がわからない
          6               *空白values(6, '');
          7    none       *DEFAULT 'none'設定は、こうなるんだ!
          8    無記入ですよ By 定近                              *DEFAULT '無記入ですよ By 定近'設定は、こうなるんだ!
          1    あいう                                            *重複にはならないんだね
       NULL    かきく


* 参考にしたサイトは→ こちら です。

これは赤色の文字例です。

これは青色の文字例です。