Blog Article
MySQLを学習し始めたので基本操作をまとめました

はじめに
最近、MySQLの学習を始めたので、基本的な操作をまとめます。
データベースとは?
データベースとは、情報を整理して保存し、必要に応じて効率的に検索や更新を行うことができる仕組みです。たとえば、顧客情報や商品情報を管理する際、データベースを使えばデータを分かりやすく保存し、簡単に取り出すことができます。
紙のファイルやExcelのようなものをデジタル化して、さらに多くのデータを高速に扱えるようにしたものとイメージすると分かりやすいです。
リレーショナルデータベース (RDB)とは?
リレーショナルデータベース (RDB) は、そのデータベースの中でも「表 (テーブル) 」を使ってデータを管理する方式を指します。リレーショナルデータベースでは、情報が行と列で整理されており、複数の表同士を関連付けることで、より複雑な情報の関係性を表現できます。たとえば、顧客情報を管理する表と注文情報を管理する表がある場合、顧客IDを使って「誰がどの商品を購入したのか」といった情報を簡単に把握することができます。このように、RDBではデータ同士の関連性を利用して柔軟なデータ管理が可能です。
データベース管理システム (DBMS)とは?
データベースを操作・管理するためには、データベース管理システム (DBMS) というソフトウェアが必要です。DBMSは、ユーザーがデータを登録したり、検索や更新、削除を行ったりするための機能を提供します。また、データベースのセキュリティやアクセス権を管理したり、データのバックアップやリストアを行う役割も担っています。
有名なDBMSとしては、MySQLやPostgreSQL、SQLite、Oracle Databaseなどがあります。
まとめ
- データベース: データを整理して保存する仕組み。
- RDB: 表形式でデータを管理し、複数の表を関連付けできるデータベース。
- DBMS: データベースを操作・管理するためのソフトウェア。
MySQLの基本操作
操作の前に
MySQLを使うにはインストールが必要です。インストール方法は、OSによって異なるので自分の使っているOSの手順を調べましょう。今回はMySQLの操作方法に焦点を当てた記事のため、インストール手順の詳細な説明は省略します。
MySQLに接続する
MySQLに接続するには、コマンドライン (ターミナル )を使います。ターミナルを開いて、コマンドを入力します。
mysql -u root -p
u root
はユーザー名、p
はパスワードを入力するためのオプションです。パスワードを入力後、MySQLのコンソールに入ることができます。
これでMyAQLを使うことが出来ました!

データベースの作成
MySQLでデータを保存する場所は「データベース」です。新しいデータベースを作成するには、以下のSQLコマンドを実行します。
今回はsample_db
というデータベースを作成します。
CREATE DATABASE sample_db;
データベースが作成されたかを確認します。
SHOW DATABASES;
SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| my_db_tutorial |
| mysql |
| performance_schema |
| sample_db |
| sys |
+--------------------+
次に作成したデータベースを使用するコマンドを実行します。
USE sample_db;
テーブルの作成
データを保存するにはカラムを持つテーブルを作成する必要があります。今回はusers
というテーブルを作成します。
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
id INT AUTO_INCREMENT PRIMARY KEY
- idはユーザーごとの固有の識別番号 (主キー)
AUTO_INCREMENT
により、新しいユーザーを追加するたびに自動で連番が付与されます。- 主キーとして指定されているため、同じ値を持つデータは存在できません。
name VARCHAR(100)
,email VARCHAR(100)
- nameはユーザーの名前を保存するカラム。
VARCHAR(100)
は、最大100文字の文字列を保存できることを意味します。
テーブルの詳細を確認
DESC テーブル名;
で詳細を確認出来ます。
DESC users;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(100) | YES | | NULL | |
| email | varchar(100) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
テーブルの内容を変更
テーブルの内容を変更するには、ALTER TABLE
を使います。
ALTER TABLE テーブル名 MODIFY カラム名 新しいデータ型 [属性];
ALTER TABLE users MODIFY id INT UNSIGNED AUTO_INCREMENT;
新しいカラムを追加
作成したテーブルに新しいカラムを追加するときは、ALTER TABLE
文のCOLUMN
を使います。
age (年齢)を追加する例をもとに解説します。
ALTER TABLE users ADD COLUMN age INT AFTER email;
ADD COLUMN
で新しいカラムを追加- 数値 (整数型)で
age
でカラムを保存 AFTER カラム名
で指定したカラムの後ろに追加
DESC users;
でテーブルの詳細を確認すると、email
の後ろにage
が追加されました!
DESC users;
+-------+---------------+-------+------+----------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------+-------+------+----------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(100) | YES | | NULL | |
| email | varchar(100) | YES | | NULL | |
| age | int | YES | | NULL | |
+-------+---------------+-------+------+----------+----------------+
レコード (データ)の挿入
テーブルを作成したら、そこにレコード (データ)を挿入していきます。
INSERT INTO テーブル名 (カラム1, カラム2) VALUES (カラム1の値, カラム2の値);
INSERT INTO users (name, email, age)
VALUES
('山田太郎', 'yamada@example.com', 21),
('佐藤大樹', 'sato@example.com', 26),
('山本早紀', 'yamamoto@example.com', 28),
('田中瑞希', 'tanaka@example.com', 30),
('工藤高次', 'kudo@example.com', 40),
('石田裕子', 'isida@example.com', 48),
('加藤裕二', 'kato@example.com', 55);
このコマンドでは、users
テーブルに名前とメールアドレスを挿入しています。
レコードの取得
挿入したレコードを確認するためには、SELECT
文を使ってデータを取得します。
SELECT カラム名 FROM テーブル名;
SELECT * FROM users;
+----+---------------+-----------------------+-------+
| id | name | email | age |
+----+---------------+-----------------------+-------+
| 1 | 山田太郎 | yamada@example.com | 21 |
| 2 | 佐藤大樹 | sato@example.com | 26 |
| 3 | 山本早紀 | yamamoto@example.com | 28 |
| 4 | 田中瑞希 | tanaka@example.com | 30 |
| 5 | 工藤高次 | kudo@example.com | 40 |
| 6 | 石田裕子 | isida@example.com | 48 |
| 7 | 加藤裕二 | kato@example.com | 55 |
+----+---------------+-----------------------+-------+
「*」はアスタリスクという、ワイルドカードであり、アスタリスクを指定するとすべてのカラムを取得できます。
特定のカラムだけを表示したい場合は、カラム名を指定します。
SELECT name, email FROM users;
データの更新
既存のデータを変更するには、UPDATE
文を使います。例えば、id
が1のユーザーの名前を変更する場合は、以下のコマンドを実行します。
WHERE
句を使って、どのデータを更新するかを指定します。
UPDATE users
SET name = '佐藤花子'
WHERE id = 1;
データの削除
データを削除するには、DELETE
文を使います。例えば、id
が1のユーザーを削除する場合は、以下のコマンドを実行します。
DELETE FROM users WHERE id = 1;
テーブルの削除
不要になったテーブルを削除する場合は、DROP TABLE
文を使います。例えば、users
テーブルを削除する場合は、以下のコマンドを実行します。
DROP TABLE users;
まとめ
これまでMySQLの基本操作について説明してきました。これらの操作を覚えておくと、基本的なDB操作ができるようになります。
- データベースの作成:
CREATE DATABASE データベース名;
- データベースの選択:
USE データベース名;
- テーブルの作成:
CREATE TABLE テーブル名;
- テーブルの詳細確認:
DESC テーブル名;
- テーブルの内容変更:
ALTER TABLE テーブル名 MODIFY カラム名 新しいデータ型 [属性];
- レコードの挿入:
INSERT INTO テーブル名 (カラム1, カラム2) VALUES (カラム1の値, カラム2の値);
- レコードの取得:
SELECT カラム名 FROM テーブル名;
- 指定したレコードの取得:
WHERE カラム名 = 値;
- レコードの更新:
UPDATE テーブル名 SET カラム名 = 値;
- レコードの削除:
DELETE FROM テーブル名;
- テーブルの削除:
DROP TABLE テーブル名;
WHERE句を使った様々なデータ取得方法
WHERE
句を使うと、特定の条件に合うデータだけを取得できます。
例えば、年齢が30歳以上の人だけやメールアドレスが "example.com" の人だけを取り出せます。
userテーブルのデータをもとに様々なデータ取得をしていきます。
SELECT * FROM users;
+----+---------------+-----------------------+-------+
| id | name | email | age |
+----+---------------+-----------------------+-------+
| 1 | 山田太郎 | yamada@example.com | 21 |
| 2 | 佐藤大樹 | sato@example.com | 26 |
| 3 | 山本早紀 | yamamoto@example.com | 28 |
| 4 | 田中瑞希 | tanaka@example.com | 30 |
| 5 | 工藤高次 | kudo@example.com | 40 |
| 6 | 石田裕子 | isida@example.com | 48 |
| 7 | 加藤裕二 | kato@example.com | 55 |
+----+---------------+-----------------------+-------+
特定の人を検索 (idが6の人を取得)
SELECT * FROM users WHERE id = 6;
+----+--------------+--------------------+------+
| id | name | email | age |
+----+--------------+--------------------+------+
| 6 | 石田裕子 | isida@example.com | 48 |
+----+--------------+--------------------+------+
比較演算子を使ってデータを取得
WHERE
句には、 数値を比較する演算子 が使えます。
演算子 | 意味 |
---|---|
| 〇〇と等しい |
| 〇〇と異なる |
| 〇〇より大きい |
| 〇〇より小さい |
| 〇〇以上 |
| 〇〇以下 |
30歳以上の人を取得
SELECT * FROM users WHERE age >= 30;
+----+--------------+--------------------+------+
| id | name | email | age |
+----+--------------+--------------------+------+
| 4 | 田中瑞希 | tanaka@example.com | 30 |
| 5 | 工藤高次 | kudo@example.com | 40 |
| 6 | 石田裕子 | isida@example.com | 48 |
| 7 | 加藤裕二 | kato@example.com | 55 |
+----+--------------+--------------------+------+
30歳未満の人を取得
SELECT * FROM users WHERE age < 30;
+----+--------------+----------------------+------+
| id | name | email | age |
+----+--------------+----------------------+------+
| 1 | 山田太郎 | yamada@example.com | 21 |
| 2 | 佐藤大樹 | sato@example.com | 26 |
| 3 | 山本早紀 | yamamoto@example.com | 28 |
+----+--------------+----------------------+------+
複数条件を組み合わせる (AND / OR)
SELECT * FROM users WHERE age >= 30 AND age < 50;
+----+--------------+--------------------+------+
| id | name | email | age |
+----+--------------+--------------------+------+
| 4 | 田中瑞希 | tanaka@example.com | 30 |
| 5 | 工藤高次 | kudo@example.com | 40 |
| 6 | 石田裕子 | isida@example.com | 48 |
+----+--------------+--------------------+------+
OR を使って「21歳または55歳の人」を取得
SELECT * FROM users WHERE age = 21 OR age = 55;
+----+--------------+--------------------+------+
| id | name | email | age |
+----+--------------+--------------------+------+
| 1 | 山田太郎 | yamada@example.com | 21 |
| 7 | 加藤裕二 | kato@example.com | 55 |
+----+--------------+--------------------+------+
LIKE
を使った部分一致検索(文字列検索)
メールアドレスや名前の 一部が一致するデータ を取得できます!
記号 | 例 | 説明 |
---|---|---|
|
| A で始まる |
|
| B で終わる |
|
| C を含む |
名前が「山田」の人を取得
SELECT * FROM users WHERE name LIKE '山田%';
+----+--------------+--------------------+------+
| id | name | email | age |
+----+--------------+--------------------+------+
| 1 | 山田太郎 | yamada@example.com | 21 |
+----+--------------+--------------------+------+
メールアドレスに "example.com” を含む人を取得
SELECT * FROM users WHERE email LIKE '%@example.com';
+----+--------------+----------------------+------+
| id | name | email | age |
+----+--------------+----------------------+------+
| 1 | 山田太郎 | yamada@example.com | 21 |
| 2 | 佐藤大樹 | sato@example.com | 26 |
| 3 | 山本早紀 | yamamoto@example.com | 28 |
| 4 | 田中瑞希 | tanaka@example.com | 30 |
| 5 | 工藤高次 | kudo@example.com | 40 |
| 6 | 石田裕子 | isida@example.com | 48 |
| 7 | 加藤裕二 | kato@example.com | 55 |
+----+--------------+----------------------+------+
WHERE
句と一緒に ORDER BY
を使うと、データを 昇順 (小さい順 ) ・降順 (大きい順) に並び替えできます。
年齢が30歳以上の人を、年齢の昇順で取得
SELECT * FROM users WHERE age >= 30 ORDER BY age ASC;
年齢が30歳以上の人を、年齢の降順で取得
SELECT * FROM users WHERE age >= 30 ORDER BY age DESC;
WHERE 句と一緒に ORDER BY を使うと、データを 昇順 (小さい順 ) ・降順 (大きい順) に並び替えできます。
コメント
ログインしてコメントしましょう。