2012年8月16日木曜日

5.2 データの検索

データの検索もSQL文で行います。

5.2.1 SELECT文の基本


データベース内のレコードを検索するには、SQLコマンドのSELECTを使い
ます。基本的な書式は次のとおりです。
SELECT 列名FROM テーブル名;
次の例では、staffテーブルのname列とage列を出力します。

mysql> SELECT name,age FROM staff;
+-----------+------+
| name | age |
+-----------+------+
| Sato | 23 |
| Suzuki | 24 |
| Takahashi | 28 |
| Tanaka | 26 |
| Watanabe | 30 |
+-----------+------+
列名に「*」を指定すると、すべての列が出力されます。

mysql> SELECT * FROM staff;
+----+-----------+------+------+
| id | name | age | bid |
+----+-----------+------+------+
| 1 | Sato | 23 | 1 |
| 2 | Suzuki | 24 | 2 |
| 3 | Takahashi | 28 | 1 |
| 4 | Tanaka | 26 | 3 |
| 5 | Watanabe | 30 | 2 |
+----+-----------+------+------+
列名を表示するときに、ASを使って別名を付けることもできます。

mysql> SELECT name as '名前' ,age as '年齢' FROM staff;
+-----------+--------+
| 名前| 年齢|
+-----------+--------+
| Sato | 23 |
| Suzuki | 24 |
| Takahashi | 28 |
| Tanaka | 26 |
| Watanabe | 30 |
+-----------+--------+


5.2.2 検索条件の指定

検索条件を指定するには、SELECTに続けてWHERE句を使います。
SELECT 列名FROM テーブル名WHERE 検索条件;
次の例では、age列が25未満のレコードを出力します。

mysql> SELECT * FROM staff WHERE age <= 25;
+----+--------+------+------+
| id | name | age | bid |
+----+--------+------+------+
| 1 | Sato | 23 | 1 |
| 2 | Suzuki | 24 | 2 |
+----+--------+------+------+
条件には、以下の表のような記号を利用することができます。


条件に指定できる記号
=   等しい
!=  等しくない
IN  いずれかが含まれる
ある文字列を含むレコードを検索したい場合は、LIKEで条件を指定します。
SELECT 列名FROM テーブル名WHERE 列名LIKE 条件;
次の例では、name列が「T」で始まるレコードを出力します。

mysql> SELECT * FROM staff WHERE name LIKE 'T%';
+----+-----------+------+------+
| id | name | age | bid |
+----+-----------+------+------+
| 3 | Takahashi | 28 | 1 |
| 4 | Tanaka | 26 | 3 |
+----+-----------+------+------+


「%」は任意の文字列を表すワイルドカード文字です。「_」は任意の1文字
を表します。SQLでは「*」や「?」ではありませんので注意してください。
なお、「~以外」で検索したいときは、LIKEの代わりに「NOT LIKE」を使います。

mysql> SELECT * FROM staff WHERE name NOT LIKE 'T%';
+----+----------+------+------+
| id | name | age | bid |
+----+----------+------+------+
| 1 | Sato | 23 | 1 |
| 2 | Suzuki | 24 | 2 |
| 5 | Watanabe | 30 | 2 |
+----+----------+------+------+







0 件のコメント:

コメントを投稿