【データベース勉強中】Docker+MySQL環境でSQLを触ってみる


# はじめに
前回DockerにMySQL環境を構築したので、今回はその環境でSQLを触ってみる。

前回の続き:**【データベース入門】DockerでMySQL環境を構築してみる**

https://qiita.com/takegons/items/742b4ee4d17692d90078


## まずはdockerのmysqlへログインする

```
// コンテナに入る
docker exec -it mysql_container bash

// mysqlへログインする
mysql -u root -p

// ログインできたら
mysql> ここにSQLを書く
```
※ここまでは前回を参照

## SQLで色々試してみる

### 既存のデータベースを確認する



```
// データベース確認
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| performance_schema |
| sys                |
+--------------------+

// テーブル確認
mysql> show tables from information_schema;
+---------------------------------------+
| Tables_in_information_schema          |
+---------------------------------------+
| CHARACTER_SETS                        |
| COLLATIONS                            |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS                               |
| COLUMN_PRIVILEGES                     |
| ENGINES                               |
| EVENTS                                |
| FILES                                 |
| GLOBAL_STATUS                         |
```


### データベースを新規で作成する

```
// データベース新規作成
mysql> create database test;

// データベース確認
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| performance_schema |
| sys                |
| test               |
+--------------------+
```

### テーブルを新規で作成する

#### ①データベースを選択する
```
// データベースを選択
use test;
Database changed

// データベースが選択されているか確認
mysql> select database();
+------------+
| database() |
+------------+
| test       |
+------------+
1 row in set (0.00 sec)
```

#### ②指定したデータベースにテーブルを作成する

とりあえずカラムはidとnameを設定する。
```
// テーブルの新規作成
mysql> create table users (id INT AUTO_INCREMENT, name TEXT, PRIMARY KEY (id));

// テーブルができたか確認
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| users          |
+----------------+
1 row in set (0.01 sec)

// テーブルのカラムを確認
mysql> show columns from users;
+-------+---------+------+-----+---------+----------------+
| Field | Type    | Null | Key | Default | Extra          |
+-------+---------+------+-----+---------+----------------+
| id    | int(11) | NO   | PRI | NULL    | auto_increment |
| name  | text    | YES  |     | NULL    |                |
+-------+---------+------+-----+---------+----------------+
2 rows in set (0.05 sec)

```

型はこちらを参照:pray_tone2:
https://qiita.com/shuhoyo/items/07d28cec6babe788051d

### テーブルにデータを追加する

```
// データ追加
mysql> insert into users (name) values ('takegons');

// データ確認
mysql> select * from users;
+----+----------+
| id | name     |
+----+----------+
|  1 | takegons |
+----+----------+
1 row in set (0.00 sec)

```

### 追加したデータを削除してみる

```
// データ削除
mysql> delete from users where id = 1;

// データ確認
mysql> select * from users;
Empty set (0.01 sec)
```

### 作成したテーブルを削除する

```
// テーブル削除
mysql> drop table users;

// テーブル確認
show tables;
```

### 作成したデータベースを削除する

```
// データベース削除
mysql> drop database test;

// データベース確認
mysql> show databases;
```
:::note info
よく使うSQL

データベース確認
SHOW DATABASES;

テーブル確認
SHOW TABLES FROM 対象のデータベース;

テーブルの中身をすべて確認
SELECT * FROM テーブル名;

データベース新規作成
CREATE DATABASE データベース名;

テーブル作成
CREATE TABLE テーブル名(カラム 型, カラム 型, カラム 型);

テーブルの項目一覧
DESC テーブル名;

データ追加
INSERT INTO テーブル名 (列名1, 列名2,...) VALUES (値1, 値2,...);

データ削除
DELETE FROM テーブル名　WHERE 指定;

テーブル削除
DROP TABLE テーブル名;

データベース削除
DROP DATABASE テーブル名;

:::