*ブログに戻る →ここ です。


サブクエリ
条件に一致する値を他のテーブルのカラムから探し出す。 free90

Thursday,August,1,2013

今回2つのデータベースdbを使う
sadachika_shop
kittaka_shop

○特定のデータベース内のテーブル 
SHOW TABLES FROM sadachika_shop;
SHOW TABLES FROM Kittaka_shop;

○テーブル設定メモ
VARCHAR型なら、unique その他のオプション default 'データなし', default 0, not null(データなし を許さない)
INT型なら、primary key

○テーブルを作る       ↓データベース名     ↓テーブル名  ↓カラム名                              ↓VARCHAR型(文字を格納する型)
mysql> create table sadachika_shop.sadachi_students (sada_id int not null primary key, sada_name varchar(10) default '氏名データなし');
Query OK, 0 rows affected (0.92 sec)                          ↑INT型      ↑プライマリー(重複を許さない)      ↑デフォルト(データが格納されなければ表示されるメッセージ)
mysql> create table Kittaka_shop.kitta_result (kit_id int not null primary key, kit_score int default 0, kit_d date default '日時データなし');
ERROR  デフォルト設定に問題があったみたい。取り除くと作成できた。
mysql> create table Kittaka_shop.kitta_result (kit_id int not null primary key, kit_score int default 0, kit_d date);
Query OK, 0 rows affected (0.25 sec)

○カラムの構造を見る
mysql> show columns from sadachika_shop.sadachi_students;            
Field          Type         Null   Key    Default        Extra
sada_id        int(11)      NO     PRI    NULL                  
sada_name      varchar(10)  YES           氏名データなし          
2 rows in set (0.02 sec)

mysql> show columns from Kittaka_shop.kitta_result;            
Field          Type         Null   Key    Default        Extra
kit_id         int(11)      NO     PRI    NULL                  
kit_score      int(11)      YES           0   
kit_d          date         YES           NULL       
3 rows in set (0.06 sec)

○値を入力する
mysql> insert into sadachika_shop.sadachi_students values(1, '長谷川'),(2, '稲垣'),(3, '定近'), 
    ->(4, '橘高'),(5, '平山'),(6, '藤原'), (7, '松本'),(8, '小林'),
    ->(9, '三谷'),(10, '坂本'),(11, '楠'),(12, '中島');
Query OK, 12 rows affected (0.03 sec)
Records: 12 Duplicates: 0 Warnings: 0

mysql> insert into Kittaka_shop.kitta_result values(1, 580,20130801),(2, 604,20130801),(3, 320,20130801), 
    ->(4, 480,20130801),(5, 665,20130801),(6, 550,20130801), (7, 420,20130801),(8, 230,20130801),
    ->(9, 140,20130801),(10, 89,20130801),(11, 365,20130801),(12, 136,20130801);
Query OK, 12 rows affected (0.01 sec)
Records: 12 Duplicates: 0 Warnings: 0

○テーブルの中身の表示 
mysql> select * from sadachika_shop.sadachi_students;
sada_id   sada_name
1         長谷川
2         稲垣
3         定近
4         橘高
5         平山
6         藤原
7         松本
8         小林
9         三谷
10        坂本
11        楠
12        中島
12 rows in set (0.05 sec)

mysql> select * from Kittaka_shop.kitta_result;
kit_id  kit_score  kit_d
1       580        2013-08-01
2       604        2013-08-01
3       320        2013-08-01
4       480        2013-08-01
5       665        2013-08-01
6       550        2013-08-01
7       420        2013-08-01
8       230        2013-08-01
9       140        2013-08-01
10       89        2013-08-01
11      365        2013-08-01
12      136        2013-08-01

○○○条件に一致する値を他のテーブルのカラムから探し出す。
「kitta_result」テーブルの「kit_score」カラムの値が一番大きいデータを取得
                      ↓データベース名  ↓テーブル名         ↓カラム名
mysql> select * FROM Kittaka_shop.kitta_result ORDER BY kit_score DESC LIMIT 3;
kit_id  kit_score  kit_d                                           ↑大きい方から下り、3つ選ぶ
5       665        2013-08-01     *ここが1番数が大きい  次はこの条件で他のテーブル値を探し出す
2       604        2013-08-01
1       580        2013-08-01
3 rows in set (0.00 set)

○○○条件に一致する値を他のテーブルのカラムから探し出す。
mysql> select * FROM sadachika_shop.sadachi_students  
    -> WHERE sada_id = (select kit_id FROM Kittaka_shop.kitta_result ORDER BY kit_score DESC LIMIT 1);
kit_id  kit_score                                                                           ↑大きい方から下り、1つ選ぶ
5         平山
1 rows in set (0.00 set)







メモ○カラム名を変更する
kiku_name→sada_name
mysql> alter table sadachika_shop.sadachi_students change kiku_name sada_name varchar(10) default '氏名データなし';      *名前だけ変更するのであってもあわせて型を入力する。
                                                 旧カラム名↑         ↑新しく変更するカラム名(kiku_name→sada_name)





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

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

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