基本の検索の構文
1.基本的な検索文の形(SELECT句とFROM句)
SELECT *
FROM テーブル名
FROM句はテーブルを指定。SERECT句はカラムを指定。
*はワイルドガードSERECT句において、全て取得の意味。
2.検索条件の指定(WHERE句とAND演算子・OR演算子・NOT演算子)
WHERE句
WHERE 条件
/*WHERE句の条件には比較演算子を使用することができる。*/
WHERE id = 1
WHERE id <= 5
WHERE first_name = "田中"
AND演算子
WHERE a AND b
/*ageが22以下かつprefectureが神奈川県のレコードを取得*/
SELECT *
FROM users
WHERE age <= 22 AND prefecture = "神奈川県"
OR演算子
WHERE a OR b
/*ageが20以下またはprefectureが東京都であるレコードを取得*/
SELECT *
FROM users
WHERE age <= 20 OR prefecture = "東京都"
NOT演算子
WHERE NOT a
/*prefectureが東京都でないレコードを取得*/
SELECT *
FROM users
WHERE NOT prefecture = "東京都"
3.単一カラムの範囲検索
BETWEEN演算子
1つのカラムに対し上限と下限を指定して、その範囲に含まれる値を取得する
WHERE カラム名 BETWEEN 下限 AND 上限
/*ageが21以上24以下のuserを探す*/
SELECT *
FROM users
WHERE age BETWEEN 21 AND 24
4.単一カラムのリスト検索
IN演算子
1つのカラムに対しリストを指定して、そのリストに含まれる値を取得する
WHERE カラム名 IN (値1, 値2, ……)
/*prefectureが"東京都"もしくは"神奈川県"であるuserを検索*/
SELECT *
FROM users
WHERE prefecture IN ("東京都", "神奈川県")
検索したデータの形成
1.データの結合(COUNAT関数)
COUNAT関数
複数の文字列を連結させることが出来る関数
CONCAT(文字列1, 文字列2, ……)
/*フルネームで取得できる*/
SELECT CONCAT(family_name, first_name)
FROM users
2.結合した値を別のカラムにする(AS句)
AS句
SELECT句で取得したデータを別のカラム名に指定できる。
SELECT 取得するデータ AS 別名
SELECT CONCAT(family_name, first_name) AS "名前"
FROM users
3.重複する値の除外する(DISTINCTキーワード)
DISTINCTキーワード
DISTINCTキーワードで指定したカラムの値が重複する場合、重複する行を除外してデータを取得する。
SELECT DISTINCT カラム名
/*2015年7月1日にシフトに入った人の"user_id"を取得*/
SELECT DISTINCT user_id /*DISTINCTキーワード*/
FROM shifts
WHERE date = "2015-07-01"
4.レコードをグループ化する(GROUP BY句)
GROUP BY句
指定したカラムの中で、同じ値を持つデータを1つのグループとしてまとめることで、
そのグループ単位で集計した結果を取得することが出来る。
GROUP BY カラム名
/*グループ化された一覧の"user_id"のみを表示*/
SELECT user_id
FROM shifts
WHERE date = "2015-07-01"
GROUP BY user_id
5.レコードの数を数える(COUNT関数)
COUNT関数
グループ化されたデータに対して使用することが出来る集計関数
SELECT COUNT(カラム名)
/*"2015-07-01"に誰が、何コマずつシフトに入ったか取得*/
SELECT
user_id,
COUNT(*) "コマ数"
FROM shifts
WHERE date = "2015-07-01"
GROUP BY user_id
カラム名の指定でワイルドカードを使用すると、行の値が全てNULLであるレコードも含め、その行数を取得。
AS句でカラム名を"コマ数"に変更。