SQL文の基礎
データの取得(SELECT)
データを取得する。
列を指定して取得
SELECT 列1, 列2, … FROM テーブル名;
全ての列を指定して取得
SELECT * FROM テーブル名;
列に別名をつける(AS)
「列名 as 付けたい名前」とすることで、列に別名をつけられる。
SELECT name AS 名前, age AS 年齢 FROM users;
条件を指定してデータを取得(WHERE)
WHEREを使って条件を指定する。
SELECT 列1, 列2, … FROM テーブル名 WHERE 条件;
比較演算子
= 等しい
> より大きい
>= 以上
< より小さい
<= 以下
<> 等しくない
!= 等しくない
in ある値が含まれているか
not in ある値が含まれていないか
is null 値がnull
is not null 値がnullではない
like パターンマッチング,あいまい検索
between A and B 値がAとBの間に含まれているか
パターンマッチング
ワイルドカード文字(%,_)を使って文字列のパターンを指定する。
% 0文字以上の任意の文字列
_ 任意の1文字
'り%' りで始まる文字列 りんご
'%菜%' 菜を含む文字列 野菜ジュース
'%ト' トで終わる文字列 デザート
'___ケーキ' 何か3文字で始まり、ケーキで終わる文字列 いちごケーキ
取得件数を制限(LIMIT)
LIMITを使って取得件数を絞る。
OFFSET使う場合
SELECT 列1, 列2, … FROM テーブル名 LIMIT 行数 OFFSET 開始位置;
OFFSET使わない場合
SELECT 列1, 列2, … FROM テーブル名 LIMIT 開始位置, 行数;
データの追加・更新・削除(INSERT,UPDATE,DELETE)
INSERTでデータを追加する
INSERT INTO テーブル名 (列1, 列2, …) VALUES (値1, 値2, …);
列を省略してINSERTする場合 *テーブルの全列に値指定する必要あり
INSERT テーブル名 VALUES (値1, 値2, …);
複数行に同時にINSERTする場合
INSERT INTO
テーブル名 (列1, 列2, …)
VALUES
(値1, 値2, …),
(値1, 値2, …),
(値1, 値2, …);
UPDATEでデータを更新する。
UPDATE テーブル名 SET 列1 = 値1, 列2 = 値2,… WHERE 条件式;
DELETEで行を削除する。
DELETE FROM テーブル名 WHERE 削除条件;
データの集約
集約関数
| 集約関数 | 説明 |
|---|---|
| SUM() | 合計を返す |
| AVG() | 平均を返す |
| MAX() | 最大値を返す |
| MIN() | 最小値を返す |
| COUNT() | 個数を返す |
count(*)でテーブルの行数を取得できる
データをグループ化(GROUP BY)
GROUP BYで列名を指定してグループ化する
SELECT
列名
FROM
テーブル名
GROUP BY
列名;
集約結果に対して条件を指定(HAVING)
集約結果をさらに絞る場合にHAVINGを使用する
SELECT
列名
FROM
テーブル名
WHERE
条件式
GROUP BY
列名
HAVING
条件式;
データの並び替え(ORDER BY)
ORDER BYで指定した列を並び替える
ORDER BY 列名,式,並び順,…
ASC 昇順(デフォルト)
DESC 降順
データの結合
サブクエリ
条件をさらに絞り込む。
SELECT
列名,…
FROM
テーブル名
WHERE
列名 演算子(SELECT 列名 FROM テーブル名 …);
条件分岐(CASE)
条件によって返す値を変える。
case
when 条件式1 then 値1
when 条件式2 then 値2
else 値3
end
データベース操作
データベースの追加
データベースを新たに追加する。
CREATE DATABASE データベース名;
データベースの削除
データベースを削除する。
DROP DATABASE データベース名;
テーブルの追加
テーブルを新たに追加する。
CREATE TABLE テーブル名(列名1 データ型や順序など,列名2 データ型や順序など, …);
テーブルの削除
テーブルを削除する。
DROP TABLE テーブル名;
列名の削除
列を削除する。
ALTER TABLE テーブル名 drop 列名;