クエリとデータベースとテーブルの世界:MySQL入門ガイド

クエリとデータベースとテーブルの世界:MySQL入門ガイド

私たちがここで触れているのは、自分のコンピュータで動作しているMySQLデータベースソフトウェアです。まるでロボットに話しかけるような感覚で、決められた構文を使えば質問を投げかけたり命令を出したりすることができます。人間にとって自然な文章というよりは、シンプルな言語でやり取りする必要があるのです。

まずは軽く挨拶してみましょう。本来、MySQLに送るコマンドはセミコロンで終わらせなければなりません。
Hi Database; と入力してもエラーが返ってきますが、次のように書くとうまくいきます。

SELECT "Hi Database";

ここで使われているSELECTは、MySQLからデータを取り出すためのコマンドです。まだ大したことはしていませんが、これは最初のクエリです。クエリとは単なる「質問」ではなく、データベースに「このデータを見せてほしい」「この内容を更新してほしい」「この行を削除してほしい」といった命令を伝えるための文法です。

次にもうひとつ試してみましょう。

SHOW DATABASES;

このように大文字で書くのは慣例ですが、実際には小文字でも問題ありません。
show databases; と書いても同じ結果になります。

ここで理解しておくべきは、MySQLというソフトウェアは複数のデータベースを管理できるということです。複数のウェブサイトを構築する場合、それぞれのサイトごとに個別のデータベースを持つことができます。フォルダを分けて整理するようなイメージです。

試しに新しいデータベースを作成してみましょう。
CREATE DATABASE air_pup;

この名前は任意で、好きな文字列を使うことができます。作成後にSHOW DATABASES;を再度実行すれば、新しいデータベースが一覧に表示されるはずです。中身は空ですが、データを入れる準備が整った状態です。これで3つの基本的なコマンドを覚えました。SELECT、CREATE DATABASE、SHOW DATABASES。この3つだけでもすでにデータベースと会話するための基礎ができています。

次にデータベース内にテーブルを作成していきましょう。まずは対象となるデータベースを指定します。
USE air_pup;

これで以降の操作はair_pupというデータベースに対して実行されることになります。ファイルシステムにおいてフォルダの中にファイルがあるように、データベースの中にはテーブルが存在します。テーブルはスプレッドシートのシートのようなもので、列(カラム)ごとにデータの属性を持っています。

たとえば「ペット」に関する情報を保存するなら、名前、種類、紹介文といったカラムが考えられます。ユーザー情報を保存するなら、名前、住所、好物といったカラムを定義するでしょう。この「カラム定義」を行うのがテーブル作成の第一歩です。

実際にテーブルを作ってみます。
CREATE TABLE pet(
id int(11) AUTO_INCREMENT,
name varchar(255),
breed varchar(100),
PRIMARY KEY (id)
) ENGINE=InnoDB;

このコマンドでpetという名前のテーブルを作成しました。idは数値を扱うint型で、自動的に連番が振られるよう設定されています。nameは最大255文字の文字列を格納できるvarchar型、breedは100文字までの文字列を扱うvarchar型です。最後にidを主キーとすることで、テーブル内の行を一意に識別できるようにしています。

データ型にはさまざまな種類がありますが、最もよく使うのはintとvarcharです。これだけでも基本的なテーブルは十分構築できます。セミコロンで終了するまでは、クエリは複数行に分けて記述しても問題ありません。

実行すると「Query OK, 0 rows affected」と表示されます。データが挿入されたわけではありませんが、テーブルの作成に成功したという意味です。確認のために次のコマンドを入力してみましょう。

SHOW TABLES;

これで現在のデータベース内に存在するテーブルが表示されます。今のところpetというテーブルが1つだけですが、これが私たちの最初の成功です。次のステップでは、このテーブルに実際のデータを追加し、検索や更新といった操作を行うことで、データベースの本当の力を体感できるようになります。

ここまでで、MySQLと会話するための入口に立ちました。クエリは慣れるまでは機械的に感じるかもしれませんが、使いこなせるようになると膨大なデータを自由に操ることができるようになります。

ここまででデータベースを作り、テーブルを定義するところまで進みました。次に学ぶべき重要なステップは、実際にデータを挿入し、検索し、更新し、削除する方法です。データベースの本当の役割は情報を保存し、必要に応じて柔軟に取り出すことにあります。その基本となる操作が「CRUD」と呼ばれる4つのコマンドです。Create(作成)、Read(読み取り)、Update(更新)、Delete(削除)の頭文字をとったものです。

まずはデータを挿入するINSERT文を試してみましょう。ペットのテーブルに新しいデータを追加します。
INSERT INTO pet (name, breed) VALUES ("Pochi", "Shiba Inu");

このように書くことで、idには自動的に連番が割り振られ、nameには「Pochi」、breedには「Shiba Inu」という情報が登録されます。続けてもう一匹登録してみます。
INSERT INTO pet (name, breed) VALUES ("Tama", "Persian Cat");

これでテーブルには2件のデータが保存されました。

保存したデータを確認するにはSELECT文を使います。
SELECT * FROM pet;

この「*」はすべてのカラムを意味し、petテーブル内の全データが一覧として表示されます。条件を絞り込みたい場合にはWHERE句を追加します。
SELECT * FROM pet WHERE breed="Shiba Inu";

これで「Shiba Inu」という犬種を持つペットだけが表示されます。複数の条件を組み合わせることも可能です。たとえば名前が「Tama」で犬種が「Persian Cat」のものを探すにはこう書きます。
SELECT * FROM pet WHERE name="Tama" AND breed="Persian Cat";

さらにデータを並び替えるORDER BYも便利です。
SELECT * FROM pet ORDER BY name ASC;

これで名前順に昇順で並べ替えた結果が返ってきます。DESCを指定すれば逆順になります。

次にUPDATE文を使ってデータを修正してみましょう。たとえばPochiの犬種を「Akita」に変更するには次のように書きます。
UPDATE pet SET breed="Akita" WHERE name="Pochi";

これで指定した行だけが更新されます。WHERE句を指定しないとテーブル全体のデータが更新されてしまうので、注意が必要です。

削除を行うDELETE文も基本です。例えば「Tama」という名前の行を削除したい場合、次のように書きます。
DELETE FROM pet WHERE name="Tama";

削除した後に再びSELECT * FROM pet; を実行すると、Tamaの行が消えていることを確認できます。

これで基本的なCRUD操作ができるようになりました。実際のアプリケーションでは、ユーザー登録フォームからINSERTを行い、一覧ページでSELECTを使ってデータを表示し、プロフィール編集ページでUPDATEを行い、退会時にはDELETEを実行するといった具合に活用されます。

ここで知っておくと便利なのがインデックスです。データの件数が増えると検索に時間がかかるようになりますが、特定のカラムにインデックスを設定することで検索を高速化できます。たとえば名前で頻繁に検索する場合には、次のようにインデックスを作成します。
CREATE INDEX idx_name ON pet(name);

これにより、大量のデータの中からでも効率的に検索できるようになります。

さらにJOINについても触れておきましょう。データベースの魅力は複数のテーブルを関連付けて扱えることにあります。たとえばユーザーテーブルとペットテーブルを持っている場合、ユーザーごとに飼っているペットを表示するような処理をJOINで実現できます。

SELECT user.name, pet.name, pet.breed
FROM user
JOIN pet ON user.id = pet.owner_id;

このクエリはユーザーとそのペットを関連付けて一覧表示するものです。実際のサービス開発ではJOINを使って複雑なデータを結びつける場面が数多くあります。

また、GROUP BYを利用すると集計も可能です。例えば犬種ごとにペットの数を数えたい場合には次のように書きます。
SELECT breed, COUNT(*) FROM pet GROUP BY breed;

これで犬種ごとの件数が表示され、データの傾向を分析するのに役立ちます。

こうした基本操作を組み合わせることで、単なるデータ保存庫だったデータベースが強力な情報管理システムへと進化します。MySQLは単純な文法で扱えるにもかかわらず、大規模なシステムにも耐えられる堅牢さを備えています。

この段階まで理解できれば、すでに小規模なウェブアプリケーションを自作できるレベルに到達しています。あとは実際に小さなプロジェクトを作り、実践を通じて経験を積むことが次のステップとなります。

記事をおすすめする