-
MySQLの同じSELECTステートメント内でエイリアスの値を参照する方法
MySQLでは、SELECT句内で定義したエイリアス(別名)を、同じステートメント内の他のカラムや式から直接参照することはできません。これはSQLの仕様上、SELECT句の評価順序に関係する制限です。 しかし、この制限を回避する方法があります。それがユーザー定義変数です。変数に値を代入しながらエイリアスとして出力すれば、同じクエリ内でもその値を再利用できます。 基本構文 以下がユーザー定義変数を使った基本構文です。ここで @yourAliasName はユーザー定義変数、anyAliasName は任意のエイリアス名を表します。 select @yourAliasName := curdate
-
MySQLでテーブル内の特定のセルの値を取得する方法
MySQLでは、SELECT文とWHERE句を組み合わせることで、テーブル内の特定のセル(行と列が交差する位置)の値を簡単に取得できます。この記事では、実際のコード例を通して、その手順をわかりやすく解説します。 1. テーブルを作成する まず、サンプル用のテーブルを作成します。ここでは「名前」と「スコア」を持つテーブルを定義します。 mysql> create table DemoTable ( Name varchar(40), Score int ); Query OK, 0 rows affected (0.72 sec) 「Query OK」と表示されれば、テーブ
-
MySQLで数字5桁から始まるメールアドレスを正規表現(REGEXP)で抽出する方法
MySQLで数字5桁から始まるメールアドレスを抽出する方法MySQLで、先頭が数字5桁で始まるメールアドレスを取得したい場合は、REGEXP演算子を使うのが最も手軽な方法です。基本的なクエリは以下のようになります。select * from テーブル名 where カラム名 regexp ^[0-9]{5};ここでは、「^」が文字列の先頭を意味し、「[0-9]{5}」が数字がちょうど5回連続することを表しています。それでは、実際にサンプルテーブルを作成して動作を確認してみましょう。1. テーブルの作成まず、create table文でサンプル用のテーブルを作成します。mysql> cre
-
MySQLで列(カラム)の値を置き換える方法|UPDATE文の使い方を解説
MySQLでテーブルの特定の列(カラム)の値を置き換えたい場合には、UPDATE文を使用します。WHERE句で対象のレコードを指定することで、該当する行だけを安全に更新できます。この記事では、実際のSQLサンプルを使いながら、列の値を置き換える手順を順番に解説していきます。1. サンプルテーブルを作成するまず、動作確認用のテーブルを作成しましょう。以下のクエリを実行します。mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, Score int ); Query
-
MySQLのINSERT文でAUTO_INCREMENT列に値を指定する必要はある?自動採番の仕組みを解説
結論:いいえ、AUTO_INCREMENT列に値を指定する必要はありません。 AUTO_INCREMENTとして設定された列には、INSERT文で明示的に値を渡す必要はありません。MySQLが自動的に「1」から順番に採番してくれるためです。これは列定義時にAUTO_INCREMENTを設定しているからこそ実現できる動作です。 AUTO_INCREMENTを設定したテーブルを作成する まず、EmployeeId列にAUTO_INCREMENTを設定したサンプルテーブルを作成します。 mysql> create table DemoTable ( EmployeeId int NO
-
【MySQL】SUBSTRING_INDEXでIPアドレスのサブパートごとの重複数をカウントする方法
IPアドレスのような文字列データを部分ごとに集計したい場合、MySQLのSUBSTRING_INDEX()関数を活用するのが効果的です。この関数を使えば、区切り文字を基準に文字列を切り出し、IPアドレスのネットワーク部(上位3オクテット)だけを取り出してグループ化し、重複数を簡単にカウントできます。 テーブルの作成 まず、サンプル用のテーブルを作成しましょう。 mysql> create table DemoTable ( SystemIpAddress text ); Query OK, 0 rows affected (0.58 sec) レコードの挿入 insertコマンド
-
MySQLで最後に出現する区切り文字より前の左側の文字列を取得する方法
文字列の中で最後に出現する区切り文字を基準に、それより左側(前半)の部分だけを取り出したい場合があります。MySQLでは、LEFT()関数を使うことでこれを実現できます。さらに、LOCATE()関数とREVERSE()関数を組み合わせることで、「最後に出現した位置」を簡単に特定できます。動作の仕組みまず、各関数の役割をおさらいしておきましょう。REVERSE():文字列を逆順に並べ替えますLOCATE():指定した文字が最初に現れる位置を返しますLEFT():文字列の先頭から指定した文字数分を抽出しますポイントは、逆順にした文字列に対して最初に現れる位置は、元の文字列では「最後」に現れる位置だ
-
MySQLのLIKE句を使って「Joh」で始まる複数の値を取得する方法
まず、テーブルを作成します。mysql> create table DemoTable ( Name varchar(40) ); Query OK, 0 rows affected (0.55 sec)次に、INSERTコマンドを使用してテーブルにレコードを挿入します。mysql> insert into DemoTable values(John); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable values(Sam); Query OK, 1 row affected (0.13
-
MySQLにおけるBIGINTとBIGINT(20)の違いとは?表示幅の意味を実例で解説
BIGINTとBIGINT(20)の違いMySQLにおける「BIGINT」と「BIGINT(20)」の違いは、表示幅(display width)だけです。括弧内の数値「20」は、値を表示する際の桁数を指定するためのものであり、格納できる数値の範囲には一切影響しません。つまり、両者とも同じ範囲の整数(-9223372036854775808 ~ 9223372036854775807)を扱うことができます。なお、MySQL 8.0.17以降では整数型の表示幅指定は非推奨(deprecated)となっているため、新規開発での利用は避けるのが望ましいでしょう。動作を確認するサンプルテーブルの作成そ
-
MySQLでAND・OR演算子を組み合わせて複数の行レコードを取得する方法
MySQLでは、WHERE句の中でAND演算子とOR演算子を組み合わせることで、複数の条件に一致する行レコードを柔軟に抽出できます。この記事では、実際にテーブルを作成し、サンプルデータを挿入したうえで、ANDとORを組み合わせたクエリの使い方を具体的に解説します。 1. サンプルテーブルを作成する まず、学生情報を管理するテーブルを作成します。数学科とMySQL科目の点数、そしてステータス(ACTIVE/INACTIVE)を持つ構成です。 mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT P
-
MySQLのLIKE演算子で特定の文字から始まるレコードだけを検索・制限する方法
MySQLでは、LIKE演算子とワイルドカード%(任意の0文字以上の文字列)を組み合わせることで、カラムの値が特定の文字で始まるレコードだけを簡単に抽出できます。この記事では、実際にテーブルを作成し、前方一致検索を行う手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、以下のコマンドでテーブルを作成します。 mysql> create table DemoTable ( FirstName varchar(40) ); Query OK, 0 rows affected (0.52 sec) 2. レコードの挿入 INSERT文を使って、いくつかのレコードをテ
-
MySQLのCASEステートメントでNULLをカスタム値に置き換える方法
MySQLでは、テーブル内のNULL値をそのまま表示するのではなく、「UNKNOWN NAME」のような分かりやすいカスタム値に置き換えて取得したい場面があります。本記事では、CASEステートメントとIFNULL()関数の2つの方法を使って、NULL値を任意の値に変換する手順をサンプルコード付きで解説します。1. サンプルテーブルの作成まず、動作確認用のテーブルを作成します。mysql> create table DemoTable ( FirstName varchar(20) ); Query OK, 0 rows affected (1.15 sec)2. テストデータの挿
-
MySQLのSELECT 1で値の存在を確認する方法をわかりやすく解説
MySQLでSELECT 1を使った値の存在確認とは MySQLでは、SELECT 1を使用することで、テーブル内に特定の値が存在するかどうかをシンプルかつ効率的に確認できます。存在チェックには実際の列データを取得する必要がないため、以下のような構文を用いるのが基本です。 select 1 from yourTableName where yourColumnName=yourValue; このクエリが「1」を返した場合、その値はMySQLデータベース内に存在することを意味します。逆に、条件に一致する行がなければ何も返されません。SELECT *と異なり不要な列データを取得しないため、単純な存
-
MySQLでGROUP BYとSUM()を使ってレコードをグループ化し合計値を求める方法
MySQLでは、レコードをグループ化する際に GROUP BY 句を使用し、数値の合計を計算する際に SUM() 関数を使用します。この記事では、実際にテーブルを作成し、特定のカラム(Subject)に基づいて値をグループ化して合計する手順を、具体例とともにわかりやすく解説します。 1. サンプルテーブルの作成 まず、以下の CREATE TABLE 文でテーブルを作成します。 mysql> create table DemoTable ( Name varchar(40), Subject varchar(40), Marks int ); Query OK,
-
SQLで有効期限が現在の日付より前のレコードのステータス列を1に更新する方法
MySQLでは、CURDATE()関数を使うことで、日付カラムの値が現在の日付以前であるレコードだけを抽出し、別の列の値を一括更新できます。本記事では、商品の有効期限が過ぎているレコードのステータスを自動的に「1」に変更する方法を、具体的な例とともに解説します。テーブルの作成まず、例として使用するテーブルを作成します。ここでは、現在の日付を「2019-08-20」と仮定します。mysql> create table DemoTable ( ProductStatus tinyint(1), ProductExpiryDate date ); Query OK, 0 row
-
MySQLのIFステートメントで文字列を返す方法をわかりやすく解説
MySQLでは、IF()関数を使用することで、条件の評価結果に応じて異なる文字列を返すことができます。本記事では、従業員の給与データを例に、IFステートメントの結果として文字列を返すクエリの書き方を、テーブル作成から順を追って解説します。1. サンプルテーブルの作成まず、デモ用のテーブルを作成しましょう。mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, EmployeeSalary int ); Query OK, 0 rows affected (1.68 sec)この
-
MySQLで特定の月と年のレコードを抽出するSELECTクエリの書き方
MySQLで特定の月と年のレコードを取得する方法 MySQLで日付データから特定の月のレコードを抽出するには MONTH() 関数を、特定の年のレコードを抽出するには YEAR() 関数を使用します。これらの関数を WHERE 句で組み合わせることで、「2019年9月」のような具体的な条件でデータを絞り込むことができます。 実際にサンプルテーブルを作成して、動作を確認していきましょう。 1. サンプルテーブルの作成 まず、学生名と入学日を格納するテーブルを作成します。 mysql> create table DemoTable ( StudentName varchar(40)
-
MySQLのREPLACE()関数でテキスト型カラムの値を更新する方法
MySQL REPLACE()関数とは MySQLでは、REPLACE()関数をUPDATE文と組み合わせることで、テキスト型カラムに格納された文字列の一部を簡単に置換できます。特定のパターンを含むデータを一括で修正したい場合に非常に便利な機能です。 ここでは、実際にサンプルテーブルを作成し、REPLACE()関数を使ってカラムの値を置き換える手順を解説します。 1. サンプルテーブルを作成する まず、以下のコマンドでテーブルを作成します。 mysql> create table DemoTable ( Code varchar(100) ); Query OK, 0 rows
-
MySQLで日付レコードと現在の日付の差分を取得する方法(DATEDIFF関数の使い方)
現在の日付が「2019-09-06」であると仮定して、テーブルに保存された日付レコードと現在の日付との差分(日数)を取得する方法を解説します。MySQLでは、DATEDIFF() 関数を使うことで、2つの日付の差を簡単に計算できます。 1. サンプルテーブルを作成する まず、日付型(DATE)のカラムを持つテーブルを作成します。 mysql> create table DemoTable ( AdmissionDate date ); Query OK, 0 rows affected (0.54 sec) 2. テーブルにレコードを挿入する INSERT文を使って、いくつかの日
-
【MySQL】2つの列の値が等しい場合に該当行を削除する方法
MySQLである列と別の列の値が一致している行だけを削除したいケースは意外と多くあります。例えば、スコアの検算結果などで「2つの値が同じならデータ不要」という場合です。このような処理には DELETE文 を使用します。本記事では、実際にテーブルを作成し、2つの列の値が等しい行を削除する手順をサンプル付きで解説します。1. サンプルテーブルの作成まず、以下のようにテーブルを作成します。mysql> create table DemoTable ( Name varchar(40), Score1 int, Score2 int ); Query OK, 0 rows