3-3.テーブルを更新する

3-2.データを取り出す
2004年 5月20日(木)
01T6074X
茂木啓悟
データを取り出す
• DBに納められたデータは,条件を設定して
簡単かつ高速に目的のデータを取り出す
ことができる。
• 表示順を並べ替えたり,特定のデータだけ
を表示するといった操作も可能。
テーブルからデータを取り出す
• テーブルからデータを取り出す際は,
「select カラム名 from DB名 テーブル
名」
というselectコマンドを使う。
• DB名はあらかじめ「use DB名」で指定し
ておけば、コマンドを発行するたびに指定
する必要はない。
テーブルに入っているすべてのカラムの
レコードを取り出す場合は,次のように * を
使い,「全カラムのデータ」を対象とする。
mysql> select * from FRIENDS_T;
+‐ ‐ ‐ ‐+ ‐ ‐ ‐ ‐ ‐ ‐ + ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ +
| ID_C | NAME_C | ADD_C
|
+‐ ‐ ‐ ‐+ ‐ ‐ ‐ ‐ ‐ ‐ + ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ +
|
9 | 友竹大雪 | 大阪府 ・ ・ ・ |
| : |
:
|
:
|
+‐ ‐ ‐ ‐+ ‐ ‐ ‐ ‐ ‐ ‐ + ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ +
・IDのカラム(ID_C)だけを表示させたい場
合
mysql> select ID_C from FRIENDS_T;
・複数のカラムのレコードを取り出す場合
mysql> select ADD_C,NAME_C from FRIENDS_T;
カラムの表示順序は、selectの後に指定す
るカラムの順番と同じになる。
• 取り出したレコードのカラム名を別のカラム
名で表示させる場合
mysql> select ADD_C as “住所”,NAME_C as “名前”
‐>from FRIENDS_T;
+‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ + ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐+
| 住所
| 名前
+‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ + ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐+
| 東京都千代田区・・ | 大友達子
|
:
| |
:
+‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ + ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐+
|
|
|
並び替え(order by)
数値や文字列のデータが納められたカラ
を基準にして、カラムの値順にレコードを並
び替えるには、「order by カラム名」を使用す
る。
mysql> select * from FRIENDS_T order by ID_C;
並びはID番号順で、ID番号の表示は必
要ないという場合
mysql> select NAME_C from FRIENDS_T order by
ID_C;
降順で表示させる場合
mysql> select ID_C from FRIENDS_ T order by ID_C desc;
指定の数だけデータを表示(limit
句)
limit句は, order byを使って並べ替えた結
果セットにおいて,上から何番目までのデー
タを取り出すかという指定を行う句です。
mysql> select NAME_C,AGE_C from
‐> FRIENDS_T2 order by AGE_C limit 5;
年齢順に並べ替えて,2番目以降に若い人
を3人を表示させたい場合
mysql> select NAME_C,AGE from FRIENDS_T2
‐> order by AGE_C limit 2,3;
limit句では数字を重ねて使うことが可能
重複せずにデータを表示
(distinct)
distinctを使って指定したカラムのデータを
重複せずに表示できる。つまり,2回以上出
現するデータは一度だけ表示される。
mysql> select distinct BLOOD_C from FRIENDS_T2;
• 条件を使ったデータの検索(where句)
条件の設定には,selectコマンドに続けて
where句を使う。
• 比較演算子
比較演算子は,数値データが大きい小さい
などの条件を設定する場合に使用し,カラ
ム名とキーワードを結びつける。
比較演算子の一覧
column_name > “DATE” DATEより大きい
column_name < “DATE” DATEより小さい
column_name >= “DATE” DATE以上
column_name <= “DATE” DATE以下
column_name = “DATE” DATEと等しい
column_name < > “DATE” DATEと等しくない
・ID_Cが「1」の人を表示する場合
mysql> select * from FRIENDS_T where ID_C = 1;
・名前が「大友達子」であるレコードを取り出
す場合
mysql> select * from FRIENDS_T where NAME_C = “大友達
子”;
論理演算子and,&&
2つ以上の条件を満たすレコードを検索す
る場合は,andを使います。
mysql> select * from FRIENDS_T where NAME_C
‐> = “大友達子” and ID_C = 1;
・ある数値の間のID番号を取り出す場合
mysql> select * from FRIENDS_T where
‐> ID_C >= 4 and ID_C <= 7;
&&とandは全く同義
論理演算子or,||
2つ以上の条件が設定されていて,その中
のいずれかの条件に合致するレコードを
探す場合orという演算子を使う。
mysql> select * from FRIENDS_T where NAME_C = “大友
‐> 達子” or NAME_C = “小友達夫”
orと||は全く同義
論理演算子not
• notはwhere句の中で使い,not以下で指定し
た検索条件を打ち消す。
• notを使うことで,検索条件式に合わないレ
コードを表示する。
mysql> select * from FRIENDS_T where
‐> not (NAME_C = “大友達子”);
あいまい検索like
• あいまい検索は「like」と「%」を使う。
• %は「ワイルドカード」と呼ばれ,%の場所に
「何かの文字が入る」ことを示す。
mysql> select * from FRIENDS_T where
ADD_C like “東京都千代田区%”;
• もし不確かな個所の文字数がわかってい
れば、「_」(アンダーバー)を使うことができ
る。
mysql> select * from FRIENDS_T where
‐> NAME_C like “_友%”;
• あいまい検索を行いたいデータに%が含ま
れる場合、検索キーワードに「\」を組み合
わせる。
mysql> select * from ITEM_T where
‐> NAME like “100\%%”;
Between述語とin述語
指定された数値や文字列の範囲に当て
はまるレコードを取り出す方法。
between~and~で範囲を指定すると、その範
囲内の数値を持つレコードが表示される。
mysql> select * from FRIENDS_T where
‐> ID_C between 5 and 8;
between述語を使用した条件式は、in述語
で書き換えることが可能。
mysql> select * from FRIENDS_T where
‐> ID_C in(5,6,7,8);
・in述語では、連続しない数値や、アルファ
ベット、文字列を指定することも可能。
・テーブルにないデータが()の中のリストに
入っていてもそれを無視し、該当のもの
だけが結果セットとして表示される。
is null と is not null
・データが入っていないレコードを探す場
合、
Null値を使う。
・空白(スペース)や0(ゼロ)は、Null値では
ない。
mysql> select * from FRIENDS_T where
‐> ID_C is null;
empty set(0.00 sec)