SQLを学ぼう！【1章】

今回はSQLについて学んだ結果、私自身の備忘録としてこの記事を書きました。
SQLを実際に使いながら、データベースの作成、一連のデータ操作（挿入、更新、削除）を行なっていきたいと思います。
よろしくお願いいたします。

#SQLについて
SQLとはデータベース内のデータを操作する**プログラム言語**になります。
データベースを操作する際に必須の知識です。
それでは、SQLを使いながらデータベースを操作していきましょう。

##データベースを確認する
まず、MySQLに接続しましょう。補足ですが、今回の記事では**EC2からRDS（MySQL）へ接続方法については触れません。**MySQLへの接続方法がわからない方は申し訳ありませんが接続方法を確認してからこの記事を読んでいただくようにお願いいたします。

MySQLに接続したら、**「mysql> SHOW DATABASES;」**と入力して、存在するデータベースを確認してみます。
初期設定では、下記の5つのデータベースが作成されています。

```ruby:ターミナル
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| innodb             |
| mysql              |
| performance_schema |
| sampledb           |
| sys                |
+--------------------+
6 rows in set (0.00 sec)
```

##データベースを作成する

この記事では「NEW DATA」という名で、新たなデータベースを作成します。
**CREATE DATABASE データベース名;**コマンドで作成できます。

```ruby:ターミナル
mysql> CREATE DATABASE NEW DATA;
Query OK, 1 row affected (0.18 sec)
```

Query OKと表示されていれば成功しています。
データベースが作成できていることを確認してみます。確認するのは**「SHOW DATABASES」**コマンドを実行します。

```ruby:ターミナル
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| NEW DATA           |
| innodb             |
| mysql              |
| performance_schema |
| sampledb           |
| sys                |
+--------------------+
7 rows in set (0.00 sec)
```

##データベースの指定

作成した「NEW DATA」データベース内に、テーブルを作成していきます。
まず、利用するデータベースを選択する必要があります。
データベースの指定は、**USE データベース名;**コマンドでできます。
 
```ruby:ターミナル
mysql> USE NEW DATA;
Database changed
```

「Database changed」と表示されれば、選択完了です。
それでは、選択したデータベース内にテーブルを作成していきます！

ここでは、「list」という名で、新規テーブルを作成します。
テーブルを作成するには、「CREATE TABLE」コマンドを実行します。

**CREATE TABLE テーブル名 (カラム名1 カラム型,
カラム名2, カラム型,...,カラム名n, カラム型);**

| 内容 | カラム名 | カラム型 |
|:-----------:|:------------:|:------------:|
| ID       | 　　id　　        | 　　INT    　　     |
| 　　　　　名前　   　　　　 | 　　　name　　　      | 　　VARCHAR(100) 　　      |
| 住所       | address        |　　 TEXT       　　  |

カラム型の記述は、それぞれ以下の内容を表します。
**INT：整数型（4バイト）
VARCHAR(100)：可変長文字型（n文字65535バイトまで指定可）
TEXT：最大文字列を指定しない文字列型**

```ruby:ターミナル
mysql> CREATE TABLE list (id INT, name VARCHAR(100), address TEXT,);
Query OK, 0 rows affected (0.78 sec)
```

「Query OK」と表示されれば、作成完了です。

##テーブルを確認する
先ほど使用した、「SHOW TABLES」コマンドを実行し、テーブルを確認してみます。

```ruby:ターミナル
mysql> SHOW TABLES;
+--------------------------+
| Tables_in_NEW DATA       |
+--------------------------+
| list                     |
+--------------------------+
1 row in set (0.18 sec)
```

テーブルのカラムも確認してみます。
カラムを確認するには、「DESC」コマンドを実行します。

```ruby:ターミナル
mysql> DESC list;
+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| id         | int(11)      | YES  |     | NULL    |       |
| name       | varchar(100) | YES  |     | NULL    |       |
| address    | text         | YES  |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+
3 rows in set (0.17 sec)
```

##テーブルにデータを挿入する
作成したlistテーブルに、データを挿入していきます。
テーブルへデータを挿入するには、**INSERT文**を用います。

**INSERT INTO テーブル名 (カラム名1, カラム名2, ...) VALUES (値1, 値2, ...);**

「値」を入力する場合、文字データは「'」で囲むことを忘れないように注意します。 

```ruby:ターミナル
mysql> INSERT INTO list (id, name, address) VALUES (1, '学　太郎', '東京都世田谷区');
Query OK, 1 row affected (0.20 sec)
```

##テーブルのデータを検索する
テーブル内にデータを表示するには、**SELECT文**を用います。

**SELECT * FROM テーブル名;**

それでは実際に、データを表示します。

```ruby:ターミナル
mysql> SELECT * FROM list;
+------+---------------+---------------------------+
| id   | name          |  address                  |                                
+------+---------------+---------------------------+
|    1 | 学 太郎      　　　　| 東京都世田谷区 　　　　　　　　　　　　　　　　　　　　　　　　　 |
+------+---------------+---------------------------+
1 row in set (0.17 sec)
```

挿入したデータが、表示されたと思います。
この「*」は「ワイルドカード」と呼ばれ、すべてのカラムを表示させる場合に使います。

今回はMySQLに接続し、データベースの作成や指定、指定したデータベースにテーブルを作成し、データを挿入する作業について、記事を書きました。次回はこの挿入したデータの検索方法を書いていきたいと思います！

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