フィールド選択
全レコードの全フィールド
1 |
SELECT * FROM [テーブル]; |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
mysql> select * from test; +-------+------+--------+ | name | age | nation | +-------+------+--------+ | John | 35 | US | | Alex | 40 | NZ | | Luice | 29 | US | | Alice | 23 | UK | | Sala | 25 | JP | +-------+------+--------+ 3 rows in set (0.00 sec) mysql> |
指定したフィールド
1 |
SELECT [フィールド](, [フィールド], ...) FROM [テーブル]; |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
mysql> select nation, name, nation from test; +--------+-------+--------+ | nation | name | nation | +--------+-------+--------+ | US | John | US | | NZ | Alex | NZ | | US | Luice | US | | UK | Alice | UK | | JP | Sala | JP | +--------+-------+--------+ 3 rows in set (0.00 sec) mysql> |
レコードの条件検索
1 |
SELECT [フィールド選択] FROM [テーブル] WHERE [検索条件]; |
文字列検索
たとえば国名で検索する場合。
1 2 3 4 5 6 7 8 9 10 |
mysql> select * from test where nation='US'; +-------+------+--------+ | name | age | nation | +-------+------+--------+ | John | 35 | US | | Luice | 29 | US | +-------+------+--------+ 2 rows in set (0.00 sec) mysql> |
LIKEによるあいまい検索
LIKE
指定で任意の文字・文字列を含む検索ができる。
1 |
WHERE [フィールド] LIKE [検索文字列] |
任意の一文字
アンダースコア('_'
)は任意の一文字に相当。
1 2 3 4 5 6 7 8 9 |
mysql> select * from test where nation like 'U_'; +-------+------+--------+ | name | age | nation | +-------+------+--------+ | John | 35 | US | | Luice | 29 | US | | Alice | 23 | UK | +-------+------+--------+ 3 rows in set (0.00 sec) |
任意長の文字列
任意長(0文字以上)の文字列に対応するのは'%'
。
1 2 3 4 5 6 7 8 9 10 |
mysql> select * from test where name like 'A%'; +-------+------+--------+ | name | age | nation | +-------+------+--------+ | Alex | 40 | NZ | | Alice | 23 | UK | +-------+------+--------+ 2 rows in set (0.00 sec) mysql> |
数値検索
年齢の範囲で検索する場合。
1 2 3 4 5 6 7 8 9 10 |
mysql> select * from test where age>30; +------+------+--------+ | name | age | nation | +------+------+--------+ | John | 35 | US | | Alex | 40 | NZ | +------+------+--------+ 2 rows in set (0.00 sec) mysql> |
上限と下限で検索する場合、AND
で複数条件を結ぶ。
1 2 3 4 5 6 7 8 9 10 11 |
mysql> select * from test where age>=25 and age <= 35; +-------+------+--------+ | name | age | nation | +-------+------+--------+ | John | 35 | US | | Luice | 29 | US | | Sala | 25 | JP | +-------+------+--------+ 3 rows in set (0.00 sec) mysql> |
同じ検索条件をBETWEEN
で指定できる。
1 2 3 4 5 6 7 8 9 |
mysql> select * from test where age between 25 and 35; +-------+------+--------+ | name | age | nation | +-------+------+--------+ | John | 35 | US | | Luice | 29 | US | | Sala | 25 | JP | +-------+------+--------+ 3 rows in set (0.00 sec) |
対象列挙
IN(...)
でカンマで区切った値の何れかと一致するレコードが抽出される。
1 2 3 4 5 6 7 8 9 10 |
mysql> select * from test where nation in('UK', 'NZ'); +-------+------+--------+ | name | age | nation | +-------+------+--------+ | Alex | 40 | NZ | | Alice | 23 | UK | +-------+------+--------+ 2 rows in set (0.00 sec) mysql> |