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)
© Copyright 2024 ExpyDoc