Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】MySQL Queries

2025年09月24日に「Dev.to」が公開したITニュース「MySQL Queries」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

MySQLはWebサービスで広く使われるデータベースだ。本記事では、データを効率的に操作する命令文「クエリ」について、基本的な構文から実践的な活用法までを解説する。検索、追加、更新、削除など、データ操作の重要スキルを学べる内容だ。

出典: MySQL Queries | Dev.to公開日:

ITニュース解説

システムエンジニアを目指す上で、データベースの知識は不可欠だ。その中でも特に重要なのが、リレーショナルデータベースのデファクトスタンダードであるMySQLと、それを操作するための言語SQLの習得である。MySQLクエリは、データベースに情報を格納し、必要な時に取り出し、更新し、削除するといった一連の操作を行うための命令文を指す。この解説では、MySQLを使ったデータベース操作の基本的なクエリについて、その役割と使い方を順を追って説明する。

まず、データベースの土台となる部分から見ていこう。データを保存するための箱となるデータベース自体を作成するには、CREATE DATABASE データベース名;というクエリを使用する。作成したデータベースの中から作業対象を指定するには、USE データベース名;と記述する。これにより、その後の操作が指定したデータベース内で行われることになる。データベースの中には、実際のデータを整理して格納するための「テーブル」を作成する必要がある。テーブルはExcelシートのようなもので、列(カラム)と行(レコード)で構成される。テーブルを作成するには、CREATE TABLE テーブル名 (カラム名1 データ型1 制約1, カラム名2 データ型2 制約2, ...);という構文を使う。ここで重要なのが「データ型」と「制約」だ。データ型は、そのカラムにどんな種類のデータ(整数、文字列、日付など)を格納するかを定義するもので、例えば数値にはINT、短い文字列にはVARCHAR(桁数)、日付にはDATEなどがよく使われる。制約は、データの整合性や一意性を保つために非常に重要で、特にPRIMARY KEY(テーブル内の各行を一意に識別するための鍵)、NOT NULL(空の値を許容しない)、AUTO_INCREMENT(新しい行が追加されるたびに自動的に値が増加する)は頻繁に利用される。これらのコマンドを使いこなすことで、データの器となるデータベースとテーブルを適切に設計し、構築できる。構築したデータベースやテーブルの構造を確認するには、それぞれSHOW DATABASES;SHOW TABLES;DESCRIBE テーブル名;といったクエリが役立つ。

次に、データベースに格納されたデータを実際に操作するための基本的なクエリについて説明する。これらは「CRUD」操作と呼ばれ、Create(作成)、Read(読み取り)、Update(更新)、Delete(削除)の頭文字を取ったものだ。

データの作成(Create)、つまりテーブルに新しい行を追加するにはINSERT INTO文を使用する。最も基本的な形は、INSERT INTO テーブル名 (カラム名1, カラム名2, ...) VALUES (値1, 値2, ...);となる。全てのカラムに値を挿入する場合は、カラム名を省略してINSERT INTO テーブル名 VALUES (値1, 値2, ...);と記述することも可能だ。

データの**読み取り(Read)**は、SELECT文によって行われる。これはSQLの中で最も頻繁に使われる、非常に強力なクエリである。特定のテーブルから全てのカラムのデータを取得する場合はSELECT * FROM テーブル名;と書き、特定のカラムのみを取得する場合はSELECT カラム名1, カラム名2 FROM テーブル名;と記述する。さらに、取得するデータに条件を付けたい場合はWHERE句を使用する。例えば、SELECT * FROM テーブル名 WHERE カラム名 = '値';のように、指定した条件に合致する行のみを抽出できる。WHERE句では、等しい(=)、より大きい(>)、より小さい(<)、等しくない(!=または<>)といった比較演算子や、複数の条件を組み合わせるANDORNOTといった論理演算子を利用できる。また、文字列の部分一致検索にはLIKE、複数の候補値のいずれかに一致するかどうかを調べるにはIN、値の範囲を指定するにはBETWEENなど、多様な条件指定方法が存在する。取得したデータの表示順序を指定したい場合はORDER BY句を使い、ORDER BY カラム名 ASC(昇順)やORDER BY カラム名 DESC(降順)と記述する。さらに、取得する行数を制限するにはLIMIT句を、特定の行数だけスキップして取得するにはOFFSET句を組み合わせることで、ウェブサイトのページネーションのような機能を実現できる。SELECT文はデータの集計にも利用される。COUNT()で行数を数えたり、SUM()で合計値を計算したり、AVG()で平均値を求めたり、MIN()で最小値を、MAX()で最大値を求めたりする集計関数がある。これらの集計を特定のグループごとに行いたい場合はGROUP BY句を使用し、GROUP BY カラム名のように指定する。GROUP BYでグループ化された結果に対してさらに条件を付けたい場合は、WHERE句の代わりにHAVING句を使う。

データの**更新(Update)**は、既存のデータを変更する際に使用する。UPDATE テーブル名 SET カラム名1 = 新しい値1, カラム名2 = 新しい値2 WHERE 条件;という構文を用いる。この際、WHERE句を指定しないとテーブル内の全ての行が更新されてしまうため、非常に注意が必要だ。

データの**削除(Delete)**は、テーブルから特定の行を削除する際に使用する。DELETE FROM テーブル名 WHERE 条件;という構文を用いる。UPDATEと同様に、WHERE句を指定しないとテーブル内の全てのデータが削除されてしまうため、このコマンドも慎重に扱う必要がある。

テーブルやデータベース自体が不要になった場合は、DROP TABLE テーブル名;DROP DATABASE データベース名;というクエリを使って完全に削除できる。これらのDROPコマンドは元に戻すことができないため、実行する際には細心の注意が必要だ。

最後に、複数のテーブルに分かれて格納されているデータを組み合わせて取得するためのJOIN操作について解説する。データベースの設計では、データの重複を避けるために複数の関連するテーブルにデータを分割することが一般的だ。例えば、顧客情報テーブルと注文情報テーブルが別々に存在し、それらを組み合わせて「どの顧客が何を注文したか」といった情報を取得したい場合がある。このような時にJOIN句が非常に役立つ。

INNER JOINは、二つのテーブルに共通するデータのみを結合して取得する。つまり、両方のテーブルに存在する一致する行だけが結果に含まれる。例えば、顧客情報と注文情報で顧客IDが一致する行だけを表示する際に利用する。

LEFT JOIN(またはLEFT OUTER JOIN)は、左側のテーブルの全ての行を結果に含め、右側のテーブルからは左側のテーブルに一致する行があればそれらを結合する。一致する行が右側のテーブルにない場合は、右側のカラムの値はNULLとなる。例えば、全ての顧客情報を表示し、もし注文履歴があればそれも表示するといった場合に使う。

RIGHT JOIN(またはRIGHT OUTER JOIN)は、LEFT JOINの逆で、右側のテーブルの全ての行を結果に含め、左側のテーブルからは一致する行があれば結合する。一致する行が左側のテーブルにない場合は、左側のカラムの値はNULLとなる。

MySQLでは直接FULL JOINという構文はサポートされていないが、LEFT JOINの結果とRIGHT JOINの結果をUNION(結合)することで、両方のテーブルの全ての行を結合し、一致しない部分にはNULLを補完する形で実現できる。これは、両方のテーブルの全ての情報を網羅的に確認したい場合に有効だ。

これらのJOIN操作を理解することで、複雑なデータ構造を持つデータベースから必要な情報を効率的かつ正確に引き出すことが可能になる。

MySQLクエリの学習は、システムエンジニアとしてのキャリアを築く上で非常に重要な第一歩である。ここで紹介したクエリは基本的なものばかりだが、これらを組み合わせることで、ほとんどのデータベース操作をこなせるようになる。これらの知識をしっかりと習得し、実際の開発で活用していくことが成功への道である。

関連コンテンツ