Logo Image

Blog Article

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

00
はじめに

最近、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)
);
  1. id INT AUTO_INCREMENT PRIMARY KEY
    • idはユーザーごとの固有の識別番号 (主キー)
    • AUTO_INCREMENTにより、新しいユーザーを追加するたびに自動で連番が付与されます。
    • 主キーとして指定されているため、同じ値を持つデータは存在できません。
  2. 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%'

A で始まる

%

'%B'

B で終わる

%

'%C%'

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 を使うと、データを 昇順 (小さい順 ) ・降順 (大きい順) に並び替えできます。

コメント

ログインしてコメントしましょう。