こんにちは、テクノロジー部のチェです。
今回は初心者向けに、MySQLでのデータベースの作成や削除などの基本的な使い方やテーブルの作成、外部キー制約について説明していきます。
目次
MySQLとは
MySQLはデータベース管理システムであり、Webアプリの制作に必要不可欠なものです。MySQLはデータを保管している箱みたいなものであり、SQLというデータベース言語を使用して操作することができます。
データベースはデータを保管している箱のようなものであり、「リレーショナル型データベース(MySQLはこれにあたる)」や「キーバリュー型データベース」、「ドキュメント型データベース」など、さまざまな種類があります。
MySQLのインストール方法
MySQLのインストールや起動方法については以下記事で詳しく解説しています。
MySQLの概念についても解説しているので、気になる方は読んでみてください。
MySQLでデータベース作成
データベースの作成
まず、テーブルを作る前にデータベースが必要になります。
下記のようにコマンドを打つことでデータベースを作成することができます。
$ CREATE DATABASE testdb;
testdbはデータベースの名前なので好きに変えてください。
コマンドを実行して、問題なく作成されたら、下記のように「Query OK, 1 row affected」と表示されます。
データベースの削除
データベースを削除したい場合は、下記のようにコマンドを入力してください。
$ DROP DATABASE testdb;
コマンドを実行して、問題なく削除されたら、さきほどと同じように表示されます。
データベースの一覧表示
次はデータベース一覧を表示して作成されたデータベースを確認してみましょう。
下記のようにコマンドを入力すると、データベース一覧が表示されます。
$ show databases;
コマンドを入力して、下記のように表示されたらOKです。
作成したデータベースを選択
一覧から使用したいデータベースを選択してみましょう
下記のようにuseコマンドを入力すると、データベースを自由に選択することができます。
$ use testdb;
下記のように表示されたらOKです。
使用中のデータベースの確認
現在使用しているデータベースを確認することもできます。
下記のようにコマンドを入力してみましょう。
$ select database();
コマンドを入力したら、下記のように使用中のデータベースを確認することができます。
テーブル作成
データベースを作成して選択することができたら、次はテーブルを作成してみましょう。
テーブルを作成する際にはCREATE TABLE文を使用します。
$CREATE TABLE user(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30),
PRIMARY KEY(id)
);
上記のSQLやテーブルの中身について説明していきます。
CREATE TABLE user | userという名前のテーブルを作成するという意味 |
---|---|
id INT NOT NULL AUTO_INCREMENT |
|
name VARCHAR(30) |
|
PRIMARY KEY(id) |
|
テーブルが作成できたら、作成したテーブルを確認してみましょう。
テーブルの一覧表示
テーブルの一覧を表示したい場合は下記のコマンドを入力します。
$ show tables;
下記のように作成したテーブル一覧が表示されたらOKです。
テーブル内容の確認
続いて、下記のコマンドを使って、テーブルの内容を確認してみましょう。
$ desc user;
このように確認できます。
テーブルのデータ追加
下記のコマンドを入力することでデータを追加することができます。
INSERT INTO user VALUES(1,'jin');
INSERT INTO user | データを追加するテーブルを指定 |
---|---|
VALUES(1,’jin’) | 追加するデータを指定 |
コマンドを入力したら、テーブルの中身を確認してみましょう。
SELECT * FROM user;
レコードの更新
以下のコマンドを入力することでレコードを更新することができます。
UPDATE user
SET name='choi'
WHERE id=1;
UPDATE user | 更新の対象となるテーブル名を指定 |
---|---|
SET name=’choi’ | 更新の対象となる列と、値を指定 |
WHERE id=1; | 更新する対象となる条件を指定 |
外部キー制約(FOREIGN KEY)
続いて、外部キー制約について説明していきます。外部キー制約とは、親テーブルと子テーブル間のデータの整合性を保つための制約です。
まず、下記のように親テーブルを作成しましょう。
CREATE TABLE user_types(
id INT NOT NULL AUTO_INCREMENT,
job VARCHAR(30),
value VARCHAR(20),
PRIMARY KEY(id)
);
続いて、子テーブルを作成時に外部キー制約を設定していきます。
CREATE TABLE users(
id INT NOT NULL AUTO_INCREMENT,
job_type_id INT,
name VARCHAR(50),
PRIMARY KEY(id),
FOREIGN KEY(job_type_id) REFERENCES user_types (id)
ON DELETE RESTRICT
ON UPDATE RESTRICT
);
FOREIGN KEY(job_type_id) REFERENCES user_types (id)
ON DELETE RESTRICT
ON UPDATE RESTRICT
この部分について解説していきます。
FOREIGN KEY(job_type_id) | 制約をつけるカラムを指定 |
---|---|
REFERENCES user_types (id) | 参照するテーブルのカラムを指定 |
ON DELETE RESTRICT | 参照先をdeleteするとエラーになる |
ON UPDATE RESTRICT | 参照先をupdateするとエラーになる |
上記で作成した親テーブル、子テーブルをイメージすると、以下のような形になります。
usersテーブルには各ユーザーの職業を管理するためのjob_type_idカラムがあります。
上記のFOREIGN KEY(job_type_id) REFERENCES user_types (id)コマンドを入力することによって2つのテーブルは紐づいている状態になっています。そのため、user_typesテーブルに存在しないidカラムがuserテーブルのjob_type_idカラムに指定することはできません。
まとめ
今回はデータベースやテーブルの作成、表示、更新などについて学びました。
最初の段階として、テーブルの作成まで慣れてきたら、次は外部キー制約の理解と実装に挑戦してみると良いでしょう。