SQLについて学ぼう！（第2回：基本の4大命令について）

## 1. はじめに
本書では、SQLをこれから学びたい人向けに、SQLの概要や構文の使い方を説明していきます。
前回の記事では、[『第1回：SQLとデータベースについて』](https://qiita.com/kangen110/items/aff39fe7b6ad9e913c7c)のテーマで、SQLとデータベースの概要を説明しましたが、第2回は『基本の4大命令について』をテーマに、データベース操作の基本となる4つの命令文（構文）を説明します。

## 2. 「4大命令」（4大構文）とは
SQLの命令文は実は意外と少なく、たった4つの命令文を使うだけでほとんどの処理や操作を行うことができます。

**SELECT文**：データベースに登録されているデータを検索し、取り出すための命令文
**UPDATE文**：データベースに登録されているデータを更新するための命令文
**INSERT文**：データベースに新しいデータを追加するための命令文
**DELETE文**：データベースに登録されているデータを削除するための命令文

しかし、この4つの命令文だけで何でも出来てしまうのではなく、4つの命令文に様々な`修飾語（「どのような条件で」「どのような集計単位で」「どのような順番で」など、内容を具体的に説明したり、限定したりする部分）`を付け加えることによって、複雑な処理を可能にしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3949924/bfb1f3a4-2221-47c2-b931-673d985792e8.png)

## 3. 「4大命令」のSQL
それでは早速、4大命令のSQLを紹介しましょう！
と言っても、いきなり各SQLの詳しい説明をするのではなく、まずはSQLのイメージを持ってもらうために簡単な事例と、それに対するSQLの記載のみです。

:::note info
各命令文の詳しい説明は、次々回以降の記事で行います。
:::

### 3-1. SELECT文
SELECT文は、データベースに登録されているデータを検索し、取り出すための命令文です。
SQLを扱うにあたって、実行する頻度が最も高い処理と言えるでしょう。
命令文には、取り出したい項目を、どのテーブルから、どんな条件で取得するかなどの情報を記載します。

**例：社員マスタから、男性社員の名前、生年月日、住所を検索したい場合**

**【社員マスタ】**
| 社員番号 | 名前      | 性別 | 生年月日   | 住所                 |
|:---------|:----------|:-----|:-----------|:---------------------|
| 1        | 佐藤 一郎 | 男   | 1964/09/25 | 東京都新宿区○○○   |
| 2        | 鈴木 花子 | 女   | 1992/05/02 | 大阪府大阪市×××   |
| 3        | 高橋 二郎 | 男   | 2000/09/26 | 愛知県名古屋市△△△ |
| 4        | 田中 花美 | 女   | 1985/12/12 | 福岡県福岡市□□□   |

```ruby:SQL
SELECT 名前, 生年月日, 住所
FROM 社員マスタ
WHERE 性別 = '男'
```

**実行結果**
| 名前      | 生年月日    | 住所                   |
|:---------|:-----------|:----------------------|
| 佐藤 一郎 | 1964/09/25 | 東京都新宿区○○○        |
| 高橋 二郎 | 2000/09/26 | 愛知県名古屋市△△△    |

### 3-2. UPDATE文
UPDATE文は、データベースに登録されているデータを更新するための命令文です。
命令文には、更新したいテーブル、更新したい項目と値、更新の対象とするデータの条件を記載します。

**例：田中さんが引っ越しをしたので、社員マスタの住所を更新したい場合**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3949924/f70a7e20-94b7-454c-8482-b224495e3c88.png)

```ruby:SQL
UPDATE 社員マスタ
SET 住所 = '福岡県久留米市□□□'
WHERE 社員番号 = 4
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3949924/a174d8ab-8704-41a7-987e-5cd366c06260.png)

### 3-3. INSERT文
INSERT文は、データベースに新しいデータを追加するための命令文です。
命令文には、追加したいテーブルと各項目の値を記載します。

**例：George SMITHさんが新たに入社したので、社員マスタに情報を追加したい場合**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3949924/b5f6647a-b0f0-4e74-bb4d-30125dd184ad.png)

```ruby:SQL
INSERT INTO 社員マスタ
VALUES (5, 'George SMITH', '男', '1972/09/20', '◇◇◇Street, New York')
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3949924/f01b887c-87d8-4333-ac12-a8213ab4ca33.png)

### 3-4. DELETE文
DELETE文は、データベースに登録されているデータを削除するための命令文です。
命令文には、削除したいデータのテーブル、削除更新の対象とするデータの条件を記載します。

**例：鈴木さんが退社したので、社員マスタから情報を削除したい場合**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3949924/6d6229a9-936f-44ee-a7c8-22e0efddcc6f.png)

```ruby:SQL
DELETE FROM 社員マスタ
WHERE 社員番号 = 2
```

**実行結果**
| 社員番号 | 名前      | 性別 | 生年月日   | 住所                 |
|:---------|:----------|:-----|:-----------|:---------------------|
| 1        | 佐藤 一郎 | 男   | 1964/09/25 | 東京都新宿区○○○   |
| 3        | 高橋 二郎 | 男   | 2000/09/26 | 愛知県名古屋市△△△ |
| 4        | 田中 花美 | 女   | 1985/12/12 | 福岡県久留米市□□□ |

## 4. まとめ
・データベースを操作するには、4大命令文と修飾語の組み合わせで複雑な処理を可能とする
・4大命令には、SELECT文、UPDATE文、INSERT文、DELETE文がある
・修飾語の役割は、「どのような条件で」「どのような集計単位で」「どのような順番で」など、内容を具体的に説明したり、限定したりすることである

## 5. 次回
データベースやSQLを扱うにあたって、避けては通れない『データ型について』をテーマに説明します。
「4大命令」の具体的な説明は、次々回以降に行う予定です。