データベース動作用構文【MYSQL】

##MYSQLへの接続##
mysqlにユーザー名rootで接続する
"ユーザー名:root" = "-u root"にあたる

```ターミナル
$ mysql -u root
```

![Kobito.NfjmL6.png](https://qiita-image-store.s3.amazonaws.com/0/169530/56d8e7ea-3c4e-4a4c-3722-52078d00865a.png "Kobito.NfjmL6.png")

##データベースの確認##
現在どのようなデータベースが存在するかを確認する。

```
show database;
```

![Kobito.fjv10M.png](https://qiita-image-store.s3.amazonaws.com/0/169530/f15a6844-03f3-b85c-f111-f91f31265537.png "Kobito.fjv10M.png")

SQL文を実行すると以下のように、今まで作ってきたデータベースが一覧で表示される。
![Kobito.IFLv6P.png](https://qiita-image-store.s3.amazonaws.com/0/169530/0afa6665-8420-992e-0b7c-e2ce36b4cb90.png "Kobito.IFLv6P.png")

##データベースの作成##
今まではrake db:createコマンドを実行することでRailsがデータベースを作成していたが、ここではターミナルから直接データベースを作成する。

```
create database データベース名;
```

以下のように表示がされれば正常にデータベースが作成されている。
![Kobito.I5QHcF.png](https://qiita-image-store.s3.amazonaws.com/0/169530/28704b4b-9bfe-692b-8695-a74ff9076300.png "Kobito.I5QHcF.png")

##データベースの選択##

```
use データベース名;
```

以下のように表示がされていれば正常にデータベースの選択が出来ている。
![Kobito.NVX3xe.png](https://qiita-image-store.s3.amazonaws.com/0/169530/6983be04-a44f-5e3c-fe3f-18fcae4fa744.png "Kobito.NVX3xe.png")

##テーブル構造の操作##
選択したデータベースに存在するテーブルを一覧で表示するSQL文

```
show tables;
```

![Kobito.irS2BA.png](https://qiita-image-store.s3.amazonaws.com/0/169530/b7a159a8-4627-6b57-c639-e4f21614f6a6.png "Kobito.irS2BA.png")

##テーブルの作成##
テーブルに作成するカラムの名前とそのカラムの型を指定することが出来る。

```
create table テーブル名 (カラム名 カラム名の型, ...);
```

Railsでテーブルを作る際は、rails g model モデル名でそのテーブルに紐づくモデルを作成し、そのときに作られたマイグレーションファイルをrake db:migrateで実行していた。そのrake db:migrateが実行される裏側では、このCREATE TABLEというSQL文が動いていたということ。

以下のように表示がされればSQL文が実行されている。
![Kobito.u5oTrL.png](https://qiita-image-store.s3.amazonaws.com/0/169530/f40005fd-7218-a945-e0f7-556e5c652582.png "Kobito.u5oTrL.png")

##テーブルの確認##
以下のように"Tables_in_sqltest"に"goods"というテーブルが確認できれば、テーブルが正しく作成されたということ。

```
show tables
```
![Kobito.1L63Uw.png](https://qiita-image-store.s3.amazonaws.com/0/169530/05a561e3-eb08-8a2d-69e1-d31afbab2a0a.png "Kobito.1L63Uw.png")

##テーブル構造の確認##
テーブル構造を確認するためには以下のようなSQL文を記述する。

```
show columns from テーブル名
```


![Kobito.J38uvw.png](https://qiita-image-store.s3.amazonaws.com/0/169530/143cdfa3-8479-a85b-b3a2-be4deacd28e7.png "Kobito.J38uvw.png")


##カラムの追加##
カラムの追加・修正・削除はすべてテーブル構造の変更。
そのためSQL文は共通して、ALTER命令を用いたALTER TABLE文を使用する。
実行時は以下のような文法で使用。

```
alter table テーブル名 操作
⬇︎
alter table テーブル名 add カラム名 カラムの型;
alter table テーブル名 add (カラム名 カラムの型, ...);
```

以下のように結果が表示されていれば正常に実行が出来ている。
![Kobito.X5kuau.png](https://qiita-image-store.s3.amazonaws.com/0/169530/3b356742-cf60-5c98-61be-bb27834c10c8.png "Kobito.X5kuau.png")


##カラムを修正##
カラムの修正は先ほど同様ALTER TABLE文を使用し、以下のような文法でSQL文を記述。

```
alter table テーブル名 change 古いカラム名 新しいカラム名 新しいカラムの型;
```

以下のように表示がされれば正常に実行が出来ている。
![Kobito.n2qeuO.png](https://qiita-image-store.s3.amazonaws.com/0/169530/d92c58ad-67a3-b22e-e276-4cd6616fab23.png "Kobito.n2qeuO.png")
![Kobito.0Pma0p.png](https://qiita-image-store.s3.amazonaws.com/0/169530/7b58860f-41ae-ad5a-d90a-43a05f6e5c6f.png "Kobito.0Pma0p.png")

##カラムの削除##
カラムの削除にもALTER TABLE文を使用し、以下のようにSQL文を記述。

```
alter table テーブル名 drop カラム名;
```

以下のように表示がされていれば正常に実行が出来ている。
![Kobito.QETrK9.png](https://qiita-image-store.s3.amazonaws.com/0/169530/1505a9d3-3d36-a03e-dd26-0e26fae08096.png "Kobito.QETrK9.png")