Help us understand the problem. What is going on with this article?

SQL 超基礎まとめ

SQLの超基礎 まとめ (データ分析用)

SQL初心者の自分用まとめメモです。
データ分析を目指した記事になっているので、データベースへの書き込みではなく、データベースからの取得が主になっております。
また、とにかくSQLの書き方を羅列したような記事になっております。

この記事では、以下のような変数名を使用して、書いています。

4つの基本構文

SQLは4つの基本構文からなっている。
1. 取得 SELECT
2. 挿入 INSERT INTO
3. 更新 UPDATE ~ SET
4. 削除 DELETE

まずは、これらを簡単にまとめます。

取得 SELECT

「SELECT 列名 FROM データベース名;」という形でデータを取得してきます。処理の終了を意味する「;」を最後につけてあげます。

SQL.sql
SELECT column_name
FROM database_name;

ちなみに、"*" を使用すると、すべての列名の情報を取ってくることができます。また、","区切りで、二つ以上のカラムを繋げて取得できます。

SQL.sql
SELECT *
FROM database_name;
SQL.sql
SELECT column_name1, column_name2, column_name3
FROM database_name;

挿入 INSERT

insert.sql
INSERT INTO database_name (id,column_name1,column_name2)
VALUES(10,'value1','value2')

また、AUTO INCREMENT機能が使われている場合は、idカラムを設定せずとも、自動で割り振られます。

更新 SET

set.sql
UPDATE database_name
SET column_name1 = 'value1',column_name2 = 'value2' #指定カラムを新値にする
WHERE id = 3 #更新するレコードをWHEREで指定する。

削除 DELETE

delete.sql
DELETE FROM database_name
WHERE id = 3;
#削除するレコードidWHEREで指定する。
#指定しないと、テーブル内の全てのレコードが削除されてしまう。

WHERE:検索機能

文字列条件(完全一致)

列情報をすべて取得できたが、すべての情報は使用しない。ある条件に一致する情報だけ欲しい時にWHEREを使う。
文字の一致は、以下の通り。'hogehoge'には、一致して欲しい条件をかく

where.sql
SELECT column_name
FROM database_name
WHERE column_name = hogehoge;

部分一致

部分一致しているデータを取得したい場合は、'%'を使う。
また、'='を使うのではなく、'LIKE'を使用する。
・後方一致

Kouhouicchi.sql
SELECT column_name
FROM database_name
WHERE column_name LIKE  hoge%;

・前方一致

Zenpouicchi.sql
SELECT column_name
FROM database_name
WHERE column_name LIKE  %hoge;

・部分一致

Bubunnicchi.sql
SELECT column_name
FROM database_name
WHERE column_name LIKE  %hoge%;

数値条件

先ほどは、文字列条件をhogehogeで指定したが、数値に関する条件も記入可能。
数値では、"=",">","<","<=",">="で指定が可能。

SQL.sql
SELECT column_name
FROM database_name
WHERE column_name >= 10;

AND OR などを使えば、さらに範囲などを指定できる。

SQL.sql
SELECT column_name
FROM database_name
WHERE column_name <= 10 AND column_name >=5;

検索結果の加工

ORDER BY 並び替え

検索結果を並び替える。
昇順:ASC
降順:DESC
に並び替える
sql:order.sql
SELECT *
FROM database_name
ORDER BY column_name ASC

DISTINCT 重複除外

コラム中の重複データを除外して、取得してくれる

distinct.sql
SELECT DISTINCT column_name
FROM database_name;

NULLの扱い方

データベース内に空のセル(数値が何も入っていない)'NULL’がある時がある。
NULLを取得したい場合は、'='を使うのではなく、ISで取得する。

Null.sql
SELECT column_name
FROM database_name
WHERE column_name IS NULL;

四則演算

・足し算 : +
・引き算 : -
・掛け算 : *
・割り算 : /
ができる。四則演算した値を表示できる。
以下では、1.08を数値に掛け算している。

enzan.sql
SELECT column_name * 1.08
FROM database_name
WHERE column_name = hogehoge

集計と計数

SUM()関数

取得したデータ(列)に対して、合計を取るSUM()関数
WHEREを使えば、一致した部分の合計だけ取得できる。

sum.sql
SELECT SUM(column_name1)
FROM database_name
WHERE column_name2 = hogehoge;

AVG()関数

取得したデータ(列)に対して、平均を取るAVG()関数
SUM()と同様に、WHEREWO使えば、一致した部分の合計だけ取得できる。

avg.sql
SELECT AVG(column_name1)
FROM database_name
WHERE column_name2 = hogehoge;

MAX()関数,MIN()関数

取得したデータ(列)の最大値(MAX())または、最小値(MIN())を取得できる。
もちろんWHEREで条件を絞った上で、使用可能

max.sql
SELECT MAX(column_name1)
FROM database_name
WHERE column_name2 = hogehoge;

COUNT()

取得した列中のデータの個数を数える。
WHEREを使用すれば、条件に当てはまったデータの個数をカウントできる。

count.sql
SELECT MAX(column_name)
FROM database_name
WHERE column_name = hogehoge;

GROUP BY()

グループごとにデータを集計した(平均・合計を出したいなど)の時に使用する。
・グループごとの合計を取得

groupby.sql
SELECT SUM(column_name1),column_name2
FROM database_name
GROUP BY column_name2;

もちろんWHEREを使用して、条件を絞った上でGROUP BYも使用できる。
ただし、WHEREはGROUP BYの前に入れる。
・以下は、column_name1, column_name2をそれぞれグループにして、
それぞれのグループのデータの数をCOUNT()を用いて取得している。

where_groupby.sql
SELECT COUNT(*), column_name1, column_name2
FROM database_name
WHERE column_name3 = hogehoge
GROUP BY column_name1, column_name2;

HAVING()

グループ化したデータをさらに絞り込みたい場合、HAVING()を用いる。

・以下では、グループ化し、グループのcolumn_name1の合計が1000以上になるグループのみを取得するようになっている。

HAVING.sql
SELECT SUM(column_name1), column_name2
FROM database_name
GROUP BY column_name2
HAVING SUM(column_name) > 1000;

グループ化した後のデータを絞り込む際に、WHEREではなく、HAVINGを用いるのは、SQLの各コマンドが、以下の順番で実行されるためとなっております。

  1. 検索 : WHERE
  2. グループ化 : GROUP BY
  3. 関数 : SUM, AVG, MAX, MIN, COUNT
  4. HAVING : HAVING

*ただいま、内容追加中です。

taruto1215
大学院入学後、機械学習を材料科学に応用した材料科学(マテリアルズインフォマティクス)の研究に取り組んでおります。 データサイエンティストを目指して、kaggleなど、精力的に勉強中
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした