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
ほったほった

tips(サブクエリ)

クエリの中に他のクエリを代入することで、より複雑なデータを取得することができる
FROM句の引数として加工したテーブルを渡すこともできる

SELECT *
FROM products
WHERE price > (
  SELECT price
  FROM products
  WHERE id = "hoge"
)
ほったほった

tips(命名)

ASを使用することで、カラム名などに別の名前をつけることができる

SELECT foo AS "bar"