【いくつ知ってる？】MySQLでCRUD操作のクエリまとめ【超基本】

<br><br>

最近`MySQL`にどっぷり浸かって学習しているのですが、ある程度知識のストックもできたのでアウトプットがてら、**超基本的なCRUD操作**のクエリについて、まとめて行きたいと思います。

<br>

## 目次
<ul>
  <li>CRUDについて</li>
  <li>Create</li>
  <li>Read</li>
  <li>Update</li>
  <li>Delete</li>
</ul>

<br>

## CRUDについて

まず初めに、**CRUD(クラッド)**とは目次でも書きましたが、

<ul>
  <li>Create(作成)</li>
  <li>Read(参照)</li>
  <li>Update(更新)</li>
  <li>Delete(削除)</li>
</ul>

と言う、Webサービスなどで**最も基本的な機能**の事を指します。

例えばツイッターなんかでも、ツイートを`作成`し、それをフォロワーなどが`見る(参照)`ことができます。そして、プロフィールなどの部分を随時`更新`する事ができ、不要なツイートやアカウントは`削除`する事ができます。

このような**基本的な機能**の事を総称して生まれたのが、**CRUD**と言う言葉になります。次からは、このCRUD操作を**MySQLのクエリ**でどのように行っていくのかを、説明していこうと思います。

<br><br>

## Create

#### CREATE句
```sql
-- EXampleデータベースを作成。
CREATE DATABASE EXample;

-- Exampleテーブルの作成。
CREATE TABLE Example
  (
		id INT(10) not null auto_increment primary key,
        name VARCHAR(255) not null,
        age INT(3)
  );
```
テーブルの作成について、細かい事は省きますが、括弧の中は１行につき、１カラム(縦列)の設定を行っています。表で書くとこんな感じですね。

| id  | name | age | 
| :-: | :--: | :-: | 
|     |      |     | 
|     |      |     | 
|     |      |     | 

<br><br>

#### INSERT句
```sql
-- Exampleテーブルにレコードを追加。
INSERT INTO Example VALUES (1, "Abe", 32);
```
レコード(横列)の作成(追加)。カラムの並びに応じて、カンマ区切りでデータを記述します。実行後はこんな感じですね。

| id  | name | age | 
| :-: | :--: | :-: | 
| 1   | Abe  | 32  | 
|     |      |     | 
|     |      |     | 

<br>

複数行を一気にいれる場合はこちら。

```sql
-- Exampleテーブルに複数レコードを追加。
INSERT INTO Example VALUES
		(2, "Ide", 37),
        (3, "Hide", 21);
```
実行後はこんな感じです。

| id  | name | age | 
| :-: | :--: | :-: | 
| 1   | Abe  | 32  | 
| 2   | Ide  | 37  | 
| 3   | Hide | 21  | 

<br><br><br><br>

## Read

#### SHOW句
```sql
-- データベースの一覧
SHOW DATABASES;

-- テーブルの一覧
SHOW TABLES;

-- Exampleテーブルのカラム情報一覧
SHOW COLUMNS FROM Example;
```
個人的には**テーブルの一覧を確認**する事が多いですね。ECサイトのDBとかになると**テーブルが10個近く**あったりするので、いちいち覚えてられません。(笑)

<br><br>

#### SELECT句
```sql
-- Exampleテーブルの全カラムを取得。
SELECT * FROM Example;

-- Exampleテーブルのnameカラムを取得。
SELECT name FROM Example;

-- Exampleテーブルのidカラム、nameカラムを取得。
SELECT id, name FROM Example;
```
最も基本的な`SELECT句`の使い方です。**全カラム情報の取得**なんかは、よく使います。

<br><br>

#### WHERE句
```sql
-- Exampleテーブルで、ageが32の全カラムを取得。
SELECT * FROM Example WHERE age = 32;
```
`WHERE句`は主に**条件指定**をする際に使用します。情報を取得する時は、条件を絞って取得することがほとんどなので、こちらは<font color=red>**超頻出**</font>ですね。

実行して取得できるのは、こんな感じですね。

| id  | name | age | 
| :-: | :--: | :-: | 
| 1   | Abe  | 32  | 

<br><br><br><br>

## Update

#### UPDATE句
```sql
-- Exampleテーブルでageカラムを、全て50に変更。
UPDATE Example SET age = 50;

-- Exampleテーブルでidが1のageカラムを、50に変更。
UPDATE Example SET age = 50 WHERE id = 1;
```
使うのは下の方ですね。特定のレコードの情報を更新したい時なんかに使用。あと紹介しといてあれですが、上はほぼ使わないです。(笑)

<br><br><br><br>

## Delete

#### DELETE句
```sql
-- Exampleテーブルの全レコードを削除。(テーブル自体は残る)
DELETE FROM Example;

-- Exampleテーブルの id=1 に一致したレコードを削除。
DELETE FROM Example WHERE id=1;
```
こちらも使うのは下の方ですね。上は実行しようとすると、逆に**セーフティ設定で弾かれる**ことがあります。

<br><br>

#### DROP句
```sql
-- Exampleテーブルをオブジェクトごと完全に削除。
DROP TABLE Example;

-- EXampleデータベースの削除。
DROP DATABASE EXample;
```
こちらは**不要になったテーブルやデータベース**を削除したい時に使いますね。ただ、一度構築して運用を始めたら、余程の事がない限りは使わないかと。

<br><br><br><br>

## まとめ
基本的なCRUD操作は、以上の内容である程度できるかと。ただ、`SELECT句`に関しては、`WHERE句`以外にも使えるクエリが沢山あります。(曖昧な検索をする`LIKE句`など)

気になる方は是非、本格的に学習してみてください！

最後まで読んでいただき、ありがとうございました！

<br><br><br><br>

筆者：yuki｜学習10日目で初案件獲得→現在はフルスタックエンジニア転職に向けて学習中
Qiita：https://qiita.com/yuki4839
Twitter：https://twitter.com/yuki35522891