基本的なSQL文

皆様初めまして！今回が初投稿となります。
初めての投稿でQiitaの使い方すらわかりませんが、とりあえず挑戦してみました！
見づらいなどありましたら、ご指摘いただけると幸いです。

それでは本題に入ります。
最近WEBアプリケーションを作成しており、事前にある程度DB（データベース）でどのようなカラム（フィールド）を持たせるか決めてから、WEBアプリケーション作成に取り組みましたが、作業を進めていくうちに「これも必要だ！」とDBを変更する機会が多々あり、私がWEBアプリケーションを作成で使ったSQL文をまとめてみました。

### 環境
+ MySQL　バージョン8.0

***
## 目次
+ SQL文とは？
+ CREATE文
+ SELECT文
+ INSERT文
+ ALTER文
+ UPDATE文
+ DELETE文
+ まとめ

# SQL文とは?
SQL文とはデータベース（以下DBと略）を操作するための命令文。
SQLはDB言語として標準化されているめ、異なる形式のDBでも同じようにSQL文で命令可能です。
SQL文は一度学習してしまえば幅広く活用できる言語といっても過言ではありません。
今回、わかりやすいようにSQL文は大文字で記載しておりますが、SQL文では大文字と小文字の区別はしないため、小文字でも同じように記入できます。

# CREATE文
CREATE文は単語から予想できるようにDB（大きい箱）の作成や、TABLE（DB内に作る各情報をまとめる小さい箱）の作成などに使える文です。
基本的な書き方はこんな感じ。

+ DBの作成
```
CREATE DATABASE DB名前;
```
+ DBの作成（同じDB名が存在していないときのみ作成される）
```
CREATE DATABASE IF NOT EXISTS DB名;
```
すでに存在していた場合、「1 warning」と表示されます。

+ TABLEの作成
 TABLEの作成は少し複雑になり、どのようなカラム（フィールド）を持たせるのか、またそのカラムはどのような型（文字、数字）なのか定義する必要があります。
また、そのカラムに条件を付けることができます。
```
CREATE TABLE TEST(
ID　   INT(またはINTEGER)  NOT NULL,
NAME   VARCHAR(20)  NOT NULL
);
```
例として記述してみました。
こちらはTESTというTABLEを作成し、ID、NAMEというカラム（フィールド）が設定し、型はINT（またはINTEGER）型（整数を扱う型）とVARCHAR（文字を扱う型）、条件としてNOT NULL（必須）というものです。
VARCHAR（20）の（20)が何かと申しますと、こちらは文字数を設定しています。つまり（）内の数字が制限という事になり、今回は20文字までなら登録できるということになります。

# SELECT文
SELECT文はDB上にある情報を参照する（取り出す）ためのSQL文です。
先ほど例題で作ったテーブルの情報を参照してみましょう。
```
SELECT NAME（カラム名）FROM TEST（TABLE名）;
```
SELECTの後に参照したいカラム名、FROMの後にTABLE名を入力するとそのTABLEに登録してあるカラムの情報が参照できます。
また、TABLEの情報を全件取得したいときはSELECTの後に「*」を入力します。
```
SELECT * FROM TEST;
```

ある一定の条件で参照したい場合もありますよね。その時は「WHERE」を使います。
```
SELECT * FROM TEST WHERE ID = 1;
```
こちらのSQL文ではTESTに登録されているIDのカラムが1のものの情報を参照しています。

# INSERT文
INSERT文はDBに情報を登録する際に使います。
```
INSERT INTO TABLE名（
カラム名)
VALUES
(登録する情報）；
```
こちらが基本構文です。
カラムが複数あるときは「,」でくぎり、登録する情報が文字の場合は「’」シングルコーテーションで囲います。
```
INSERT INTO TEST(
ID,NAME)
VALUES
(1,'YAMADA');
```
こちらのINSERT文ではTESTというTABLEにID＝1、NAME＝YAMADAという情報を登録しました。ポイントとなるのは、文字は「’」で囲むということです。

# ALTER文
ALTER文は既存のTABLEに対して、新しいカラムを追加したり、既存のカラムの名前や型を変更したりすることができます。
もちろんTABLE名を変更することも可能です。
```
ALTER TABLE TABLE名 ADD カラム名　型；
```
基本構文はこんな感じです。
イメージができるように「TEST」というTABLEを使って例を作成してみました。
```
ALTER TABLE TEST ADD AGE INT NOT NULL;
```
こちらのALTER文ではTESTというTABLEにAGEというINT型（整数を扱う型）のカラムをNOT NULL（必須）という条件を付けて追加したものになります。

では次にカラムの変更をしていきましょう。
先ほど追加したカラム「AGE」を「YEARS_OLD」に変更しましょう。
```
ALTER TABLE TEST RENAME COLUMN AGE TO YEARS_OLD;
```
こちらの文で変更することができます。
注意としてはMySQLのバージョンが8,0以降でないとカラム名の変更が上記のように行えません。
バージョンが8,0以前の方は下記ので変更できます。
```
ALTER TABLE TEST CHNAGE AGE YEAES_OLD INT NOT NULL;
```
RENAMEではなく、CHANGEと使うことで再構成として名前の変更をすることができます。
注意としてはカラム名の変更だけではなく、再構成なので「カラム名、型、条件」を一緒に記載する必要があります。


# UPDATE文
UPDATE文はDBに登録されている情報を更新する際に使います。
TESTに登録されている情報を更新していきましょう。
現在TESTにはID=1、NAME＝YAMADA、という情報が登録されています。
（ALTER文の際にAGEというカラムを追加しましたが、そちらは無視してください）
その情報をNAME＝'SAITOU'に更新しましょう。
```
UPDATE TEST SET NAME = 'SAITOU' WHERE ID = 1;
```
ここでのポイントは文字列は「'」シングルコーテーションで囲むこと、またWHERE以降に条件を記載することで該当するデータだけ更新がされます。
仮にWHEREがないと、TESTに登録されているデータすべてのNAMEカラムが'SAITOU'に更新されてしまいます。

# DELETE文
DELTE文はTABLEに登録されているデータを削除することができます。
```
DELETE FROM　TABLE名　WHERE　条件;
```
基本構文はこちらです。
TESTから、ID=1の情報を削除したい場合は下記の記述をします。
```
DELETE FORM TEST WHERE ID=1;
```


# まとめ
今回は基本的なSQL文をまとめてみました。
応用を効かせるとさらに細かな条件で動作させることもできます。
ひとつ注意事項としてはSQL文を使うことで大切な既存データの変更や削除などが簡単にできてしまうので本番環境で行う場合は慎重に行ってください。
個人環境で行う場合は実際に手を動かして経験することでものすごいスピードで身に着けることができます。
初めての投稿で見やすいものができたかはわかりませんが、お気軽にコメントやご指摘いただけると幸いです。
最後までご覧にいただきありがとうございました。