実際にMySQLを使用してみる
初めまして、ALTURA X エンジニアインターン生の目時と申します。
今回は、前に各RDBMSを調べた際にMySQLについて実際に手を動かしながら記事を書いたので、まとめてさせていただきました。
使用環境
使用環境はm1 Mac 2020
Mysqlをダウンロードするところから開始https://mysql.sql55.com/env/how-to-install-mysql-mac.php
このサイトを参考してダウンロードしました。https://dev.mysql.com/downloads/mysql/
一番上のものをダウンロードしました。ここで、ARMとx64の違いがよくわからなかったので、良い機会に、学習してみました。参考にしたサイトは以下の通りです。
ARMとx64の違い
簡単にいうと、CPUアーキテクチャの違いです。
X64は、従来のパソコンで使用されてきたものであるのに対して、
ARM64は電力の消費が少ないので、スマートフォンのような小型のものに向きで、使用されてきました。しかし、近年では、PCにも使われるようになり、これはM1チップより広く使用されるようになっていったそうです。
今回は、使用環境を踏まえて、ARM64をダウンロードしていくことにしました。
MySQLへログインする
MySQLを使用する際には、大文字で使用しました。(小文字でも使用できるが、わかりやすさのため)
MYSQL -uroot
これでルートというユーザーでMYSQLにログインします。ルートとは、元々用意してくれていたユーザー(パスワードの必要がない)、ユーザーを作って、パスワードも設定してMYSQLを使用することもできますが、今回は簡易のためにこのまま進めました。
今回は、すでに公式サイトからダウンロードしていましたが、、もしダウンロードしていない場合には、
$ brew install mysql
これからダウンロードをすることもできます。後ろに@バージョンをつけることで、特定のバージョンをダウンロードすることもできます。今回は特に指定をせずにダウンロードしました。(指定がないとおそらく最新バージョンがダウンロードされると思われる。)
MYSQL -urootを実行すると、
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 20
Server version: 9.0.1 Homebrew
のような表示が出てきます。これでサーバーバージョンが確認できます。
MySQLの基本的な操作を行ってみた。
まず、自分のデータベースを確認する。
mysql > SHOW DATABASES;
これで、今現在のデータベースを確認することができます。
もし、コロンを忘れると
mysql > SHOW DATABASES
->
このようになります。(実際に何度か忘れてこのような表示になりました。)
>はまだSQL文が終了していないことを示しており、;をつけることで終了することを示しています。
CREATE
次に、CREATE文を使用してデータベースを作成してみます。
mysql > CREATE DATABASE datasql;
これでデータベースを作成しました。そうすると、
Query OK, 1 row affected (0.02 sec)
このような表示が出ます。
もう一度show文で確認してみると、
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| datasql |
| information_schema |
| mysql |
| performance_schema |
| sqltest |
| sys |
+--------------------+
6 rows in set (0.01 sec)
このように、しっかり追加されていることが確認できました。
USE
次に追加したデータベースを使用(USE)してみます。
USE文を用いて、
mysql > USE datasql;
Database changed
上の文を実行すると、下のような表示が出てきました。
USE文を使用して、使用するデータベースを指定しているときには、
mysql > CREATE TABLE table_name(columns_name data_type, ...)
このようにして、テーブル名(カラム名、カラムのデータの型を指定,)(複数ある場合には、’,’をつけて、同じように繰り返す)で作成します。
mysql > CREATE TABLE information (id int, name varchar(10));
Query OK, 0 rows affected (0.04 sec)
以上のように実行しました。テーブル名はinformationで、一個目のカラム名が、id(int型)、二個目のカラム名がname(varchar型)です。
SHOW文で確認してみると、
mysql > SHOW TABLES;
+-------------------+
| Tables_in_datasql |
+-------------------+
| information |
+-------------------+
1 row in set (0.01 sec)
しっかり追加されていることがわかった。
INSERT
次に追加されたテーブルにデータを挿入(INSERT)していきます。
mysql > INSERT INTO information (id,name) VALUES (00,'A');
mysql > INSERT INTO information (id,name) VALUES (01,'B');
二個の情報を追加してみました。
今回は、情報を一個ずつ追加したが、複数、大規模なデータを追加していくには、どのようにするのかが疑問に思いました。
MySQLにおいては、INTOは省略でき、また、カラム名も省略できます。(カラム名の順番通りにデータが渡される)
SELECT
追加した情報を確認するためには、SELECT文を使用します。
mysql > SELECT * FROM テーブル名;
mysql > SELECT *FROM information;
+------+------+
| id | name |
+------+------+
| 0 | A |
| 1 | B |
+------+------+
2 rows in set (0.00 sec)
以上のように表示されました。
DESC
mysql> DESC information;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
DESC テーブル名;で、テーブルが持つ列や型といったテーブルの構造を確認することができる。
追記:rootにパスワードをつけてみる
また、以下の記事を参考にして、rootにもパスワードをつけてみました。
mysql > ALTER USER 'root'@'localhost' IDENTIFIED BY 'ooo';
MySQLのバージョンの違いがあることにより、下の記事と構文が変更になっているところがあったので、そこを修正し、実行しました。
https://blog.codecamp.jp/root-password
まとめ
今回は、自分で1からデータベースを作成し、データを追加しました。小規模であったためにデータを動かすことに対してメリットをそこまで享受できなかったが、SQL文の操作のし易さ、直感性を感じることができました。
また、学習していて、実際に実務でどのように使用され、実行されているのかが非常に気になりました。