MYSQL　SQLチュートリアル　データベースの作成

# SQLとは
SQLは国際標準化機関であるISOから標準化されている。
MySQLもSQLへの準拠度を高めつつありますが独特の方言を持つ部分がある。
## 思ったこと
その違いをわかるようになる。

# データベースオブジェクトの生成と破棄
・データベースの作成
・テーブルの作成
・インデックスの作成？
・ストアドルーチンの作成？？？
## 思ったこと
ストアドルーチンの作成はちょっと分からないがまあ次に進めよう。

# データベースの作成```CREATE DATABASE```
・データベースの作成
・データベースの削除
・データベースのデフォルト指定設定を変更
これが基本動作です。

## データベースの作成
データベース作成するには```CREATE DATABASE```を使う。
データベースを作成する際には```必ず必要```となる。
作成する場合は文字コードや照合順序、暗号化の情報などを指定できます。
MySQLの場合データベースのことを```スキーマ```という。
なのでコマンドの```CREATE DATABASE```,```CREATE SCHEMA```は同じ意味になる。
またデータベース名に同じものがあってはならないために```既存の場合はエラーが発生```する
```IF NOT EXISTS```をつけるとデータベース名は既存の場合は何もせずに終了するようになる。
```
mysql> show databases;
+---------------------------+
| Database                  |
+---------------------------+
| garden_development        |
| garden_review_development |
| garden_review_test        |
| garden_test               |
| information_schema        |
| mysql                     |
| performance_schema        |
| sys                       |
+---------------------------+
8 rows in set (0.01 sec)

mysql> CREATE DATABASE train_development
    -> ;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+---------------------------+
| Database                  |
+---------------------------+
| garden_development        |
| garden_review_development |
| garden_review_test        |
| garden_test               |
| information_schema        |
| mysql                     |
| performance_schema        |
| sys                       |
| train_development         |
+---------------------------+
9 rows in set (0.00 sec)
```
```train_development```が作成された。成功！
同じデータベース名で作成してみると...
```
mysql> CREATE DATABASE train_development;
ERROR 1007 (HY000): Can't create database 'train_development'; database exists
```
既に存在していることがメッセージとして表示された。
```
mysql> CREATE DATABASE IF NOT EXISTS train_development;
Query OK, 1 row affected, 1 warning (0.00 sec)
```
多分これがエラーメッセージが表示されず終了
```
mysql> show databases;
+---------------------------+
| Database                  |
+---------------------------+
| garden_development        |
| garden_review_development |
| garden_review_test        |
| garden_test               |
| information_schema        |
| mysql                     |
| performance_schema        |
| sys                       |
| train_development         |
+---------------------------+
9 rows in set (0.00 sec)
```

## データベースの削除
```DROP DATABASE```で削除できる。
```
mysql> show databases;
+---------------------------+
| Database                  |
+---------------------------+
| garden_development        |
| garden_review_development |
| garden_review_test        |
| garden_test               |
| information_schema        |
| mysql                     |
| performance_schema        |
| sys                       |
| train_development         |
+---------------------------+
9 rows in set (0.00 sec)

mysql> DROP DATABASE train_development
    -> ;
Query OK, 0 rows affected (0.01 sec)
```
```
mysql> show databases;
+---------------------------+
| Database                  |
+---------------------------+
| garden_development        |
| garden_review_development |
| garden_review_test        |
| garden_test               |
| information_schema        |
| mysql                     |
| performance_schema        |
| sys                       |
+---------------------------+
8 rows in set (0.00 sec)
```
確かに削除されている。成功！
```
mysql> DROP DATABASE train_development;
ERROR 1008 (HY000): Can't drop database 'train_development'; database doesn't exist
```
同名の削除はエラーを起こす。
```
mysql> DROP DATABASE IF EXISTS train_development;
Query OK, 0 rows affected, 1 warning (0.00 sec)
```
これも```IF NOT EXISTS```を使うとエラーメッセージが表示されない。

## データベースの既存データベースのデフォルト指定内容を変更する
```ALTER DATABASE```を使い変更する。
今はちょっと難しそう
変更内容は
```文字コード```
```照合順序```
```暗号化の情報```
を変更できる。
もしかしたらこれ以外も変更できるかもしれない（今はここまで）