データの取得
カラムの値を演算した後の値を取得
カラム値を取得した後、別名を付ける(AS句) free76
Sunday,July,21,2013
○テーブルの中身の表示 (sadachi_seiseki)
mysql> select * from sadachika_shop.sadachi_seiseki;
sada_name sada_suugaku sada_eigo sada_kokugo
定近 39 40 52
鈴木 75 91 53
佐藤 69 71 83
宮崎 92 81 87
橘高 71 47 99
松本 30 31 35
長谷川 50 51 52
7 rows in set (0.00 sec)
///////////////////ここまでの値の格納は下記/////////////////////////
○○カラムの値に0.8を乗算した結果を取得
SELECT sada_name, sada_suugaku * 0.8, sada_eigo * 0.8, sada_kokugo * 0.8, sada_kokugo * 0.8 FROM sadachika_shop.sadachi_seiseki;
↑表示するカラムの順番 ↑カラムの値を20OFF ↑カラムの値を20OFF ↑20OFF ↑参照するdb ↑参照するテーブル名
○テーブルの中身の表示 (sadachi_seiseki)
mysql> select * from sadachika_shop.sadachi_seiseki; ↓間違えて同じカラム名をセレクトしていた でもカラムを任意の順番に表示する練習になった。
sada_name sada_suugaku * 0.8 sada_eigo * 0.8 sada_kokugo * 0.8 sada_kokugo * 0.8
定近 31.2 32.0 41.6 41.6
鈴木 60.0 72.8 42.4 42.4
佐藤 55.2 56.8 66.4 66.4
宮崎 73.6 64.8 69.6 69.6
橘高 56.8 37.6 79.2 79.2
松本 24.0 24.8 28.0 28.0
長谷川 40.0 40.8 41.6 41.6
○○テーブルに格納された値を用いて、カラムの合計と平均を取得する。
mysql> select sada_name, sada_suugaku + sada_eigo + sada_kokugo,
-> round((sada_suugaku + sada_eigo + sada_kokugo) / 3) from sadachika_shop.sadachi_seiseki;
↑かっこ付けるときにいるみたい
sada_name sada_suugaku + sada_eigo + sada_kokugo round((sada_suugaku + sada_eigo + sada_kokugo) / 3)
定近 131 44(63.6666666666) *小数点以下は表示されない
鈴木 219 73
佐藤 223 74(74.3333333333) *小数点以下は表示されない
宮崎 260 87(86.6666666666) *小数点以下は表示されない
橘高 217 72(72.3333333333) *小数点以下は表示されない
松本 96 32
長谷川 153 51
7 rows in set (0.06 sec)
○○カラムの値を演算した後の値に別名を付ける(AS句)。表示のみ。
mysql> select sada_name,
-> sada_suugaku + sada_eigo + sada_kokugo as sada_goukei,
-> round((sada_suugaku + sada_eigo + sada_kokugo) / 3) as sada_heikin
-> from sadachika_shop.sadachi_seiseki;
sada_name sada_goukei sada_heikin *表示する時だけだが、カラムの名前を任意に変更できる
定近 131 44(63.6666666666)
鈴木 219 73
佐藤 223 74(74.3333333333)
宮崎 260 87(86.6666666666)
橘高 217 72(72.3333333333)
松本 96 32
長谷川 153 51
7 rows in set (0.00 sec)
(AS句)ってデータの引越しするとき使えるかな?
今度やってみよう。
お手本 メモ
[例1] salesカラムをtokyosalesカラムとして取得
SELECT sales AS tokyosales FROM uriage WHERE branch = 'Tokyo';
[例2] sansuuカラムの値とeigoカラムの値の平均をheikinカラムとして取得
SELECT (sansuu + eigo) / 2 AS heikin FROM seiseki;
使い方が分らない
[例3] valueカラムの値の絶対値を取得
SELECT ABS(value) FROM valuelist;
//////////////////////悪戦苦闘 別記///////////////////////
○データベースを表示させる。
MySQL> show databases;
○特定のデータベース内のテーブル
SHOW TABLES FROM sadachika_books;
SHOW TABLES FROM sadachika_shop;
○テーブルを作る
重複を許さない場合
VARCHAR型なら、unique その他のオプション default 'データなし', default 0, not null(データなし を許さない)
INT型なら、primary key
↓db ↓テーブル名 ↓カラム名 ↓VARCHAR型 ↓ユニークキー設定↓デフォルト設定
mysql> create table sadachika_shop.sadachi_seiseki(sada_name varchar(20) unique default 'データなし',
-> sada_suugaku int default 0, sada_eigo int default 0, sada_kokugo int default 0);
↑カラム名 ↑INT型 ↑デフォルト設定0
Query OK, 0 rows affected (1.03 sec)
○カラムの構造を見る
mysql> show columns from sadachika_shop.sadachi_seiseki; *ユニークキー設定だとNullがYESのままだね。文字型の重複は許さないが、データ無しは許可なんだね
Field Type Null Key Default Extra *ちなみにプライマリーにすると自動的にNULL(データなし)が無効になる。そりゃNULLを許すと重複するものね
sada_name varchar(20) YES UNI データなし *Key項目はUNI Defaultは'データなし'へと設定された。
sada_suugaku int(11) YES 0
sada_eigo int(11) YES 0
sada_kokugo int(11) YES 0
4 rows in set (0.03 sec)
INT型はデータなし ではなくゼロを格納したい。そのためテーブル設定をおこないます。
○○カラム定義だけを変更する
mysql> alter table sadachika_shop.sadachi_seiseki modify sada_eigo int(11) not null default 0;
↑対象のカラム ↑*変更したい型を入力する {元はINT型 not null(データ無しを許さない)} → SMALLINT型へ変更を行なう
Query OK, 0 rows affected (0.20 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> alter table sadachika_shop.sadachi_seiseki modify sada_kokugo int(11) not null default 0;
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> alter table sadachika_shop.sadachi_seiseki modify sada_suugaku int(11) not null default 0;
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
○カラムの構造を見る
mysql> show columns from sadachika_shop.sadachi_seiseki;
Field Type Null Key Default Extra
sada_name varchar(20) YES UNI データなし
sada_suugaku int(11) NO 0 *これでNULLの格納が出来なくなった。整数のみ格納できる。
sada_eigo int(11) NO 0 *これでNULLの格納が出来なくなった。整数のみ格納できる。
sada_kokugo int(11) NO 0 *これでNULLの格納が出来なくなった。整数のみ格納できる。
4 rows in set (0.03 sec)
○値の入力(連続入力)(全入力のため省略文)
mysql> insert into sadachika_shop.sadachi_seiseki values('定近', default(sada_suugaku), default(sada_eigo), default(sada_kokugo)),
('鈴木', default, default, default), ('佐藤', default, default, default), ('宮崎', default, 50, 50), ('橘高', 50, 50, 50),
('松本', 50, 50, 50), ('長谷川', 50, 50, 50);
Query OK, 7 rows affected (0.03 sec)
Records: 7 Duplicates: 0 Warnings: 0
○テーブルの中身の表示 (sadachi_seiseki)
mysql> select * from sadachika_shop.sadachi_seiseki; *全てのカラムの値を取得する場合には、カラム名の代わりに「*」を記述する
sada_name sada_suugaku sada_eigo sada_kokugo
定近 0 0 0
鈴木 0 0 0
佐藤 0 0 0
宮崎 0 50 50
橘高 50 50 50
松本 50 50 50
長谷川 50 50 50
7 rows in set (0.01 sec)
○入力アップデート (もしも同じ値が合った場合上書きする設定)
mysql> insert into sadachika_shop.sadachi_seiseki values('定近', 39, 40, 52), ('鈴木', 75, 91, 53), ('佐藤', 69, 71, 83),
-> ('宮崎', 92, 81, 87), ('橘高', 71, 47, 99), ('松本', 30, 31, 35), ('長谷川', 50, 51, 52)
-> on duplicate key update sada_name=values(sada_name), sada_suugaku=values(sada_suugaku), sada_eigo=values(sada_eigo), sada_kokugo=values(sada_kokugo);
↑もしも同じ値があったらカラム(sada_name)参照上書き
Query OK, 14 rows affected (0.03 sec)
Records: 7 Duplicates: 7 Warnings: 0
○テーブルの中身の表示 (sadachi_seiseki)
mysql> select * from sadachika_shop.sadachi_seiseki;
sada_name sada_suugaku sada_eigo sada_kokugo
定近 39 40 52 *全て上書きされました
鈴木 75 91 53
佐藤 69 71 83
宮崎 92 81 87
橘高 71 47 99
松本 30 31 35
長谷川 50 51 52
7 rows in set (0.00 sec)
もう一度上書きを繰り返すと
Query OK, 0 rows affected (0.03 sec)
Records: 7 Duplicates: 0 Warnings: 0
○テーブルの中身の表示 (sadachi_seiseki)
同じでした。
1回目の格納点数
定近'0,0,0
鈴木'0,0,0
佐藤'0,0,0
宮崎'0,50,50
橘高'50,50,50
松本'50,50,50
長谷川'50,50,50
2回目上書きします
定近'39,40,52
鈴木'75,91,53
佐藤'69,71,83
宮崎'92,81,87
橘高'71,47,99
松本'30,31,35
長谷川'50,51,52
おさらいメモ
○○カラム定義だけを変更する
mysql> alter table sadachika_shop.sadachi_food modify hirayama_id smallint;
↑対象のカラム ↑*変更したい型を入力する {元はINT型 not null(データ無しを許さない)} → SMALLINT型へ変更を行なう
○○カラム名の変更、データ型の変更
mysql> alter table sadachika_shop.sadachi_food change sada_id hirayama_id int not null; *名前だけ変更するのであってもあわせて型を入力する。
↑旧カラム名 ↑新しく変更するカラム名(hirayama_id)
* 参考にしたサイトは→ こちら です。
これは赤色の文字例です。
これは青色の文字例です。