【MySQL】初めてのスキーマ、テーブル、レコード作成。データベースの完成までを流れで説明

MySQL入門講座#3 スキーマから データベース実装 MySQLの テーブル作成

この記事では、MySQLの初心者に向けて、最大限、分かりやすくデータベースの作成をお伝えしていきます。

お悩みさん

MySQLに接続までは分かったけど、スキーマって何?

実際にデータベースを作成する手順を教えて欲しい〜!

こんなお悩みに対して、自分の経験を元に、実際に簡易データベースの完成までを、順を追って説明していきます。

この記事で学べること
  1. スキーマ作成の考え方
  2. MySQLのデータベース、テーブル作成
  3. MySQLのレコード作成
目次

初めてのスキーマ作成

環境

OSMac 10.15.4
Pythonpython 3.9
仮想環境Poetry
Homebrew8.0.19 Homebrew

MySQLのダウンロード方法と始め方

「MySQLはまったく触ったこともない!」

という方には、以下の記事でMySQLのダウンロード方法と、始め方をお伝えしていますので、ぜひ参考にしてください。

スキーマ作成

それでは早速、スキーマ作成からデータベースの完成までの流れを解説していきます。

MySQLでデータベースを運用するにあたって、まず、スキーマを作成する必要があります。

スキーマとは、データベースとほとんど同義というのが一般的な認識のようでしたが、ここでは、データベースの設計図だと考えてみてください。

設計図なので、データベースでどんな情報を扱い、蓄積していくのかを考える必要があります。

今回は、(完璧、僕の趣味で、)アメリカ文学の作家をテーマにデータベースを作成してみようと思います。

以下の表が今回作成するスキーマ、つまりはデータベースの内容です。

American Writer(AW)

IDnameBDworks
1Ernest Miller Hemingway1899/7/21The Old Man and the Sea
2Jerome David Salinger1919/1/1The Catcher in the Rye
3Francis Scott Key Fitzgerald1896/9/24The Great Gatsby
4Stephen Edwin King1947/9/21Stand by Me
5Raymond Thornton Chandler1888/7/23The Long Goodbye

初めて作る際は、こんな風にエクセル(またはスプレッドシート)の表を用意してデータベース化していくのが分かりやすいと思います。

スキーマ作成

念のため、上から順に、ヘミングウェイ、サリンジャー、フィッツジェラルド、スティーブンキング、レイモンドチャンドラー。
アメリカ文学の英雄たちを思いついた順に並べています。笑

初めてのテーブルの作成

データベースの作成

新しく「AW」(American Writerの略称です)というデータベースを作成していきます。

MySQLをスタートさせてから、以下のコマンドを実行します。

mysql> CREATE DATABASE AW;

その後、データベースの一覧をチェックしてみます。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| AW                 |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

AWというデータベースが、一番上(2行目)に作成されていますね!

テーブル作成

続いて、テーブルを作成します。

テーブルとは、エクセルでいうシートのようなもので、データベースに紐づいている表をイメージするといいと思います。

今回は、writerというテーブル、そして同時にカラムを作成します。

カラム(Column)とは、表の(縦)列のこと。
行はロウ(Row)と言いいます。

カラムは、ひとまず idと、nameだけ作成します。

(全てのカラムを同時に作成することも可能ですが、あえてカラムを追加する工程を書きたいと思います。)

mysql> CREATE TABLE aw.writer (id INT, name varchar(30))

id、nameの後ろにくっつけている int、varchar(30)はカラム型と呼ばれるものです。
idの列には数字を入れるていくため、intを設定。
name列にはテキストを入れるため、varcharを設定しています。

varchar(30)の(30)は、30字の制限を意味しています。

データベースの選択

次に、AWのデータベースを使うよ、と宣言します。

mysql> use aw
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

さきほどのwriterテーブルができたかチェックします。

mysql> show tables;
+--------------+
| Tables_in_aw |
+--------------+
| writer       |
+--------------+
クリワン

ちゃんとテーブルができてる!

カラムもチェックしてみます。

mysql> desc writer;

idとネームのカラムがばっちりできていました。

(やや見ずらいですが、2〜3行目の一番左のマスです。)

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int         | YES  |     | NULL    |       |
| name  | varchar(30) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

初めてのレコード作成

早速レコードを作成していきたいと思います。

レコードとは、レコード=記録のことで、ここでは行を指しています。

まずはヘミングウェイ(の行)を作成していきます。

(ID = 1、 name = Ernest Miller Hemingway を記録します。)

mysql> INSERT INTO writer VALUE (1,'Ernest Miller Hemingway');

レコードが作成できたかチェックします。

mysql> SELECT * FROM writer
+------+-------------------------+
| id   | name                    |
+------+-------------------------+
|    1 | Ernest Miller Hemingway |
+------+-------------------------+

入っていました!初レコード作成ができました!

データの確認方法を簡単に説明します。
SELECT でレコードを選択。* はすべてを選択の意味。
FROMの後ろには、テーブルを入力します。

カラムの追加

idとnameのカラムしかまだないので、BD(Birthday)のカラムを追加します。

mysql> ALTER TABLE writer ADD BD date;

カラム型は、dateを選択しています。

チェックします。

mysql> SELECT * FROM writer;
+------+-------------------------+------+
| id   | name                    | BD   |
+------+-------------------------+------+
|    1 | Ernest Miller Hemingway | NULL |
+------+-------------------------+------+

無事にカラムができたようです。(NULLとは、空っぽやデータなしを意味します。)

カラムの削除、レコードの修正

ヘミングウェイの誕生日を追加します。

mysql> INSERT INTO writer(id,BD) values(1, '1899-07-21');

チェックします。

mysql> SELECT * FROM writer;
+------+-------------------------+------------+
| id   | name                    | BD         |
+------+-------------------------+------------+
|    1 | Ernest Miller Hemingway | NULL       |
|    1 | NULL                    | 1899-07-21 |
+------+-------------------------+------------+

id=1のレコードに誕生日を追加、という意味で上記をやったら失敗していました!

改めて、ヘミングウェイの誕生日を追加します。

mysql> UPDATE writer SET BD ='1899-07-21' WHERE id=1;
mysql> SELECT * FROM writer;
+------+-------------------------+------------+
| id   | name                    | BD         |
+------+-------------------------+------------+
|    1 | Ernest Miller Hemingway | 1899-07-21 |
|    1 | NULL                    | 1899-07-21 |
+------+-------------------------+------------+

今度は成功しました。

WHERE はレコードを指定するときに使うよ

レコードの削除

失敗した方のレコードを削除します。NULLのレコードを削除します。

mysql> DELETE FROM writer WHERE name IS NULL;

チェックします。

mysql> SELECT * FROM writer;
+------+-------------------------+------------+
| id   | name                    | BD         |
+------+-------------------------+------------+
|    1 | Ernest Miller Hemingway | 1899-07-21 |
+------+-------------------------+------------+

無事に削除に成功しました。

データベース作成の仕上げ

あとはレコードを一気に追加するだけです。( ‘ ‘ を忘れるとエラーになるので注意!)

mysql> INSERT INTO writer(id,name,BD)
VALUES
(2,'Jerome David Salinger','1919-1-1'),
(3,'Francis Scott Key Fitzgerald','1896-9-24'),
(4,'Stephen Edwin King','1947-9-21'),
(5,'Raymond Thornton Chandler','1888-7-23');

最後にチェックしてみます。

mysql> select * FROM writer;
+------+------------------------------+------------+
| id   | name                         | BD         |
+------+------------------------------+------------+
|    1 | Ernest Miller Hemingway      | 1899-07-21 |
|    2 | Jerome David Salinger        | 1919-01-01 |
|    3 | Francis Scott Key Fitzgerald | 1896-09-24 |
|    4 | Stephen Edwin King           | 1947-09-21 |
|    5 | Raymond Thornton Chandler    | 1888-07-23 |
+------+------------------------------+------------+
クリワン

よし!MySQLのテーブルまで作成できた〜!

今回は、ページの冒頭でご紹介した表(スキーマ)にあった「works」のカラムは省略しましたが、やり方は同じです。

まとめ

MySQL入門講座、いかがでしたでしょうか。

細かい説明は省きましたが、具体的にデータベースをどう作成していけばいいのか、一通りの流れがわかれば、あとは自由にデータベースを作成していけるはずです。

こんなに簡単なデータベースですが、初めて作成した際は、5時間かかってしまいました。
その際に、テーブルの作成、カラムの追加など、流れで説明されているものが調べた限りなかったので、ぜひ参考にしていただけたら嬉しいです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

節約に励むマーケターです!30歳を機に別職種から、マーケターにキャリアチェンジ。IT企業で専任のマーケターをしています。0からプログラミングを学びはじめました! ★データサイエンティストの勉強中です!お問合せはこちら!

コメント

コメントする

CAPTCHA


目次