3-2.データを取り出す 2004年 5月20日(木) 01T6074X 茂木啓悟
データを取り出す DBに納められたデータは,条件を設定して簡単かつ高速に目的のデータを取り出すことができる。 表示順を並べ替えたり,特定のデータだけを表示するといった操作も可能。
テーブルからデータを取り出す テーブルからデータを取り出す際は, 「select カラム名 from DB名 テーブル名」 というselectコマンドを使う。 DB名はあらかじめ「use DB名」で指定しておけば、コマンドを発行するたびに指定する必要はない。
mysql> select * from FRIENDS_T; テーブルに入っているすべてのカラムのレコードを取り出す場合は,次のように * を使い,「全カラムのデータ」を対象とする。 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; +‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ + ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐+ | 住所 | 名前 | | 東京都千代田区・・ | 大友達子 | | : | | : |
mysql> select * from FRIENDS_T order by ID_C; 数値や文字列のデータが納められたカラ を基準にして、カラムの値順にレコードを並 び替えるには、「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人を表示させたい場合 年齢順に並べ替えて,2番目以降に若い人を3人を表示させたい場合 mysql> select NAME_C,AGE from FRIENDS_T2 ‐> order by AGE_C limit 2,3; limit句では数字を重ねて使うことが可能
重複せずにデータを表示(distinct) 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;
mysql> select * from FRIENDS_T where ・ある数値の間の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 もし不確かな個所の文字数がわかっていれば、「_」(アンダーバー)を使うことができる。 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 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)