個人的によく使うSQL構文のメモ


個人的によく使う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 "フィールド" "新しいデータタイプ";