【初学者】 SQL  Lesson.1

##はじめに

まず、どんな風に業務に使われるのかを整理して、学習を進めたい。
（目的が明確になれば、学習のモチベーション向上や維持に繋がる為）

__SQLは「データ分析」に活用される__

__データ分析__とは、
データーベースに保存されているデータを、統計などの知識を使って活用すること。

ITの進化により、膨大なアクセスデータや購買データなどが自動的に蓄積される時代となった。
この膨大なデータには、企業活動に非常に有用な知識が潜んでいるが、
データはいくら蓄積しても、分析をしなくては全く意味がない。
コアである分析力を活かし、様々なデータを分析して有用な知見を導き出していく。

*__「どうすれば、今使っている目の前のデータから情報を引き出せるか」__*


多くの人は目の前のデータの中に答えがあるという前提で、この方法論に着目する。
その具体例としてよく挙がるのが、「統計」や「分析手法」、「データサイエンス」などです。
もちろん、これらの知識やスキルがゼロでは何もできないことは明白であるが、

*__重要なのは、これからの自分に必要なスキルを見極めること__*
「何を知りたいのか。それを知って何をしたいのか。そのためには、どんなデータ（指標）が必要なのか」
を具体的に考えることが、とにもかくにもまず必要である。

![32135_01](https://user-images.githubusercontent.com/70472160/106370475-b30e3480-639d-11eb-8a49-7ba3d51a2341.jpg)

##学習開始
SQLはクエリを書くための言語。
データベースからデータを取得するためには、
「データを取得してください」といったようにデータベースに送る「命令（クエリ）」が必要である。

（SQLが問い合わせ言語と言われるのであれば、クエリは質問（問いかけ）なのでは？と思う私）


##クエリ（命令）各種
__１、カラムの指定__
カラムから、データを取得するためには「SELECT」を用いる。

```
SELECT (カラム名）
    このSELECTを用いて、「どのカラムのデータを取得するか」を選ぶ。
```
__２、テーブルの指定__
データベースには複数のテーブルが存在する場合があります。
そのため、「FROM」を用いて、SELECTで選んだカラムが「どのテーブルのカラムか」を指定する必要があります。

```
FROM（テーブル名）
```
__３、終わりの合図__
最後に「ここまでがクエリです」ということをデータベースに伝えるためのセミコロン（；）を加えて完成です。
クエリは一行で書くこともできますが、今回は読みやすいように改行して書きましょう。
また、SQLは大文字と小文字を区別しないため、小文字で記述しても問題ありません

```
SELECT name
FROM purchase;
```

一度に複数のカラムからデータを取得する方法もあるので紹介しよう

```
複数のカラムからデータを取得する場合は、図のようにカラム名をコンマ（ , ）で区切ります。
SELECT name, price
FROM purchase;
```

```
全てのカラムからデータを取得する
全カラムのデータを取得する場合は「＊」の記号を用います。
SELECT*
FROM purchase;
```

```
特定のデータを取得するためには、「どこの」という意味を持つ「WHERE」を用います。「SELECT」と「FROM」で「どのテーブルのどのカラムのデータを取得するか」までは決まっていますので、「WHERE」が意味するのは、「どこのレコード（横の行）を取得するか」になります。
```

```
「どこのレコード（横の行）のデータを取得するか」を指定するためには、左の図のように「＝」を用いて、「〇〇カラムが〇〇であるレコード」といった意味になるように条件を指定します。
データには「データ型」と呼ばれるルールにより、「食費」のようなテキストはクォーテーションで囲む必要があります。
SELECT *
FROM purchases
WHERE category = "食費”;
```
今回は「商品の値段が1000円であるデータ」を取得してみましょう。「値段」を示す「priceカラム」には「数値データ」が保存されています。「数値データ」はクォーテーションで囲んではいけないため、注意しましょう

次に「日付が2017-07-01であるデータ」を取得してみましょう。「日付」を示す「purchased_atカラム」には「日付データ」が保存されています。「日付データ」はダブルクォーテーションまたはシングルクォーテーションで囲む必要があるため、忘れないようにしましょう。

__覚えておくべきデータ型__

|データ型|値|入力例|特徴|
|:---:|:---:|:--:|:--:|
|テキスト|"ほげほげ"|"ほげほげ"|ダブルクォーテーション<br>または<br>シングルクォーテーションで<br>囲まれた文字|                
|数値　|１０|１０|整数値<br>|
|日付　|"2020-01-30"|"2020-01-30"|ダブルクォーテーション<br>または<br>シングルクォーテーションで<br>囲まれた文字|

比較演算子

|比較演算子|説明|
|:---:|:---:|
| a < b |a が b より小さいデータを検索|
| a <= b |a が b より小さい（または） a が b と等しいデータを検索|
| a > b | a が b より大きいデータを検索|
| a >= b | a が b より大きい（または） a が b と等しいデータを検索|

```sample.sql
 ※　purchased_atカラムのデータが「2021-01-30以前のデータ」を検索する
SELECT*
FROM purchases
WHERE purchased_at <= "2021-01-30";
```

```
【LIKE演算子】

「ある文字を含むデータ」を取得したい場合は、「LIKE演算子」を用いる。
図のようにすることで、「指定したカラムが〇〇を含む（〇〇のような）レコード」という条件となります。

SELECT*
FROM purchases
WHERE name LIKE "文字列";
```
```
【LIKE演算子】　+ 【ワイルドカード】
LIKE演算子を用いる際に覚えておく必要があるのが「ワイルドカード」です。コンピュータの世界で「ワイルドカード」とは、どんな文字列にも一致することを指す記号です。LIKE演算子では「％」をワイルドカードとして扱います。
SELECT*
FROM purchases
WHERE name LIKE "%プリン％”;
これにより「プリン」を含むデータを全て取得しています
```

```
【LIKE演算子】　+ 【ワイルドカード】　　前方一致

ワイルドカードを文字列の前後どちらかにのみ置くことも可能です。図のように「〇〇%」とした場合、「〇〇」以降はどんな文字列にも一致しますので、「〇〇」で始まる文字列を検索することができます。このような検索を「前方一致」と呼びます。
SELECT*
FROM purchases
WHERE name LIKE "プリン％”;
これによりプリンで「始まる」データを取得する。
```
```
【LIKE演算子】　+ 【ワイルドカード】　　後方一致

また、図のように「%〇〇」とした場合、「〇〇」より前はどんな文字列にも一致しますので「〇〇」で終わる文字列を検索することができます。このような検索を「後方一致」と呼びます。
SELECT*
FROM purchases
WHERE name LIKE "％プリン”;
プリンで「終わる」データを取得する。
```