しがないOLのはじめてのMySQL

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

お久しぶりです。クニ吉です。
この度、事務職から異動になりまして、今後は今までとはちょっと違った路線の投稿が増えると思います。これからもよろしくお願いします(^^)

さて、早速ですが、今回は「MySQL」について書いていきたいと思います。私自身が初めてなので、超初心者向けになります。プロの方は本サイトの他の記事を読むことをお勧めします。 ちなみに私はAccessでSQL文を書いたことがある程度の知識しかありません。

前提

本記事におけるMySQLのバージョンは、「5.7.17」です。

本ブログの構成

  • MySQLとは
  • MySQLのインストール
  • データベース作成
  • テーブル作成
  • データ投入
  • データ集計(SUM関数)
  • まとめ

MySQLとは

MySQLの前提としてデータベースについてのお話をさらっと。
データベース(DB)とは、複数で共有、利用を行なったり、検索や蓄積、加工を容易にできるように整理されたデータの集合のことです。

データベース構造のひとつに「リレーショナルデータベース(RDB)」というのがあります。 リレーショナルデータベースは、「見出し」,「属性(カラム)」,「組(行)」といった表に似た構造でデータを管理します。
データには「キー」という一意の値を持たせ、このキーを利用して別々のデータ群を関係づけることで複数のデータを連結させることができます。データを連結させることにより、目的に応じた表(データ)を作ることができるのが、リレーショナルデータベースの最大の特徴となります。

このようなリレーショナルデータベースを管理するシステムが存在し、これを「リレーショナルデータベース管理システム(RDBMS:relational database management system)」と呼びます。「MySQL」はオープンソースのRDBMSのひとつで、データを作成したり、集計することができます。

MySQLのインストール

概要

では、MySQLのインストールを行います。今回はHomebrew(Mac)でのインストール手順になりますが、Homebrewをインストールしていない場合は、まずHomebrewのインストールから始めてください。

Homebrewとは:
Mac OS X上でソフトウェアのインストールを簡単に行えるようにするパッケージ管理システムのひとつです。

手順

1.ターミナルを開きます。

ターミナルとは:
Mac OS XをCUI(character user interface =要は全てを文字(コマンド)で操作をする画面のこと)で操作するアプリケーションのこと。例えば、ファイルを複製する時、通常はマウスでファイルを選択し、メニューから「ファイルを複製」を押してファイルを複製しますが、CUIでは「cpコマンド」をターミナルに打つことでファイルを複製することができます。


2.下記コマンドをターミナルに入力します。

$ brew update
$ brew install mysql

3.インストールが始まります。インストールが終わったら以下のコマンドを入力し、インストールできているのかを確認します。

$ brew info mysql

結果:
このような表示結果が出ればOK。「5.7.17」というのはMySQLのバージョンです。

mysql: stable 5.7.17 (bottled)
Open source relational database management system
https://dev.mysql.com/doc/refman/5.7/en/

~以下省略~

MySQLの起動と接続

表示結果が長かったので省略していますが、MySQLの接続方法などが表示されています。 例えば、以下のコマンドを入力するとMySQLを起動します

$ brew services start mysql

以下のコマンドを入力するとMySQLに接続します。

$ mysql -uroot

「uroot」とは、rootユーザーとしてログインすることを示しており、rootアカウントの初期パスワードは空の状態です。パスワードを設定するまでは誰でもパスワードなしでrootユーザーとしてMySQLに接続し、すべての権限を付与されます。

rootとは:
すべての権限を持ち、どんなことでもできるユーザーアカウントのこと。個人的には神様権限と呼んだりしてます。

データベース作成

概要

MySQLでは、まず「データベース」という箱を作り、データベースの中に複数のテーブルを作成します。 データベース→ExcelのBookのようなもの、テーブル→Excelのsheetのようなものをイメージすると近いような気がします。データベースも複数作成することができます。

手順

1.ターミナルからMySQLに接続します。(詳細は前述の「MySQLの起動と接続」を参照してください)
接続後、ターミナルの表示がmysql>となっていればOKです。

$ mysql -uroot

2.CREATE DATABASE文でデータベースを作成します。
構文:CREATE DATABASE {データベース名};
以下のコマンドでは「sampledb」という名前のデータベースを作成します。

mysql> create database sampledb;

結果:
以下が表示されたらOKです。
「(0.01 sec)」というのは、処理時間を示しているので違っていても問題ありません。

Query OK, 1 row affected (0.01 sec)

3.SHOW DATABASES文で、データベースが作成されたかを確認します。
特に何かを指定するわけでもないので、そのまま打てばOKです。
構文:SHOW DATABASES;

mysql> show databases;

結果:
すべてのデータベースが表示されますのでsmpledb以外の複数のデータベースが存在していますが、先ほど作成したデータベース「sampledb」があることが確認できました。

+--------------------+
| Database           |
+--------------------+
| information_schema |          
| mysql              |
| performance_schema |
| sampledb           |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

テーブル作成

概要

では、データベース(箱)を作成したので、作成したデータベースの中にテーブルを作成します。このテーブルが「MySQLとは」の項で記述した「表に似た構造でデータを管理する」もので、データを蓄積するための容れ物になります。

テーブル作成時には、データを入れるための形式を定義します。例えば、カラム1には数値を保存する、カラム2には文字列(テキスト)を保存する、カラム3には日付を保存する、といった保存データの形式を決めます。
このデータ形式のことを「データ型」と言います。
その他にNULL値(空)の格納を許可するかしないかなどを設定することができます。

手順

1.USE文で、テーブルを作成するデータベースを指定します。
構文:USE {データベース名};

mysql> use sampledb;

2.CREATE TABLE文で、新しいテーブルを作成します。
構文:CREATE TABLE {テーブル名}({カラム名} {データ型}, {カラム名} {データ型}, …);
今回は「id」,「item_name」,「price」という3つのカラムを持つ「item」という名称のテーブルを作成します。

mysql> create table item(id int, item_name varchar(20), price int);

結果:
以下が表示されたらOKです。

Query OK, 0 rows affected (0.04 sec)

3.SHOW TABLES文で、テーブルが作成されたかを確認します。
構文:SHOW TABLES FROM {データベース名};

mysql> show tables from sampledb;

結果:
先ほど作成したテーブル「item」があることが確認できました。

+------------------+
| Tables_in_sample |
+------------------+
| item             |
+------------------+
1 row in set (0.00 sec)

データ投入

概要

テーブルを作成しましたので、テーブルに格納するデータを入れていきます。この時、テーブル作成時に定義したデータ型(形式)に応じた値でないと、エラーになる場合があります。(例:整数型にテキスト型を格納しようとするなど)

手順

1.INSERT文で、データを追加します。
*テキスト型の場合は、「'」で文字列を囲みます。
構文:INSERT INTO {テーブル名}({カラム名1}, {カラム名2},…)VALUES({値1}, {値2},…);

mysql> insert into item(id, item_name, price)values(1, 'カエルのオルゴール', 3500);

結果:
以下のように表示されされたらOKです。

Query OK, 1 row affected (0.02 sec)

2.SELECT文でテーブルの中身を確認します。
構文:SELECT * FROM {テーブル名};

mysql> select * from item;

結果:
先ほど投入したデータがテーブルに格納されていることを確認できました。

+------+-----------------------------+-------+
| id   | item_name                   | price |
+------+-----------------------------+-------+
|    1 | カエルのオルゴール              |  3500 |
+------+-----------------------------+-------+

複数のデータを追加する場合
複数のデータを追加する場合は、以下のようにvalues以降をカンマ区切りで続けて入力します。
(->は、改行しているだけで入力は不要です)

mysql> insert into item(id, item_name, price)
    -> values(2, 'カエルのTシャツ',1900),(3, 'カエルの指輪', 800),
    -> (4, 'カエルの靴下', 350);

確認結果:

mysql> select * from item;
+------+-----------------------------+-------+
| id   | item_name                   | price |
+------+-----------------------------+-------+
|    1 | カエルのオルゴール              |  3500 |
|    2 | カエルのTシャツ                 |  1900 |
|    3 | カエルの指輪                   |   800 |
|    4 | カエルの靴下                   |   350 |
+------+-----------------------------+-------+
4 rows in set (0.00 sec)

データ集計(SUM関数)

概要

テーブルに4つのデータが格納されましたので、次はデータの集計を行います。 今回は、単純にテーブル内に存在している「price」の合計を算出しようと思います。 合計は「6550」になるはずです。

手順

1.SUM関数を使って、カラムの合計を算出します。
構文:SELECT SUM({合計を算出するカラム名}) FROM {テーブル名};

mysql> select sum(price) from item;

結果:
priceの合計が「6550」になってることが確認できました。

+------------+
| sum(price) |
+------------+
|       6550 |
+------------+
1 row in set (0.00 sec)

まとめ

今回はMySQLってこんなことができるんだよーということで、どんなものなのかをイメージしやすいようにMySQLのインストールからデータの集計までの基本的な流れをざっと書いてみました。この他にもデータを削除したり、更新したり、もっと複雑な検索、集計方法があったりしますので、またこの続きを書きたいと思います。
それではまた ノシ