MySQLの使い方

MySQL(8)の使い方をまとめました。

# 前提条件
- MacでHomebrewとXcodeがインストールされていること

# インストール

```shell
$ brew install mysql
```

# 使い方
## MySQLの接続
### サーバーの起動

```shell
$ mysql.server start
```

### サーバーの停止

```shell
$ mysql.server stop
```

### サーバーの再起動

```shell
$ mysql.server restart
```

### バージョン確認

```shell
$ mysql --version
```

### ログイン

```shell
$ mysql -u root
```

### パスワード付きのログイン

```shell
$ mysql -u root -p
```

### 終了

```sql
> exit;
```

## データベースの扱い
### データベースの表示

```sql
> show databases;
```

### データベースの作成

```sql
-- create database データベース名;
> create database test;
```

### データベースの削除

```sql
-- drop database データベース名;
> drop database test;
```

### データベースの使用

```sql
-- use データベース名;
> use test;
```

### テーブルの一覧を表示

```sql
> show tables;
```

### テーブルの作成
**オプション**
- primary key(キー項目)
- auto_increment(連番、データ型はint、キー項目にすること)

```sql
-- create table テーブル名(フィールド名 データ型 オプション, フィールド名 データ型 オプション, フィールド名 データ型 オプション);
> create table test(id int primary key auto_increment, name varchar(10), col varchar(10));
```

### テーブルの削除

```sql
-- drop table テーブル名;
> drop table test;
```

### テーブルのフィールド構造を表示

```sql
-- show fields from テーブル名;
> show fields from test;
```

### プライマリーキーの追加

```sql
-- alter table テーブル名 add primary key(キー項目);
> alter table test add primary key(id);
```

### テーブル名の変更

```sql
-- altet table 古いテーブル名 rename to 新しいテーブル名;
> alter table test rename to new_test;
```

### フィールドの追加

```sql
-- alter table テーブル名 add 追加するフィールド名 データ型;
> alter table test add new_field varchar(10);
```

### フィールド名の変更

```sql
-- alter table テーブル名 change 元のフィールド名 変更するフィールド名 データ型;
> alter table test change old_field new_field varchar(10);
```

### フィールド型の変更

```sql
-- alter table テーブル名 modify フィールド名 変更するデータ型;
> alter table test modify new_field varchar(5);
```

### フィールドの削除

```sql
-- alter table テーブル名 drop 削除するフィールド名;
> alter table test drop new_field;
```

## データの扱い
### 全フィールドに挿入

```sql
-- insert into テーブル名 values(値1, 値2, 値3);
> insert into test values(0, 'johnny', 'jojo');
```

### 特定のフィールドに挿入

```sql
-- insert into テーブル名(挿入したいフィールド名1、挿入したいフィールド名2) values(値1,値2);
> insert into test(id, name, col) values(10, 'john', 'giogio');
```

### データの更新

```sql
-- update テーブル名 set 変更するフィールド名=値 where 条件;
> update test set name = 'jonathan' where id = 10;
```

### データの削除

```sql
-- delete from テーブル名 where 条件;
> delete from test where id = 10;
```

### データの抽出
#### 基本形

```sql
-- select 表示するフィールド名 from テーブル名;
> select name from test;
```

#### 条件付きの抽出

```sql
-- select 表示するフィールド名 from テーブル名 where 条件;
> select name from test where id = 0;
```

### 並び替え

```sql
-- select 表示するフィールド名 from テーブル名 order by 基準になるフィールド名 asc or desc (昇降);
> select name from test order by id asc;
```

### 件数を指定して表示

```sql
-- select 表示するフィールド名 from テーブル名 limit 開始位置 件数;
> select name from test limit 10;
```

## ユーザのパスワード変更
### 新規設定
ログインして`mysql`データベースを使用する。
任意のパスワードを入力して、パスワードを設定する。

```shell
$ mysql -u root
```

```sql
> use mysql;
```

```sql
> alter user 'root'@'localhost' identified by '任意のパスワード';
```

### 初期化
サーバーを停止して、セーフモードで起動、ログインをする。
ユーザーのパスワードを空にして、サーバーを再起動する。

```shell
$ mysql.server stop
```

```shell
$ mysqld_safe --skip-grant-tables &
```

```shell
$ mysql -u root
```

```sql
> update mysql.user set authentication_string=null where user='root';
```

```sql
> exit;
```

```shell
$ mysql.server restart
```

# MySQLがエラーになるとき
ローカルのMySQLがエラーになるときは全てを削除して、インストール・再起動しなおす。
それでもダメだった場合は、Mac本体の再起動を行う。

```shell
$ sudo rm -rf /usr/local/var/mysql
```

```shell
$ brew uninstall mysql
```

```shell
$ brew install mysql
```

```shell
$ mysql.server start
```

# 参考文献
この記事は以下の情報を参考にして執筆しました。

- [MySQL8でユーザーのパスワードの変更 / リセット方法](http://www-creators.com/archives/5574)