カラム名の変更、データ型の変更 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 かきく
* 参考にしたサイトは→ こちら です。
これは赤色の文字例です。
これは青色の文字例です。