8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-03-13

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?