システムを作るとき、多くのデータを扱います。それらのデータを検索・更新などの活用をしやすくしたものを「データベース」といいます。
##7.1 DBの操作
データの登録(Create)・検索(Read)・更新(Update)・削除(Delete)の4つの処理を合わせて「CRUD(クラッド)」といいます。
PHPでデータベースを利用する場合、データベースへの接続・SQL文の実行・データベースの接続切断という流れで使用する。
##7.2 SQL
データベースに履いているデータの操作をするとき、SQL文を実行する。
###INSERT文
データをDBに登録する場合、INSERT命令をを実行します。
DBのテーブルにデータを登録する(INSERT)ときは、以下のように記述する。
//例)
INSERT INTO テーブル名(カラム名1, カラム名2, ... ) VALUES ("値1", "値2", ... );
テーブル名には、データを格納したいテーブル名を指定します。カラム名と値は、対応する順に指定してあげましょう。実際は以下のように記述します。
INSERT INTO `ccm` (`member_name`) VALUES (" /*自分の名前*/ ");
###SELECT文
テーブルからデータを取得(SELECT)するときは、以下のように記述する。
SELECT 取得したいカラム名1, 取得したいカラム名2, ... FROM テーブル名 WHERE 絞り込み条件;
すべてのカラムを取得したい場合、アスタリスク「*」を用います。
また、
絞り込み条件
(1) 条件
文字列による絞り込み条件
・カラム名 = 検索文字
カラムの値と検索したい文字列が完全一致するデータの表示
WHERE `member_name` = "hoge"
・ カラム名 LIKE 検索文字(あいまい検索)
カラムの値に検索したい文字列を含むデータの表示
WHERE `member_name` LIKE "%hoge%"
WHERE `member_name` LIKE %foo%
-> 検索したい文字列に「foo」を含んでいる(部分一致)
WHERE `member_name` LIKE fuga%
-> 検索したい文字列が「fuga」から始まる文字列(前方一致)
WHERE `member_name` LIKE var%
-> 検索したい文字列が「var」で終わる文字列(後方一致)
数値による絞り込み条件
記述 | 意味 |
---|---|
WHERE `member_id` < 7 |
member_idカラムが7より小さいレコードの表示 |
WHERE `member_id` > 7 |
member_idカラムが7より大きいレコードの表示 |
WHERE `member_id` >= 7 |
member_idカラムが7以下のレコードを表示 |
WHERE `member_id` <= 7 |
member_idカラムが7以上レコードを表示 |
(2) データの取得数の制限
___LIMIT___句を用いることで、検索結果を何件取得するのかという指定をすることができる。
SELECT * FROM `members` LIMIT 5
//検索結果としては5件のみが取得できる
(3) データ件数の取得
___COUNT___句を用いることで、検索結果を何件取得できたのかを知ることができる。
SELECT COUNT(*) FROM `members`
(4) データの並び替え
___ORDER BY___を用いることで、idの昇順・降順を指定することができます。
SELECT * FROM `members` ORDER BY `member_id` ASC; //(昇順);
SELECT * FROM `members` ORDER BY `member_id` DESC; //(降順)
(5) テーブル結合
複数のテーブルから1つのテーブルに作り変えることができ、これを用いることでテーブルの関係性を持ったデータの取得ができる。
SELECT カラム名1, カラム名2, ... FROM テーブル名1 LEFT JOIN テーブル名2 ON テーブル名1.フィールド名 = テーブル名2.フィールド名
WHERE 条件
###UPDATE文
テーブルにあるデータの更新(UPDATE)するときは、以下のように記述する。
UPDATE テーブル名 SET カラム名1="値1", カラム名2="値2", ... WHERE 条件;
実際にmembersテーブルのデータを更新してみましょう。
UPDATE `members` SET `member_name` = "hoge" WHERE `member_id` = 3;
//member_id = 3のmember_nameが櫻井に更新される
条件はSELECT文と同じで、更新対象のレコードの絞り込みで用います。 条件を記述しないと、全てのレコードが更新されてしまうので注意が必要です。
###DELETE文
テーブルにあるデータを削除(DELETE)するときは、以下のように記述する。
DELETE FROM テーブル名 WHERE 条件;
実際にmembersテーブルのデータを1件削除してみましょう。
DELETE FROM `members` WHERE `member_id` = 1;
//member_id = 1のレコードが削除される
条件はSELECT文と同じで、削除対象のレコードの絞り込みで用います。 条件を記述しないと、全てのレコードが削除されてしまうので注意が必要です。