[MYSQL Command Line Client]を起動。(スタート−プログラム−MYSQL)
インストールしたときに管理者権限のパスワードでMYSQLを起動。
mysql> USE test;
Database changed
mysql> DESC syain;
+--------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| syain_code | varchar(3) | YES | | NULL | |
| syain_name | varchar(10) | YES | | NULL | |
| syozoku_code | varchar(3) | YES | | NULL | |
+--------------+-------------+------+-----+---------+-------+
3 rows in set (0.22 sec)
mysql> SELECT syain_code,syain_name,syozoku_code FROM syain;
+------------+------------+--------------+
| syain_code | syain_name | syozoku_code |
+------------+------------+--------------+
| 002 | 山田次郎 | 100 |
| 001 | 山田一郎 | 100 |
| 003 | 相澤仁美 | 100 |
| 004 | 相武紗季 | 200 |
| 005 | 秋山莉奈 | 511 |
| 006 | 安倍なつみ | 520 |
| 007 | 綾瀬はるか | 200 |
| 008 | 新垣結衣 | 400 |
| 009 | 堂本光一 | 510 |
| 010 | 堂本剛 | 520 |
| 011 | 二宮和也 | 610 |
| 012 | 夏帆 | 511 |
| 013 | 山下智久 | 620 |
| 015 | 里田まい | 300 |
+------------+------------+--------------+
14 rows in set (0.16 sec)
この[syain]テーブルからsyain_nameカラムの"山"という文字を含むレコードを抽出してみる。
[syain]テーブルからsyain_nameに"山"を含むものを抽出する。
SELECT * FROM syain WHERE syain_name LIKE '%山%';
mysql> SELECT * FROM syain WHERE syain_name LIKE '%山%';
+------------+------------+--------------+
| syain_code | syain_name | syozoku_code |
+------------+------------+--------------+
| 002 | 山田次郎 | 100 |
| 001 | 山田一郎 | 100 |
| 005 | 秋山莉奈 | 511 |
| 013 | 山下智久 | 620 |
+------------+------------+--------------+
4 rows in set (0.00 sec)
"山"の文字を含む名前の社員を抽出できた。
さらに
[syain]テーブルからsyain_nameに"山"を含まないものを抽出する。
SELECT * FROM syain WHERE syain_name NOT LIKE '%山%';
mysql> SELECT * FROM syain WHERE syain_name NOT LIKE '%山%';
+------------+------------+--------------+
| syain_code | syain_name | syozoku_code |
+------------+------------+--------------+
| 003 | 相澤仁美 | 100 |
| 004 | 相武紗季 | 200 |
| 006 | 安倍なつみ | 520 |
| 007 | 綾瀬はるか | 200 |
| 008 | 新垣結衣 | 400 |
| 009 | 堂本光一 | 510 |
| 010 | 堂本剛 | 520 |
| 011 | 二宮和也 | 610 |
| 012 | 夏帆 | 511 |
| 015 | 里田まい | 300 |
+------------+------------+--------------+
10 rows in set (0.00 sec)
また、"相"から始まる名前の社員を抽出するには、
[syain]テーブルからsyain_nameに"相"から始まるものを抽出する。
SELECT * FROM syain WHERE syain_name LIKE '相%';
mysql> SELECT * FROM syain WHERE syain_name LIKE '相%';
+------------+------------+--------------+
| syain_code | syain_name | syozoku_code |
+------------+------------+--------------+
| 003 | 相澤仁美 | 100 |
| 004 | 相武紗季 | 200 |
+------------+------------+--------------+
2 rows in set (0.00 sec)
2文字目が"田"と"本"の文字の社員を抽出するには、
[syain]テーブルからsyain_nameの2文字目が"田"と"本"ものを抽出する。
SELECT * FROM syain WHERE
syain_name LIKE '_田%' OR
syain_name LIKE '_本%';
mysql> SELECT * FROM syain WHERE
-> syain_name LIKE '_田%' OR
-> syain_name LIKE '_本%';
+------------+------------+--------------+
| syain_code | syain_name | syozoku_code |
+------------+------------+--------------+
| 002 | 山田次郎 | 100 |
| 001 | 山田一郎 | 100 |
| 009 | 堂本光一 | 510 |
| 010 | 堂本剛 | 520 |
| 015 | 里田まい | 300 |
+------------+------------+--------------+
5 rows in set (0.00 sec)
そのほかのパターンもさまざまあるようだが、個人的にはほとんど上記パターンを利用しているのみである。レコード抽出の場合は、これで十分であると感じている。(まぁ、必要に応じて都度調べればいいのだし)
まとめると、
あいまい条件で抽出する場合は、WHERE句で LIKE(NOT LIKE)により指定する。文字の指定として、"A%"とするとAの後は何でもいいという意味になり、"%A"とすると末尾がAのものという意味になる。"%A%"ならば、Aを含むものとなる。
また、文字桁を指定する場合は、"_"を利用する。"__A__"とした場合は、5文字のもので3文字目がAのものということになる。複合的に"__A%"とすると、3文字目がAのものということになる。
言葉で説明すると難しいかもしれないが、実際、データで試してみるとわかりやすいし、利用範囲が広がると思う。
QUITで[MYSQL Command Line Client]を終了。
【MySQLの最新記事】

