MySQL入門　mysqlコマンドラインクライアント

# mysql（データベース管理システム）
データベースを管理するソフトウェアのこと

# mysqlコマンドラインクライアント
mysqlサーバーはSQL文の命令として受け取ってさまざまな処理をする。
プログラミング言語で記述されたプログラムがSQL文を送出する。
そしてそのSQL文を実行するプログラムもある。
それがmysqlコマンドラインクライアントだ。

## mysqlコマンドラインクライアントの起動
```
************@mbp training % mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.28 Homebrew

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
```
これが```mysqlコマンドラインクライアント```を起動させていたのか。
知らなかった。

いろいろオプションがあるようだか、これは飛ばす。

## mysqlコマンドラインクライアントでの操作
```
mysql> SELECT id, name,
    ->        adress, zipcode
    ->   FROM mytable
    -> ;
ERROR 1046 (3D000): No database selected
```
```
mysql> SELECT id, name,address,zipcode FROM mytable;
ERROR 1046 (3D000): No database selected
```
この２つのコードの意味は```同じ```である。

# '> ">の途中
```'```,```"```で閉じずに改行した場合は```'>```,```">```が表示される。
そして```;```で終端文字を入力しても閉じられていないので終わらない。
閉じた後に終端文字を入力すれば終わる。
```
ERROR 1046 (3D000): No database selected
mysql> SELECT id, name,
    ->        adress, 'zipcode
    '> ;
    '> '
    ->   FROM mytable
    -> ;
ERROR 1046 (3D000): No database selected
```

このコマンドを入力するとmytableから取り出せる。
```ERROR 1046 (3D000): No database selected```が表示されたのは
まだテーブルを作成していないからだ。

## 結果を縦に出力
mysqlは通常は横向きに表示される。
このように
```
mysql> select * from users;
+----+--------------------+
| id | name               |
+----+--------------------+
| 60 | ブイゼル           |
| 61 | あ            |
| 62 | あ       |
| 63 | あ        |
| 64 | あ                 |
| 65 | あ        |
| 66 | あ                 |
| 67 | あ                 |
| 68 | あ                 |
| 69 | い                 |
| 70 | あ                 |
| 71 | あ                 |
| 72 | ブイゼル           |
| 73 | ブイゼル           |
| 74 | ブイゼル           |
| 75 | ブイゼル           |
| 76 | 早起き             |
| 77 | あ        |
| 78 | あ        |
+----+--------------------+
19 rows in set (0.00 sec)           |
```
終端文字```;```の代わりに```\G```と入力すると```縦向き```に表示される。
```
mysql> select * from users\G
*************************** 1. row ***************************
  id: 60
name: あ
*************************** 2. row ***************************
  id: 61
name: あ
*************************** 3. row ***************************
  id: 62
name: a
*************************** 4. row ***************************
  id: 63
name: a
*************************** 5. row ***************************
  id: 64
name: あ
*************************** 6. row ***************************
  id: 65
name: a
*************************** 7. row ***************************
  id: 66
name: あ
*************************** 8. row ***************************
  id: 67
name: あ
*************************** 9. row ***************************
  id: 68
name: あ
*************************** 10. row ***************************
  id: 69
name: い
*************************** 11. row ***************************
  id: 70
name: あ
*************************** 12. row ***************************
  id: 71
name: あ
*************************** 13. row ***************************
  id: 72
name: ブイゼル
*************************** 14. row ***************************
  id: 73
name: ブイゼル
*************************** 15. row ***************************
  id: 74
name: ブイゼル
*************************** 16. row ***************************
  id: 75
name: ブイゼル
*************************** 17. row ***************************
  id: 76
name: 早起き
*************************** 18. row ***************************
  id: 77
name: a
*************************** 19. row ***************************
  id: 78
name: a
19 rows in set (0.00 sec)
```
このようになる。
### 縦表示に適しているは
```カラム名が多い```こと。
カラム名の```文字列が長い```場合。
またみて分かるが
```件数の多いテーブルには適さない```。

## mysqlコマンドラインクライアントの終了
```exit```,```quit```,```\q```の３種類で終了できる。

また起動しなければならない。
```
mysql> exit
Bye
******@mbp training %
```
## 対話モードとバッチモード
通常の```mysqlコマンドラインクライアント```は対話モードと言う。
今まで見てきたコマンドを打ってその後結果が表示される状態のこと。
そのほかにもう一つ状態それが```バッチモード```がある。
それはあらかじめファイルにファイルに記述しておいたSQL文を実行したり、コマンドラインに直接SQL文を記述する。

ちょっとこれはできなかった。
まぁ理解はできた。

## mysqlコマンドラインクライアントのその他の情報
mysqlコマンドラインクライアント上で```矢印キーの上、下```を押すと```入力履歴```が呼び出せる。
入力途中で```Tab```キーを押すと```テーブル名やSQLの命令命令などを補完```してくれるので入力時に便利。