はじめに
これまでずっとフロントエンドでやってきて、バックエンド・DBは触ってこなかったので勉強しつつ覚書として残しておくためのものです。
流れ
- 導入(OSX)
- 立ち上げ
- 基本操作
導入(OSX)
homebrewをインストールしてある場合、以下のコマンドでインストールできます。
(homebrewがインストールされていない場合は各自でインストールしてください)
$ brew install mysql
バージョンの確認をします。
$mysql --version
以下のような感じで出ればインストール完了です。
$ mysql --version
mysql Ver 8.0.12 for osx10.13 on x86_64 (Homebrew)
立ち上げ
mysqlへ接続するには、以下のコマンドを使用します。
$ mysql -h host -u user -p
host, userにはそれぞれhost名とuser名が入り、この次の行でpasswordの入力を求められます。
ただし今回は同一host(localhost)ですのでhostを省略します。
$ mysql -u root -p
さらに、rootユーザーであればpasswordの入力も不要ですので、何も入力せずエンターキーを押せば立ち上がります。
-pの後にスペースを開けずにパスワードを記入する(例:-ppassword)ことでパスワードの入力を省くこともできるが、セキュリティ上の観点から非推奨。
なお、UnixまたはWindowsユーザーでエラーが出る場合は公式docsのこのあたりを参照すると良いらしいです。
うまく立ち上がると、以下の画面が出てくると思います。
(バージョンによって多少変わるかと思います)
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.12 Homebrew
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
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コマンドを打ち込むことでmysqlを操作できます。
元のターミナルに戻るためにはexitと入力します。
mysql> exit
Bye
以上で、mysqlサーバーを立ち上げ、終了する流れができました。
基本操作
基本的には、この
mysql>
という表示がある状態でコマンドを入力していくことによりmysqlを操作していきます。
基本的な操作(クエリ)の動作についてはこんな感じ。
- 文末はセミコロン(;)で終わる。(quit, use, exitなど一部例外あり)
- 間違えてセミコロンを省いてしまうと、複数行クエリの受付になってしまう。useなどにセミコロンがつく分には問題ないので、毎回セミコロン打つ癖を付けたほうが良さそう。
- クエリの実行時に、サーバーに対してリクエストを送り、処理結果を表示する。
- 処理結果は行と列のあるテーブル状に表示される
- クエリは大文字小文字関係ない(show databasesでもSHOW DATABASESでも動く)
現在あるデータベースの一覧表示
mysql> SHOW DATABASES;
データベースの作成
mysql> CREATE DATABASE test;
データベースの選択
mysql> USE test
データベースの選択は本来mysql立ち上げごとに行わなくてはならないが、
立ち上げ時のコマンドラインの末尾にデータベース名を付けておけば一発で切り替えまで行える。
$ mysql -h host -u user -p test
テーブルの作成(とデータの注入)
mysql> CREATE TABLE todos (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
content CHAR(40) DEFAULT '',
appointedto CHAR(20) DEFAULT '',
duedate DATE,
PRIMARY KEY(id));
mysql> INSERT INTO todos (content,appointedto,duedate) VALUES
('A','John','2018-12-04'),('B','Hanna','2018-12-12'),('A','Jack','2018-12-23'),('B','John','2018-12-05'),
('C','John','2018-12-24'),('D','Jack','2018-12-9'),('D','David','2018-12-05');
- 名称、データタイプ、デフォルト値の順で各項目を設定。
- AUTO_INCREMENTを設定することで、数値を自動設定してくれるようになる(その場合PRIMARY KEYとしての指定が必須)
- DEFAULT値を指定していなかった場合はNULLになる。
テーブルの確認
データベース内のテーブル一覧
mysql> SHOW TABLES;
+----------------+
| Tables_in_test |
+----------------+
| todos |
+----------------+
詳細の確認
mysql> DESCRIBE todos;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | mediumint(9) | NO | PRI | NULL | auto_increment |
| content | char(40) | YES | | | |
| appointedto | char(20) | YES | | | |
| duedate | date | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
特定情報の抽出
mysql> SELECT * FROM todos ORDER BY duedate;
+----+---------+-------------+------------+
| id | content | appointedto | duedate |
+----+---------+-------------+------------+
| 1 | A | John | 2018-12-04 |
| 4 | B | John | 2018-12-05 |
| 7 | D | David | 2018-12-05 |
| 6 | D | Jack | 2018-12-09 |
| 2 | B | Hanna | 2018-12-12 |
| 3 | A | Jack | 2018-12-23 |
| 5 | C | John | 2018-12-24 |
+----+---------+-------------+------------+
テーブルの削除
DROP TABLE todos;
*該当するDBを選択(USE)状態である必要がある
データベースの削除
DROP DATABASE dbname;
削除の際に、特に警告等は出ないので注意
参考文献
https://dev.mysql.com/doc/refman/8.0/en/tutorial.html
https://www.tutorialspoint.com/mysql/index.htm