データベース講習会 ~実践編~
最近、ほとんどプログラミングの経験がない後輩に講習会をする機会があったので、その後輩向けの資料をなんとなくまとめました。本当に基礎の基礎しかまとめていないので、これからプログラミングを勉強する初学者向けの記事として読んでください。
関連
MySQLのインストール
- 基本利用が無料なので、今回はDBMSとしてMySQLを使っていきます。
- 下のサイトを参考にしてMySQLをインストールしましょう。
- インストールに関しては自己責任でお願いします。
RDBを操作してみる
データベースの作成
- まずコンソール(コマンドプロンプト)からMySQLにログインすると、画面に色々文字が出てきて、次の行で文字が止まると思います。
mysql>
- データベースを作成するためには次のように入力してください。
- セミコロン(;)を忘れずに!!セミコロン(;)はクエリの終了を表すため、これを忘れると動きません。
-
practice
はデータベース名なので、好きな名前に置き換えて大丈夫です。 - 大文字・小文字の区別はありませんが、DBMSによってあらかじめ決められた文言は大文字、テーブル名やカラム名などユーザーが決めるものは小文字で書くことが多いです。(見やすさのため)
CREATE DATABASE practice;
/*
CREATE DATABASE [データベース名]
*/
- データベースの一覧を確認するためには次のように入力してください。
SHOW databases;
- 作成したデータベースを使うためには次のように入力してください。せっかくデータベースを作成しても、これをしないとデータベースを使えません。
USE practice;
テーブルの作成
- 次にテーブルを作成してみます。次のように入力してください。
-
users
はテーブル名、id
、name
、age
はカラム名です。 -
VARCHAR
やINT
はカラム型と言い、そのカラムに入るデータのデータ型を指定します。VARCHAR
は文字列、INT
は整数です。他にもたくさんあるので調べてみてください。-
VARCHAR
の後ろにある255
は最大文字数を表します。数字は適当に選んでください。
-
-
PRIMARY KEY
は主キーとなるカラムを指定しています。主キーについては後程説明します。 -
DEFAULT CHARSET
は文字コードを指定しています。日本語を利用する場合は、文字化けしないようにutf8
に指定しましょう。
-
CREATE TABLE users(id INT, name VARCHAR(255), age INT, PRIMARY KEY(id)) DEFAULT CHARSET=utf8;
/*
CREATE TABLE [テーブル名]([カラム名1] [カラム型1], [カラム名2] [カラム型2], ・・・, PRIMARY KEY([主キーのカラム名]));
*/
- テーブルの一覧を確認するためには次のように入力してください。
SHOW tables;
主キー(PRIMARY KEY)
- 主キーとは、レコードを一意に特定するためのカラムです。
- 例えば何らかの名簿についてのデータベースがあったときに、「名前」、「性別」、「年齢」というカラムだけだと、同性同年齢で同姓同名の二人がいたときに識別することができません。
- このとき、新たに「id」というカラムを設けることで、この二人を識別することができます。このときの「id」カラムのことを主キー(PRIMARY KEY)と言います。
- そのため、主キーは重複が許されません。
- 主キーとなるカラムは、テーブルを作成するときに設定できます。具体的なクエリについては「テーブルの作成」を見てください。
RDBでデータを扱ってみる
データの挿入
- データを挿入するためには次のように入力してください。
INSERT INTO users VALUES(1, 'Mike', 20);
INSERT INTO users VALUES(2, 'Alice', 19);
INSERT INTO users VALUES(3, 'Bob', 21);
/*
INSERT INTO [テーブル名] VALUES([カラム1の値],[カラム2の値],・・・);
*/
データの取得
- データを取得するには次のように入力してください。
SELECT name, age FROM users;
/*
SELECT [取得したいカラム1], [取得したいカラム2],・・・ FROM [テーブル名];
*/
+-------+------+
| name | age |
+-------+------+
| Mike | 20 |
| Alice | 19 |
| Bob | 21 |
+-------+------+
- すべてのカラムを取得したい場合は次のように入力してください。
SELECT * FROM users;
/*
SELECT * FROM [テーブル名];
*/
+----+-------+------+
| id | name | age |
+----+-------+------+
| 1 | Mike | 20 |
| 2 | Alice | 19 |
| 3 | Bob | 21 |
+----+-------+------+
- 条件を指定したい場合は次のように入力してください。
- 条件式は等号・不等号以外にもたくさんあるので調べてみてください。
SELECT * FROM users WHERE id = 2;
SELECT name,age FROM users WHERE age >= 20;
/*
SELECT [取得したいカラム1], [取得したいカラム2],・・・ FROM [テーブル名] WHERE [条件式];
SELECT * FROM [テーブル名] WHERE [条件式];
*/
+----+-------+------+
| id | name | age |
+----+-------+------+
| 2 | Alice | 19 |
+----+-------+------+
+------+------+
| name | age |
+------+------+
| Mike | 20 |
| Bob | 21 |
+------+------+
データの更新
- データを更新するには次のように入力してください。
UPDATE users SET age = 20 WHERE id = 2;
/*
UPDATE [テーブル名] SET [更新するカラム名1] = [値1], [更新するカラム名2] = [値2],・・・ WHERE [条件式];
*/
- 更新したデータを確認してみましょう。
SELECT * FROM users;
+----+-------+------+
| id | name | age |
+----+-------+------+
| 1 | Mike | 20 |
| 2 | Alice | 20 |
| 3 | Bob | 21 |
+----+-------+------+
データの削除
- データを削除するには次のように入力してください。
DELETE FROM users WHERE id = 3;
/*
DELETE FROM [テーブル名] WHERE [条件式];
*/
- 削除したデータを確認してみましょう。
SELECT * FROM users;
+----+-------+------+
| id | name | age |
+----+-------+------+
| 1 | Mike | 20 |
| 2 | Alice | 20 |
+----+-------+------+
- また、次のように入力するとデータをすべて削除することができます。
DELETE FROM users;
/*
DELETE FROM [テーブル名];
*/
オートインクリメント(AUTO INCREMENT)
- 「データの挿入」において、主キーである
id
カラムの値を「1、2、3」と手動で書いていましたが、実際のサービスは何万というデータを扱うため、手動で書くのは現実的ではありません。 - そこで、DBMSに用意されている自動採番機能を用います。MySQLに用意されている自動採番機能をオートインクリメントと言います。オートインクリメントは主キーに設定されることが多いです。
- オートインクリメントを設定するために一度テーブルを作り直します。下のように入力して、既存の
users
テーブルを削除してください。
DROP TABLE users;
/*
DROP TABLE [テーブル名];
*/
- 下のように入力して、
id
カラムにオートインクリメントを設定したテーブルを作成してください。- オートインクリメントはカラム型の後ろに
AUTO_INCREMENT
を付けるだけで設定できます。原則1テーブルに1カラムしか設定できません。
- オートインクリメントはカラム型の後ろに
CREATE TABLE users(id INT AUTO_INCREMENT, name VARCHAR(255), age INT, PRIMARY KEY(id)) DEFAULT CHARSET=utf8;
- 試しにデータを挿入してみて、オートインクリメントが機能しているか確かめてみましょう。オートインクリメントに値を挿入したくないので、先ほどとは少し異なる書き方になります。
-
id
カラムに0
を挿入することで、自動で採番されます。 - また、挿入するカラムを指定してオートインクリメントが設定されたカラムに値を挿入しないことで、自動採番することも可能です。
-
INSERT INTO users VALUES(0, 'Mike', 20);
INSERT INTO users(name, age) VALUES('Alice', 19);
/*
INSERT INTO users([挿入するカラム名1], [挿入するカラム名2],・・・) VALUES([値1], [値2],・・・);
*/
- 挿入されたデータを確認してみましょう。
SELECT * FROM users;
+----+-------+------+
| id | name | age |
+----+-------+------+
| 1 | Mike | 20 |
| 2 | Alice | 19 |
+----+-------+------+
終わりに
今回は実際にMySQLを用いてデータを扱う方法を記事にしました。次回はLaravelでデータベースを扱う方法について記事にしようと思います。