データの取得
カラムの値を演算した後の値を取得
カラム値を取得した後、別名を付ける(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)



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

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

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