SQLの基礎について学ぶ＃０１

# SQLの基礎について学ぶ＃０１

<b>SQL</b>
▶データベースやデータを操作するための専門言語。SQLで書かれた命令文（SQL文）をDBMSに送信することでデータの検索、更新、削除ができる。SQLの文法は使用されるDBMS製品によって若干異なるが、基本的な部分は同じである。

<b>DBMS(データベース管理システム)</b>
▶MySQL, MariaDB, PostgreSQLなど商用製品からOSSまで幅広く存在する。データベースはDBMSによって管理される。

<b>RDB（リレーショナルデータベース）</b>
▶表形式で管理されるデータベースのことを特にいう。表（テーブル）はデータの要素となる行（レコード）と列（カラム）からなる。


## ０．accountテーブル
### 今回はaccountテーブルでSQLの基本文法をまとめたいと思います！
|    date（日付）    |    name（項目名）       |    price（金額）     |
|:-----------:|:------------:|:------------:|
| 2020-12-03 |　　　お弁当  　 | 9000         |
| 2021-01-03 |　　　飲み代 　 | 3000         |
| 2021-05-22 |　　　電車代  　 | 3000         |
| 2021-03-14 |　　　日用品  　 | 2000         |
| 2021-04-02 |　　　ローン  　 | 4000         |
| 2021-01-12 |　　　医療費  　 | 3000         |

## 1. 金額を取得する
```sql
SELECT price FROM account
```
▶SELECTで取得するカラムを指定。FROMでテーブルを指定。
### 結果
|    price     |
|:------------:|
| 9000         |
| 3000         |
| 3000         |
| 2000         |
| 4000         |
| 3000         |

## 2. すべての列を取得する
```sql
SELECT * FROM account   /* 「*アスタリスク」はすべてを列を意味する */
```
▶SELECT * ですべての列を指定。
### 結果
|    date    |    name       |    price     |
|:-----------:|:------------:|:------------:|
| 2020-12-03 |　　　お弁当  　 | 9000         |
| 2021-01-03 |　　　飲み代 　 | 3000         |
| 2021-05-22 |　　　電車代  　 | 3000         |
| 2021-03-14 |　　　日用品  　 | 2000         |
| 2021-04-02 |　　　ローン  　 | 4000         |
| 2021-01-12 |　　　医療費  　 | 3000         |
▶現在テーブルに存在するすべての行を取得

## 3. 金額が3000円に等しい行を取得する
```sql
SELECT * FROM account WHERE price = 3000 /* 「*アスタリスク」はすべてを列を意味する */
```
▶SELECT * ですべての行を指定。FROMでaccountテーブルを指定して金額3000円を満たす行をWHEREで取得。
### 結果
|    date    |    name       |    price     |
|:-----------:|:------------:|:------------:|
| 2021-01-03 |　　　飲み代 　 | 3000         |
| 2021-05-22 |　　　電車代  　 | 3000         |
| 2021-01-12 |　　　医療費  　 | 3000         |

▶[WHERE 金額 > 3000]とすると3000円を超える金額の行を取得
▶[WHERE 金額 < 3000]とすると3000円を超えない金額の行を取得

## 4. データを追加する
```sql
INSERT INTO account VALUES ('2021-04-04', 'お茶', 900)
```
INSERT INTOで追加先のテーブルを指定、VALUESで追加データを指定。
### 結果
|    date    |    name       |    price     |
|:-----------:|:------------:|:------------:|
| 2020-12-03 |　　　お弁当  　 | 9000         |
| 2021-01-03 |　　　飲み代 　 | 3000         |
| 2021-05-22 |　　　電車代  　 | 3000         |
| 2021-03-14 |　　　日用品  　 | 2000         |
| 2021-04-02 |　　　ローン  　 | 4000         |
| 2021-01-12 |　　　医療費  　 | 3000         |
| 2021-04-04 |　　　お茶  　 | 900         |    
▶一番下に新しい行が追加

## 5. データを更新する
```sql
UPDATE account SET price = 1000 WHERE date = '2021-04-04'
```
UPDATEで更新するテーブルを指定。WHEREで更新する行を指定して、SETで更新するカラムと内容を指定。
### 結果
|    date    |    name       |    price     |
|:-----------:|:------------:|:------------:|
| 2020-12-03 |　　　お弁当  　 | 9000         |
| 2021-01-03 |　　　飲み代 　 | 3000         |
| 2021-05-22 |　　　電車代  　 | 3000         |
| 2021-03-14 |　　　日用品  　 | 2000         |
| 2021-04-02 |　　　ローン  　 | 4000         |
| 2021-01-12 |　　　医療費  　 | 3000         |
| 2021-04-04 |　　　お茶  　 | 1000         |    
▶お茶の金額が1000円に更新

## 5. データを削除する
```sql
DELETE FROM account WHERE date = '2021-04-04'
```
### 結果
|    date    |    name       |    price     |
|:-----------:|:------------:|:------------:|
| 2020-12-03 |　　　お弁当  　 | 9000         |
| 2021-01-03 |　　　飲み代 　 | 3000         |
| 2021-05-22 |　　　電車代  　 | 3000         |
| 2021-03-14 |　　　日用品  　 | 2000         |
| 2021-04-02 |　　　ローン  　 | 4000         |
| 2021-01-12 |　　　医療費  　 | 3000         |
▶日付2021-04-04に登録されたお茶の行が削除

# まとめ
<b>命令の動作</b>
① SELECT文：ある条件を満たす行を探して、その行の内容を<b>取得</b>
② UPDATE文：ある条件を満たす行を探して、その行の内容を<b>置き換える</b>
③ DELETE文：ある条件を満たす行を探すして、その行の内容を<b>削除</b>

　SQLについて引き続き学び、また次回投稿していきたいと思います！！