-
【MySQL】NULLでない場合はその列の値を返し、NULLの場合は別の列の値を返す方法
IFNULL()関数でNULL値を別の列の値に置き換えるMySQLでは、ある列の値がNULLでない場合はその値を返し、NULLの場合は別の列の値を返したいという場面があります。このような場合には、IFNULL()関数を使用すると簡単に実現できます。1. テーブルの作成まず、動作確認用のサンプルテーブルを作成しましょう。mysql> create table DemoTable ( FirstName varchar(100), LastName varchar(100) ); Query OK, 0 rows affected (0.62 sec)2. レコードの挿入次に
-
MySQLでINT型カラムの値に含まれる「0」の個数を取得する方法
概要MySQLでINT型として宣言されたカラムの値に含まれる「0」の個数を調べたい場合には、LENGTH()関数とREPLACE()関数を組み合わせるのが効果的です。「元の値の長さ」から「0をすべて取り除いた値の長さ」を引くことで、ゼロの出現回数を簡単に求めることができます。それでは、実際の手順を見ていきましょう。1. サンプルテーブルの作成まず、テーブルを作成します。mysql> create table DemoTable ( Value int ); Query OK, 0 rows affected (1.22 sec)2. レコードの挿入INSERTコマンドを使用して、
-
MySQLで列から完全一致の文字列を検索する方法(BINARY+LIKEの使い方)
MySQLで大文字・小文字を区別して文字列を検索するには?MySQLで列の中から特定の文字列を完全一致(大文字・小文字を区別)で検索したい場合は、BINARYキーワードをLIKE演算子およびワイルドカード「%」と組み合わせて使用します。基本構文は以下の通りです。select *from yourTableName where binary yourColumnName LIKE %yourStringValue%;通常のLIKE検索では大文字と小文字が区別されませんが、BINARYを付けることでバイナリ比較が行われ、「John」と「JOHN」のような表記ゆれを厳密に区別できるようになります。1
-
MySQLで指定した順序どおりにレコードを取得する方法(FIELD関数の活用)
MySQLで指定した順序どおりにレコードを取得する方法MySQLでレコードを任意の順序で取得したい場合、IN()句とFIELD()関数を組み合わせて使用します。FIELD()関数は、引数に指定した値のリスト内での位置を返すため、ORDER BY句と組み合わせることで、昇順・降順では実現できない独自のカスタム並び順を定義できます。それでは、具体的な手順を見ていきましょう。サンプルテーブルの作成まず、テーブルを作成します。mysql> create table DemoTable( StudentId varchar(10), StudentName varchar(20));Q
-
PL/SQLで特定の年がうるう年かどうかを判定する方法
本記事では、PL/SQLを使用して、指定された年がうるう年(閏年)かどうかを判定する方法を解説します。PL/SQLでは、関連する宣言文や処理命令のグループがひとつのブロックとしてまとめられ、その中に一連のコマンドを記述していくのが基本的な構造です。 うるう年の判定ルール うるう年かどうかの判定は、以下のアルゴリズムに基づいて行われます。 その年が 4で割り切れ、かつ100で割り切れない 場合 → うるう年 その年が 400で割り切れる 場合 → うるう年 上記以外の場合 → うるう年ではない このロジックを擬似コードで表すと次のようになります。 isLeapYear(year): begi
-
MySQLで重複行を検索し、出現回数を別の列に表示する方法
MySQLでテーブル内の重複している行を検索し、その出現回数を別の列として表示したい場合は、GROUP BY句とHAVING句を組み合わせて使用します。この記事では、実際のサンプルを使って手順をわかりやすく解説します。1. サンプルテーブルの作成まず、検証用のテーブルを作成しましょう。ここでは「Name(名前)」と「Age(年齢)」の2つのカラムを持つテーブルを定義します。mysql> create table DemoTable( Name varchar(100), Age int ); Query OK, 0 rows affected (1.50 sec)2. テ
-
MySQLでテーブルからランダムな行を取得する方法【PREPAREステートメント活用】
MySQLでテーブルからランダムな行を取得したい場合、PREPARE(プリペアドステートメント)を利用する方法が便利です。この手法では、乱数を使ってオフセット値を動的に生成し、それを組み込んだSQL文を準備・実行します。まずはサンプルとなるテーブルを作成しましょう。 mysql> create table DemoTable( FirstName varchar(100), CountryName varchar(100) ); Query OK, 0 rows affected (0.53
-
MySQLでリストをソートし、特定の値を列の最後に表示する方法
MySQLでは、ORDER BY句を工夫することで、通常の昇順・降順ソートを行いつつ、特定のレコードだけを結果の最後に固定して表示できます。本記事では、その具体的な実装方法をサンプルコードとともに解説します。テーブルの作成まず、サンプル用のテーブルを作成します。mysql> create table DemoTable( FirstName varchar(100) ); Query OK, 0 rows affected (0.97 sec)データの挿入次に、INSERT文を使ってテーブルに複数のレコードを挿入します。mysql> insert into
-
MySQLでVARCHARフィールドのサイズを拡張してもデータは影響を受けない?検証付きで解説
結論:VARCHARのサイズを拡張しても既存データは失われませんMySQLにおいて、VARCHARフィールドのサイズを拡張(大きく)した場合、そのカラムに格納されている既存のデータが影響を受けることはありません。データはそのまま保持されます。ただし注意点として、逆にサイズを縮小した場合には、格納されているデータが新しいサイズを超えているとエラーやデータの切り詰めなどの問題が発生する可能性があります。以下では、実際にSQLを実行しながらこの挙動を確認していきましょう。1. テーブルを作成するまず、VARCHAR(8)型のカラムを持つテーブルを作成します。mysql> create tabl
-
MySQLで重複する列値から対応する最大値を取得するクエリの書き方
はじめにデータベースを扱っていると、同じ値が繰り返し登録されている列(重複する列値)の中から、それぞれに対応する最大値を取り出したい場面があります。たとえば「同じ商品名の中で最も高い価格はいくらか」を知りたいときなどです。本記事では、GROUP BY句とMAX()関数を組み合わせることで、重複する列値ごとの最大値を簡単に取得する方法を解説します。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable( ProductName varchar(100),  
-
MySQLの@@identityとは?最後に挿入されたAUTO_INCREMENT値を取得する方法
MySQLにおける@@identityとは @@identityは、現在のセッション内でAUTO_INCREMENTカラムに最後に挿入された値を返すシステム変数です。新規レコード追加後に、自動採番されたIDをすぐに取得したい場合などに活用できます。ここでは、実際にテーブルを作成して動作を確認してみましょう。 1. テーブルの作成 まず、以下のコマンドでサンプル用のテーブルを作成します。 mysql> create table DemoTable( UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY
-
MySQLのUPDATE文でテーブルの中身を一切変更せずに実行することはできる?
はい、可能です。MySQLではUPDATE文を実行しても、実際には値が変わらないケースがあります。例えば「Id=Id」のように現在の値と同じ値を代入すれば、テーブルの内容は一切変更されません。ここでは、その動作をサンプルを使って確認してみましょう。サンプルテーブルの作成まず、テーブルを作成します。mysql> create table DemoTable( Id int ); Query OK, 0 rows affected (1.02 sec)レコードの挿入INSERTコマンドを使って、テーブルにいくつかのレコードを挿入します。mysql> insert into De
-
MySQLで同じ顧客の複数行の製品価格をSUM()とGROUP BYで合計して表示する方法
SUM()とGROUP BYを使った顧客別の価格合計同じ顧客が複数行に分かれて登録されているデータで、各行の製品価格を合計し、顧客ごとに結果をまとめて表示するには、SUM()関数とGROUP BY句を組み合わせて使用します。ここでは、実際のサンプルコードを使いながら手順を解説します。1. サンプルテーブルの作成まず、顧客名と2つの製品価格を格納するテーブルを作成します。mysql> create table DemoTable ( CustomerName varchar(100), Product_1_Price int, Product_2_Price int
-
【MySQL】共通のIDに基づいて各行の値を1つに連結する方法(GROUP_CONCATの使い方)
MySQLでは、GROUP_CONCAT()関数を使うことで、共通するIDを持つ複数行の値を1つの文字列にまとめて取得できます。本記事では、実際にテーブルを作成し、データを挿入してから、同じStudentIdを持つ行の名前を連結して表示するクエリを解説します。 1. サンプルテーブルの作成 まず、学生情報を格納するテーブルを作成します。 mysql> create table DemoTable ( StudentId int, StudentFirstName varchar(100), StudentLastName varchar(100) ); Quer
-
MySQLで現在の日時より前のタイムスタンプを抽出する方法
MySQLでは、NOW()関数と比較演算子を組み合わせることで、現在の日時より前のタイムスタンプを持つレコードを簡単に抽出できます。この記事では、テーブルの作成からデータの挿入、そして条件付きのSELECT文による抽出まで、具体的な手順を解説します。1. テーブルを作成するまず、TIMESTAMP型のカラムを持つテーブルを作成します。mysql> create table DemoTable( ArrivalDate timestamp);Query OK, 0 rows affected (1.96 sec)ここでは「ArrivalDate
-
MySQLでORDER BY FIELD()を使って複数のID順にレコードを並べ替える方法
MySQLでは、ORDER BY FIELD()を使用することで、任意のIDの順序に従ってレコードを並べ替えることができます。通常のORDER BY句は昇順・降順でのソートしか行えませんが、FIELD()関数と組み合わせることで、指定した値の並び順そのものをソート基準として利用できます。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable( ClientId varchar(40), ClientName varchar(40) ); Query OK, 0 rows affected (0.55 s
-
MySQLのENUM列で引用符付きの値を条件に一致させる方法
MySQLでは、ENUM型のカラムに対して引用符(シングルクォート)で囲んだ文字列値を指定して検索・集計することができます。本記事では、ENUM型カラムを持つテーブルを作成し、引用符付きの値を使ってレコードを抽出・カウントする手順を、実際のSQL文と実行結果とともに解説します。 ENUM型カラムを持つテーブルを作成する まず、「isMarried」というENUM型カラムを持つテーブルを作成します。ENUMには「1」と「0」という2つの値のみを許容するよう定義します。 mysql> create table DemoTable( isMarried ENUM(1,0) ); Qu
-
MySQLの単一クエリで最初のテーブルから値を取得し、別のテーブルへ挿入する方法
MySQLでは、INSERT INTO ... SELECT 構文を使うことで、既存のテーブルから値を取得(SELECT)しながら、そのまま別のテーブルへ挿入することができます。この記事では、実際に2つのテーブルを作成し、1つのクエリだけで最初のテーブルの値を2番目のテーブルにコピーする手順を解説します。 ステップ1:最初のテーブルを作成する まず、コピー元となるテーブル「DemoTable1」を作成します。 mysql> create table DemoTable1( Value int ); Query OK, 0 rows affected (0.65
-
MySQLでテーブル列の重複値の数をカウントするクエリの書き方
MySQLでは、GROUP BY句とHAVING句を組み合わせることで、テーブルの特定の列に含まれる重複値の数を簡単にカウントできます。この記事では、実際にサンプルテーブルを作成し、重複しているデータの件数を取得する手順を解説します。 1. サンプルテーブルの作成 まず、以下のCREATE TABLE文を使ってテーブルを作成します。 mysql> create table DemoTable( Data int ); Query OK, 0 rows affected (0.98 sec) 2. テーブルへのレコード挿入 次に、INSERT文を使用してサンプルレコードを挿入
-
サブクエリを使ってMySQLテーブルから2番目に大きい値を取得する方法
MySQLでは、ネストされたサブクエリとMAX関数を組み合わせることで、テーブル内の2番目に大きい値を簡単に取得できます。ここでは、実際にテーブルを作成して動作を確認してみましょう。 1. テーブルの作成 まず、以下のコマンドでテーブルを作成します。 mysql> create table DemoTable( Marks int ); Query OK, 0 rows affected (1.34 sec) 2. レコードの挿入 次に、INSERTコマンドを使ってサンプルデータを挿入します。 mysql> insert into DemoTable values(78