個人的によく使うSQL構文のメモ
##DML(データ操作言語)
データの取得・登録・更新・削除などのデータ操作に分類する文法のこと。
- SELECT文 レコードを取得
- UPDATE文 レコードを更新
- DELETE文 レコードを削除
- INSERT文 レコードを挿入
###取得
SELECT
テーブル内の一つ又は複数のフィールドの全データを読み込む
SELECT "フィールド"
FROM "テーブル";
DISTINCT
重複するデータを除外する
SELECT DISTINCT "フィールド"
FROM "テーブル";
Where
条件つきでデータを取得
SELECT "フィールド"
FROM "テーブル"
WHERE "条件";
And Or
二つ又は複数の簡単条件を、 AND 又は OR によって組み合わせる
SELECT "フィールド"
FROM "テーブル"
WHERE "条件" [AND|OR] "条件";
In
一つの条件フィールドに対し、複数の対象パラメータをセットして検索する。
SELECT "フィールド"
FROM "テーブル"
WHERE "フィールド" IN ('値1', '値2');
WHERE 'フィールド' = '値1' OR 'フィールド' = '値2'より短くかける
Between
データベースから設定したの值の範囲内で検索する。
SELECT "フィールド"
FROM "テーブル"
WHERE "フィールド" BETWEEN '値1' AND '値2';
Like
ワイルドカードを指定してかなり曖昧に検索する。
「この文字を含んでるレコードがほしい」のようなモチベーションで利用されることが多いです。
SELECT "フィールド"
FROM "テーブル"
WHERE "フィールド" LIKE {ワイルドカードを含む文字列};
%をつけるとワイルドカードになる。
例えばhogeをふくむ文字を取得したい場合は
"%hoge%"とすることで、fugahoge,hogefuga,hogeのようなhogeを含む値を全て取得できるようになる。
hogeから始まるものがほしい場合は'hoge%'とすると、fugahogeは対象ではなくなる
Order By
並べ替えてデータを取得
SELECT "フィールド"
FROM "テーブル"
[WHERE "条件"]
ORDER BY "フィールド" [ASC, DESC];
関数
AVG
平均値を計算
SELECT AVG("フィールド")
FROM "テーブル";
COUNT
レコード数をカウント
SELECT COUNT("フィールド")
FROM "テーブル";
MAX
最大値を取得
SELECT MAX("フィールド")
FROM "テーブル";
MIN
最小値を取得
SELECT MIN("フィールド")
FROM "テーブル";
SUM
合計値を計算
SELECT SUM("フィールド")
FROM "テーブル";
Having
関数の値に条件付けを行う
SELECT "フィールド1", SUM("フィールド2")
FROM "テーブル"
GROUP BY "フィールド1"
HAVING (関数に対する条件);
Group By
値ごとに関数の実行結果を表示する場合
SELECT "フィールド1", SUM("フィールド2")
FROM "テーブル"
GROUP BY "フィールド1";
Join
二つのテーブルのデータを結合する。
二つのテーブルで同一の値をとる可能性のあるフィールド同士を比較して
一致した場合にのみレコードを二つのテーブルで連結して取得する。
SELECT A1.'フィールド1', SUM(A2."フィールド2")
FROM "テーブル1" A1, "テーブル2" A2
WHERE A1.'比較するフィールド1' = A2.'比較するフィールド1'
GROUP BY A1.フィールド1;
Outer Join
joinでは二つのテーブルの中に一致する値があってから、当該データが読み込まれる。
outer joinはそれとは異なり、片方のテーブルにあるデータの値が、他方のテーブルに一つも現われない場合にもデータを作成し、結合する。
両方にデータがなくともテーブル内のデータがすべて必要であるときに利用する。
SELECT A1.'フィールド1', SUM(A2."フィールド2")
FROM "テーブル1" A1, "テーブル2" A2
WHERE A1.Store_Name = A2.Store_Name (+)
GROUP BY A1.'フィールド1';
Subquery
一つのSQL文に、もう一つのSQL文を入れる
SELECT "フィールド1"
FROM "テーブル1"
WHERE "フィールド2" [比較演算子]
(SELECT "フィールド1"
FROM "テーブル2"
WHERE "条件");
###更新
Update
データを更新
UPDATE "テーブル"
SET "フィールド1" = [新しい值]
WHERE "条件";
###削除
Delete From
データを削除
DELETE FROM "テーブル"
WHERE "条件";
###追加
Insert Into
テーブルにデータを挿入
INSERT INTO "テーブル" ("フィールド1", "フィールド2")
VALUES ("值1", "值2");
##DDL(データ定義言語)
SQLのうちデータベースやデータベースのテーブルを作成や定義する文法のこと。
- CREATE文 データベースやテーブルを作成
- DROP文 データベースやテーブルの削除
- ALTER文 データベースやテーブルの変更
作成
テーブルを作る
CREATE TABLE "テーブル"
(
"フィールド1" "フィールド1のデータ種類",
"フィールド2" "フィールド2のデータ種類",
);
削除
テーブルを削除する
DROP TABLE "テーブル";
変更
テーブルを変更する
フィールドの追加
ALTER TABLE "テーブル" ADD "フィールド" "フィールドのデータタイプ";
フィールドの削除
ALTER TABLE "テーブル" DROP "フィールド;
フィールド名の変更
ALTER TABLE "テーブル" CHANGE "元フィールド名" "新フィールド名" "新フィールド名のデータタイプ";
フィールドのデータタイプの変更
ALTER TABLE "テーブル" MODIFY "フィールド" "新しいデータタイプ";