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