MySQLのSQL構文、これさえ分かれば大丈夫！

この記事は、[シアトルコンサルティング株式会社](https://qiita.com/advent-calendar/2021/seattleconsulting) Advent Calendar 2021の11日目の記事です。
こんにちは、シアトルコンサルティングの森です。
TeamTech Move the WorldをMissionに掲げ、日々全力で業務に取り組んでおります！
少しでも興味を持って頂けたら下記のサイトを覗いてみてください！

コーポレートサイト
https://www.seattleconsulting.co.jp/
Wantedly
https://www.wantedly.com/companies/seattleconsulting
よろしくお願い致します！
## はじめに
今回はJavaSilverを取得する上で押さえておきたい概念「ポリモーフィズム」について、
実際の問題とともに説明していきます。
この記事を読んでポリモーフィズムに関する問題や考え方をマスターしていただければ幸いです。
## はじめに
今回SQL初心者である私が普段からよく使うSQL構文や覚えきれずよく調べる構文を今回からの複数記事にまとめたいと思います。
自身のストックのためでもありますがぜひ活用していただけると幸いです。

**ゴール**
今回の記事ではCRUD機能として基礎構文をマスターすること。
また基礎構文を忘れてしまった方も、検索しなくてもこの記事を見るとすぐ探している構文がわかるといったものを作っていきますのでよろしくお願いします。

## 目次
 **1. テーブルの作成・設定変更**<br>- テーブル作成（CREATE文）<br>- カラムの追加(ALTER ADD文)<br>- テーブル名の変更（ALTER RENAME文）<br>- カラム名・カラムの型の変更（ALTER文）<br>- 外部キー設定(FOREIGN KEY文)<br>- 外部キーを解除(ALTER DROP FOREINGN KEY文)
 **2. データの読み取り**<br>- データの取得(SELECT文)<br>- 指定したデータを取得（SELECT,WHERE文）<br>- 対象テーブルから全てのデーターを取得(SELECT * 文）<br>- ソートしたデータの取得(SELECT ORDER BY文)<br>- 特定の文字列を含むデータの取得（SELECT LIKE文）<br>- 比較条件を用いたデータの取得(SELECT BETWEEN文)<br>-特定のデータ以外を取得する（SELECT WHERE NOT IN文）
**3. データの更新**<br>- 特定のデータの更新(UPDATE SET　WHERE文)<br>- 特定のデータの一斉更新（UPDATE REPLACAE文）
**4. データの削除** <br>- 対象テーブル自体を削除(DROP TABLE文)　<br>- 対象テーブル内の全データを削除(DELETE FROM文) <br>- 指定したデータを削除(DROP WHERE文)<br>- ソートしたデータを削除(DELETE WHERE ORDER BY文)

## 1. テーブルの作成・設定変更
**テーブル作成（CREATE文）**

```sql:
CREATE TABLE ${テーブル名} (${カラム名}　${データ型});
```  
**カラムの追加（ALTER　ADD文）**

```sql:
ALTER TABLE ${テーブル名} ADD ${カラム名} ${データ型}; 
```
**テーブル名の変更（ALTER RENAME文）**

```sql:
ALTER TABLE ${テーブル名} RENAME ${新テーブル名};
```
**カラム名・カラムの型の変更**

```sql:
ALTER TABLE ${テーブル名} CHANGE ${フィールド名} ${新フィールド名} ${データ型};
```
**外部キー設定(FOREIGN KEY文)**

```sql:
ALTER TABLE ${テーブル名}　ADD FOREIGN KEY (外部キーにしたい子カラム名) REFERENCES ${親テーブル(親テーブルの参照先カラム名)};
```
**外部キーを解除(ALTER DROP FOREIGN KEY文)**

```sql:
ALTER TABLE　${テーブル名} DROP FOREIGN KEY ${外部キー制約};
```

## 2. データの取得
**データの取得(SELECT文)**

```sql:
SELECT ${カラム名} FROM ${テーブル名};
```
**指定したデータを取得（SELECT,WHERE文）**

```sql:
SELECT ${カラム名} FROM ${テーブル名} WHERE ${カラム名} = ${値};
```
**対象テーブルから全てのデーターを取得(SELECT * 文）**

```sql:
SELECT * FROM ${テーブル名};
```
**ソートしたデータの取得(SELECT ORDER BY文)**

```sql:
SELECT * FROM ${テーブル名} ORDER BY ${カラム名} ${ASC / DESC};
```
**特定の文字列を含むデータの取得（SELECT LIKE文）**

```sql:
SELECT ${欲しいデータ（カラム名）} FROM ${テーブル名} WHERE ${検索対象のカラム名}LIKE ${'%特定の文字列%'}
```
**比較条件を用いたデータの取得(SELECT BETWEEN文)**

```sql:
SELECT ${欲しいデータ（カラム名）} FROM ${テーブル名} WHERE ${検索対象のカラム名} BETWEEN ${比較条件の最小値}　AND ${比較条件の最大値};
```
**特定のデータ以外を取得する（SELECT WHERE NOT IN文）**

```sql:
SELECT ${欲しいデータ（カラム名）} FROM ${テーブル名} WHERE ${検索対象のカラム名} NOT IN ${得たくない値}
```
## 3. データの更新
**特定のデータを更新(UPDATE SET WHERE文)**

```sql:
UPDATE ${テーブル名} SET ${対象のカラム名} = ${更新内容（値）} WHERE ${カラム名} = ${値}　;
```
**特定のデータの一斉更新（UPDATE REPLACAE文）**

```sql:
UPDATE ${テーブル名} SET ${対象のカラム名} REPLACE (${対象のカラム名},${"置き換え対象となる文字列"},${"置き換え後の文字列"})　;
```

## 4. データの削除
**対象テーブル自体を削除(DROP TABLE文)**

```sql:
DROP TABLE ${テーブル名};
```
**対象テーブル内の全データを削除(DELETE FROM文)**

```sql:
DELETE FROM ${テーブル名};
```
**指定したデータを削除(DROP WHERE文)**

```sql:
DELETE FROM ${テーブル名}　WHERE ${カラム名} = ${値};
```
**ソートしたデータを削除(DELETE WHERE ORDER BY文)**

```sql:
DELETE FROM ${テーブル名}　ORDER BY ${ソートしたいカラム名} ${ASC/DESC} LIMIT ${消したいデータ数};
```

[参考サイト]
・【これだけ覚えてたらOK！】SQL構文まとめ
https://qiita.com/tatsuya4150/items/69c2c9d318e5b93e6ccd
・

## 最後に
今回はMySQLにおける基礎的なSQL構文をまとめました。
最近SQL文を自動生成してくれるツールなどが開発され、SQLを直接書く機会が少なくなっています。
そんな中でいざ書かないといけない時に欲しい情報がなかなか見つからない方の助けになると幸いです。

色んなサイトを見る中で紛らわしい表現があったり、色んな基礎がまとめられているサイトがなかったためこの記事を作成しました。
ぜひ今後SQLを使用するという方はブックマークなどに登録していただけると幸いです。
また私自身これからもSQLを勉強していくため、このようなSQLに関する記事は今後も作成していきますのでよろしくお願いします。
では、また。