Open11
SQL色々
Read
構文
SELECT ...
FROM ...
JOIN ... ON ...
WHERE ...
GROUP BY ...
HAVING ...
ORDER BY ...
LIMIT ...
SELECT句
取得するカラムを指定
-- 全て取得
SELECT *
-- 特定のカラムを取得
-- <カラムグループ>::=<カラム名>|<カラム名>, <カラムグループ>
SELECT <カラムグループ>
重複データの削除
SELECT DISTINCT(<カラム名>)
出力データの計算
SELECT <数値を返すカラム名> <+, -, *, /> (<数値>|<数値を返すカラム名>)
集計関数
-- 合計
SELECT SUM(<カラム名>)
-- 平均
SELECT AVG(<カラム名>)
-- nullでないもののカウント
SELECT COUNT(<カラム名> | *)
-- 最大
SELECT MAX(<カラム名>)
-- 最小
SELECT MIN(<カラム名>)
FROM句
データベースのテーブルを選択
tipsのサブクエリを引数にすることも可能
JOIN句
テーブルの結合
<テーブル名>.<カラム名>
でどのテーブルのどのカラムかを選択可能
FROM <テーブル1>
JOIN <テーブル2>
ON <テーブル1>.<カラム名> = <テーブル2>.<カラム名>
注意
カラムを指定するとき、JOINするテーブルに同じカラム名が存在する場合<テーブル名>.<カラム名>
で指定
WHERE句
取得するレコードの条件を設定
構文
WHERE <カラム名> <演算子> <値>
否定形
WHERE NOT <カラム名> <演算子> <値>
NULL判定
WHERE <カラム名> (IS NULL | IS NOT NULL)
演算子
基本的な演算子
=, <, <=, >, >=
LIKE演算子
-- 部分一致
WHERE <カラム名> LIKE "%<文字列>%"
-- 前方一致
WHERE <カラム名> LIKE "<文字列>%"
-- 後方一致
WHERE <カラム名> LIKE "%<文字列>"
論理演算子
AND
WHERE <カラム名> <演算子> <値> AND <カラム名> <演算子> <値>
OR
WHERE <カラム名> <演算子> <値> OR <カラム名> <演算子> <値>
GROUP BY句
特定のカラムの値でテータをグループ分け
GROUP BY句を使用した場合、SELECT句はGROUP BYの引数と集計関数のみ使用可能
-- <カラムグループ>::=<カラム名>|<カラム名>, <カラムグループ>
SELECT <カラムグループで指定したカラム名> | <集計関数>
FROM <テーブル名>
GROUP BY <カラムグループ>
HAVING句
GROUP BYでグループ化したデータを更に絞り込む
条件分で使用するカラムはSELECT句で使用している必要がある
HAVING <WHERE句と同じ条件文>
ORDER BY句
データの並び替え
-- 昇順
-- ASCは省略可
ORDER BY <カラム名> ASC
-- 降順
ORDER BY <カラム名> DESC
LIMIT句
取得してくるデータの数を設定
LIMIT <数字>;
tips(サブクエリ)
クエリの中に他のクエリを代入することで、より複雑なデータを取得することができる
FROM句の引数として加工したテーブルを渡すこともできる
SELECT *
FROM products
WHERE price > (
SELECT price
FROM products
WHERE id = "hoge"
)
tips(命名)
ASを使用することで、カラム名などに別の名前をつけることができる
SELECT foo AS "bar"