WEBOPIXEL

さらりとMySQL入門

Posted: 2020.10.11 / Category: データベース 

最近はNoDBとかNoSQLとかよく聞きますが、まだまだMySQLを使用する機会は多いのではないかと思います。
ということでいまさらながらMySQLの基礎から学んでみます。

Sponsored Link

開発環境

何かしらのWebアプリケーションを開発した環境であればすでにMySQLが開発できる状態ではあると思いますのでさらっといきます。

MacならHomebrewでインストールするのが簡単です。
ターミナルを起動して下記を実行します。

$ brew install mysql@5.7

インストールしたら起動しましょう。

$ mysql.server start

終了したいときはstop

$ mysql.server stop

起動したらMySQLにログインしてみましょう。

$ mysql -u root -p

パスワードを設定している場合はパスワードを入力します。

次のように表示されたらMySQLを実行する準備が整いました。

mysql>

SQL開発環境

ちょっとデータを確認するくらいだったらターミナルからの実行でもいいのですが。
ある程度SQLを書くのであれば専用の開発環境を用意した方がいいと思います。
MAMPを入れた場合はPhpMyAdminが入っているのでそれを使うと早いです。
VSCodeにもSQLを操作する拡張機能があります。
有料ですが、PhpStormなどのJetBrains製品にもデータベースを操作するツールが付属していますのでこれらを使用するといいでしょう。
その他にも色々なツールがありますので、気に入ったものを使用してください。

データベースとテーブル

最初にデータベースとテーブルの概念を理解しておく必要があります。
よくデータベースはExcelに例えられることが多いですが、ここでも例にならってExcelで例えてみましょう。
Excelのファイルがデータベースで、シートがテーブルになります。
Excelのファイルの中にシートが複数あると思いますが、MySQLでもデータベースがあってその中に複数のテーブルを作ります。

データベースの作成

ということで最初にデータベースを作成する必要があります。
今回は会社のデータベースを作ろうと思います。
データベースの名前はcompany_dbにします。その場合は次のようなクエリを実行します。

CREATE DATABASE company_db;

CREATE DATABASEは大文字になってますが、小文字でも問題ありません。

データベースが作成されたか確認してみましょう。
次のクエリは作成されたデータベース一覧を表示します。

SHOW DATABASES;

次のクエリはデータベースを指定して詳細を表示します。

SHOW CREATE DATABASE company_db;

文字コードは指定しない場合設定ファイルの文字コードが適用されます。
作成時に指定する場合は次のようにCHARACTER SETの後に追記します。

CREATE DATABASE company_db CHARACTER SET utf8mb4;

データベースの削除

データベースの作成に失敗したら削除しましょう。

DROP DATABASE company_db;

使用するデータベースを選択

MySQLは複数のデータベースを作成することができます。
これからテーブルを作るにあたりどのデータベースに作成するかを選択しておく必要があります。

USE company_db;

テーブルの設計

データベースを作成し選択することができたら次はテーブルを作成しましょう。
データベースがExcelと違うところはこのテーブル作成の段階で使用するカラムの数をしっかりと決める必要があります。数だけではなく、文字列や数値などどのようなデータが入るかの情報を厳密に設定する必要があります。

例えば次のような社員テーブルを作ってみましょう。

社員コード 名前 年齢
A001 山田 太郎 32
A002 田中 浩一 44
A003 佐藤 優子 28

最初にカラム名(列のタイトル)を決めます。
「社員コード」「名前」「年齢」となっている部分です。
MySQLではカラム名に日本語を使用することはできますが、基本的には他のプログラム言語と連携することがほとんどだと思いますので、基本的には英数字で設定します。
社員コード[code]、名前[name]、年齢[age]で作成することにします。

次に型を設定しましょう。型はどのような形式のデータが入るか、データの種類になります。
上の表を見ると社員コードは「A001」となっているので文字列+数字ですね。
一文字でも文字列がある場合は、文字列型で設定します。
MySQLでは文字列型だけでも保存する文字数によってさまざまな型の種類があります。
社員コードのような短い文字数ならCHARがいいでしょう。
CHAR型は最大255文字まで入れることができます。括弧の中に数値を指定することで文字数を制限することもできます。
codeというカラム名で、10文字の文字列を指定する場合は、code CHAR(10)となります。

名前もそこまで文字数を必要としないのでCHARでいいでしょう。
年齢は数を入れるので数値型になります。これにも色々種類はありますが、ひとまずINTを指定します。

まとめると下記表になります。

論理名 物理名 サイズ
社員コード code CHAR 10
名前 name CHAR 20
年齢 age INT 3

いきなり「論理名」「物理名」と出てきましたが、物理名は実際操作するときに使用する名称で、論理名は実際使われることはありませんが、設計書などにわかりやすく日本語で書くときに使用します。

テーブルの作成

テーブルの設計ができましたので、設計通りに作成してみましょう。
テーブル作成の書式は次のようになります。

CREATE TABLE テーブル名 (
カラム名 型(サイズ),

);

「members」というテーブル名で作成してみましょう。

CREATE TABLE members (
  code CHAR(10),
  name CHAR(20),
  age INT(3)
);

テーブルの確認

テーブルが作られているか確認してみましょう。

DESC members;

全てのテーブルを一覧で表示することもできます。

SHOW TABLES;

さらに詳しい情報が欲しい場合。

SHOW TABLE STATUS;

テーブルの削除

テーブルの削除もデータベースの削除と同様にDROPを使用します。

DROP TABLE members;

レコードの登録

空のテーブルができたので、データを登録してみましょう。
Excelの行にあたる部分を、データベースではレコードと言います。

レコードを挿入するクエリの書式は次のようになります。

INSERT INTO テーブル名 (カラム名1,カラム名2,カラム名3) VALUES (データ1, データ2, データ3);

表のデータを実際に入れるには下記を実行します。
文字列型に入れる時はシングルクォーテーションかダブルクォーテーションで囲む、数値型はそのまま数字を入力することに注意してください。

INSERT INTO members (code,name,age) VALUES ('A001', '山田 太郎', 32);

このようにカラムと同じ数・順序で挿入する場合はカラムの指定を省略することができます。

INSERT INTO members VALUES ('A001', '山田 太郎', 32);

複数行の挿入

INSERTはデータを繋げで記述することで、複数のレコードをまとめて挿入することもできます。

INSERT INTO members VALUES
  ('A002', '田中 浩一', 44),
  ('A003', '佐藤 優子', 28);

レコードの確認

データがちゃんとに登録されているか確認してみましょう。
書式は次のようになります。

SELECT カラム名1,カラム名2,カラム名3 FROM テーブル名;

次のクエリを実行して実際のデータを読み込んでみましょう。

SELECT code,name,age FROM members;

すべてのカラムを指定する場合は「*」を指定することもできます。

SELECT * FROM members;

レコードの取得条件を指定

登録したレコードを確認することはできましたが、先ほどの例ではすべてのレコードが表示されました。
次はレコードの取得条件を指定してみます。
条件を指定する場合はテーブル名を指定した後にWHEREで条件を記述します。

SELECT カラム名1 FROM テーブル名 WHERE 条件;

例えば社員番号が「A001」の人を検索したい場合は次のようになります。

SELECT * FROM members WHERE code = 'A001';

レコードの更新

次はレコードの更新です。
データの更新はUPDATEを使用します。

UPDATE テーブル名 SET カラム名 = 設定する値 WHERE 条件;

山田さんが誕生日を迎えたので、年齢を更新してみましょう。
山田さんの社員コードは「A001」なので次のようにします。

UPDATE members SET age = 33 WHERE code = 'A001';

レコードの削除

次はレコードの削除です。
データの更新はDELETEを使用します。

DELETE FROM テーブル名 WHERE 条件;

山田さんが退職することになったので削除しましょう。

DELETE FROM members WHERE code = 'A001';

今回は以上になります。
データベースの作成からレコードの追加・編集・削除の方法がわかったと思います。
次回は、データ型をもう少しちゃんとに設定してみたいと思います。