-
MySQLで値が「0」の場合に別の列から値を取得する方法
MySQLで値が「0」の場合に別の列から値を取得する方法MySQLでは、IF()関数を使用することで、特定の列の値が「0」だった場合に、別の列の値を代わりに取得できます。条件分岐を1つのクエリ内で簡単に実現できる便利な関数です。IF()関数の基本構文select IF(yourColumnName1=0,yourColumnName2,yourColumnName1) as anyAliasName from yourTableName;この構文では、最初の列の値が「0」であれば2番目の列の値を返し、「0」以外であれば最初の列の値をそのまま返します。サンプルテーブルの作成まず、動作確認用のテー
-
MySQLで現在のデータベース名を指定してデータベースを削除する方法
MySQLでは、DROP DATABASE文を使うことでデータベースを削除できます。ここでは、現在接続中のデータベース名を動的に取得し、そのデータベース自身を削除する手順を解説します。1. 現在のデータベース名を取得する現在選択されているデータベース名を確認するには、SELECT DATABASE()を使用します。select database();2. 削除クエリを動的に組み立てる構文現在のデータベース名をユーザー変数に格納し、CONCAT()で削除用のSQL文を組み立て、プリペアドステートメントとして実行します。基本的な構文は以下のとおりです。set @anyVariableName =
-
MySQLでデータベースの平均値を計算する方法|AVG関数の使い方を解説
MySQLでテーブル内の数値データの平均値を求めたい場合、AVG() 関数を使用します。AVG関数は指定したカラム(列)に含まれる値の平均を自動的に計算してくれる集計関数です。AVG関数の基本構文複数のカラムに対してそれぞれ平均値を求める場合は、以下のような構文になります。SELECT avg(カラム名1) AS 別名1, avg(カラム名2) AS 別名2, avg(カラム名3) AS 別名3, ... FROM テーブル名;実際にサンプルテーブルを作ってみようここでは、3つのINT型カラムを持つテーブル「demo31」を作成します。mysql>
-
MySQLでINSERTやUPDATEなしに平均スコアを自動表示する方法:生成カラム(GENERATED COLUMN)の活用術
MySQLでは、テーブルに「計算カラム(生成カラム)」を追加することで、INSERTやUPDATEを行わなくても、クエリ実行時に自動的に計算された値を表示できます。本記事では、複数のカラムの値から「平均スコア」を自動的に算出して表示する方法を、具体例とともにわかりやすく解説します。 基本構文 既存のテーブルに生成カラムを追加するには、ALTER TABLE文とGENERATED ALWAYS AS ... VIRTUAL句を使用します。基本的な構文は以下のとおりです。 ALTER TABLE テーブル名 ADD COLUMN カラム名 データ型 GENERATED ALWAYS AS ((
-
MySQLでDEFAULTキーワードを使ってデフォルト値を設定したテーブルを作成する方法
MySQLでは、テーブル作成時にカラムのデータ型の後にDEFAULTキーワードを指定することで、そのカラムにデフォルト値を設定できます。INSERT文で値が指定されなかった場合、自動的にこのデフォルト値が適用されます。テーブルの作成例それでは、実際にデフォルト値を持つテーブルを作成してみましょう。mysql> create table demo33 -> ( -> id int not null auto_increment primary key, -> name varchar(20) not null, -> start_date date default(
-
MySQLで日付形式から数値の日付値を抽出する方法
MySQLで日付形式から数値の日付値を抽出する方法MySQLで「31-Jan-19」のような文字列として保存された日付データを数値(UNIXタイムスタンプ)に変換したい場合は、UNIX_TIMESTAMP() 関数と STR_TO_DATE() 関数を組み合わせて使用します。基本的な構文は以下の通りです。select UNIX_TIMESTAMP(STR_TO_DATE(yourColumnName, %d-%b-%y)) as anyAliasName from yourTableName;サンプルテーブルの作成まず、動作確認用のテーブルを作成します。mysql> create tab
-
MySQLのテーブルから重複行を削除する方法【INNER JOINを使った実例付き】
MySQLのテーブルに同じ内容のデータが複数登録されてしまい、重複行を整理したいというケースはよくあります。本記事では、DELETE文とINNER JOINを組み合わせる方法で、テーブルから重複データを効率的に削除する手順を、実際のSQL例とともにわかりやすく解説します。重複行を削除するための基本構文重複行を削除するには、同じテーブルを自己結合(INNER JOIN)し、条件に一致する行だけをDELETEします。基本構文は以下のとおりです。delete tbl1 from yourTableName anyAliasName1 inner join yourTableName anyAlias
-
MySQLで時刻(TIME型)から「分」を抽出する方法
MySQLでは、extract()関数とcast()を組み合わせることで、時刻データから分だけを簡単に抽出できます。基本構文以下が基本となる構文です。select extract(minute from cast(yourColumnName as time)) as anyAliasName from yourTableName;ポイントは、対象のカラムをcast()でtime型に変換してから、extract()のminute指定で分を取り出す点です。サンプルテーブルの作成まずは動作を確認するためのテーブルを作成しましょう。mysql> create table demo15 ->
-
【MySQL】カンマ区切りのリストから特定の文字列を検索するには?find_in_set()の使い方を解説
カンマ区切りのデータ検索には正規表現よりfind_in_set()が便利MySQLでカンマ区切りのリスト(CSV形式のカラム)から特定の値を検索したい場合、正規表現を使わなくても、find_in_set() 関数を使うことで簡単に実現できます。find_in_set()は、カンマ区切りの文字列リストの中に指定した値が含まれているかどうかを判定してくれる便利な関数です。基本構文select *from テーブル名 where find_in_set(検索したい値, カラム名);それでは、実際にサンプルテーブルを作成しながら動作を確認していきましょう。サンプルテーブルの作成まずは以下のコマンドでテ
-
MySQLでSELECTとSHOWコマンドの結果を1つに結合する方法
はじめにMySQLでは、SELECT文やSHOWコマンドの実行結果を、ユーザー定義変数(セッション変数)を活用することで1つの結果セットにまとめることができます。この記事では、その具体的な方法をサンプルコード付きで解説します。基本的な構文複数のコマンド結果を1つに結合するには、以下のようなクエリを使用します。各変数に別名(エイリアス)を付けて出力するのがポイントです。select @任意の変数名1 as 別名1, @任意の変数名2 as 別名2, ......N;手順1:最初の変数を作成・初期化するまず、結合したい値を格納するための最初の変数を作成し、初期化します。mysql> set
-
MySQLで数字を含む文字列を自然な順序で並べ替える方法
MySQLで数字を含む文字列を自然な順序で並べ替える方法MySQLで「2J John has 9」や「2J John has 58」のように数字が混ざった文字列を並べ替えたい場合、単純なORDER BYでは文字列単位で比較されるため、意図したとおりの順序にならないことがあります。このようなときは、REGEXP_REPLACE関数やLENGTH関数をORDER BY句と組み合わせることで、人間にとって自然な順序(自然順ソート)を実現できます。ここでは、実際にテーブルを作成して手順を確認していきましょう。1. サンプルテーブルの作成まず、CREATE TABLE文でテーブルを作成します。mysql
-
JavaとMySQLでLIKE検索を使う際、検索変数の引用符を正しく記述する方法
JavaからMySQLに接続し、LIKE句で検索変数(キーワード)を使ったあいまい検索を行う場合、SQL文中の文字列を正しくシングルクォート()で囲むことが重要です。まず、検索変数を使ったLIKE句の正しい構文を見てみましょう。String sqlQuery; sqlQuery = select * from yourTableName where yourColumnName like % + yourSearchVariableName + %;それでは、実際にサンプルテーブルを作成して動作を確認していきます。サンプルテーブルの作成まず、テーブルを作成します。mysql> creat
-
MySQLでテーブルAとBを比較し、Bに存在しないデータをテーブルCに挿入する方法
MySQL:テーブルAとBを比較し、Bに存在しないデータをCへ挿入する方法テーブルAのデータとテーブルBを比較し、Bに存在しないレコードだけをテーブルCに挿入したい場合は、LEFT JOIN(左外部結合)を使うのが最もシンプルで確実な方法です。ここでは、3つのテーブル(demo20=テーブルA、demo21=テーブルB、demo22=テーブルC)を使って、具体的な手順を順番に解説します。ステップ1:テーブルA(demo20)を作成するまず、比較元となる最初のテーブルを作成します。mysql> create table demo20 −> ( −> id
-
MySQLで最大の累積値とその出現回数を取得するクエリの書き方
カラム同士を掛け合わせた値(累積値)の中から最大値と、その出現回数を取得したい場合は、集計関数 COUNT(*) をサブクエリと組み合わせて使用します。あわせて GROUP BY 句も活用します。テーブルの作成まず、以下のコマンドでテーブルを作成しましょう。mysql> create table demo23-> (-> id int not null auto_increment primary key,-> value1 int,-> value2 int-> );Query OK, 0 rows affected (1.65 sec)レコードの挿入続い
-
MySQLでJSON型カラムにデフォルト値を設定する方法
MySQLでは、JSON型のカラムにもデフォルト値を設定できます。その場合は、DEFAULT制約を使用します。基本的な構文は以下の通りです。ALTER TABLE テーブル名 MODIFY COLUMN カラム名 JSON NOT NULL DEFAULT ( JSON_OBJECT() );サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。ここでは demo24 というテーブルを作成します。mysql> create table demo24 -> ( -> employee_information text -> ) ->; Query OK,
-
【解決策】Spring Boot + JSP + Spring Securityでデータソースの設定に失敗する場合の対処法|MySQLでの設定方法を徹底解説
Spring BootでMySQLのDataSource(データソース)を設定するには、application.propertiesに必要な接続情報を定義するだけでOKです。本記事では、設定ファイルの基本的な書き方から、EntityManagerを使ったコントローラーの実装、プロジェクトの実行と動作確認まで、サンプルコードを交えてわかりやすく解説します。 application.propertiesによるDataSourceの設定方法 Spring Bootでは、application.propertiesにユーザー名、パスワード、データベースURL、ドライバークラス名を記述するだけで、デー
-
【MySQL】小数点より2桁前(十の位)の数字を取得する方法
MySQLで小数点より2桁前(十の位)に位置する数字を取得したい場合は、div演算子の概念を利用すると簡単に実現できます。divは整数除算を行う演算子で、剰余演算子(%)と組み合わせることで、任意の桁の数字を取り出すことが可能です。 テーブルの作成 まず、動作確認用のサンプルテーブルを作成しましょう。 mysql> create table demo1 −> ( −> value float −> ); Query OK, 0 rows affected (2.20 sec) create table文を使用し、float型のカラム
-
MySQLで複数のLIKE演算子をORDER BYと組み合わせる方法
MySQLでは、複数のLIKE演算子をORDER BY句の中で組み合わせることで、指定したキーワードにより多く一致するレコードを優先的に並べ替えることができます。このテクニックは、LIKE演算子が「一致すれば1」「一致しなければ0」を返すという性質を利用しています。各条件の結果を足し合わせることで一致数を計算し、降順(DESC)にソートすることで、関連度の高いレコードを上位に表示できるのです。以下は、複数のLIKE演算子をORDER BYと組み合わせて実装する際の基本構文です。select *from yourTableName order by ( yourColumnName li
-
MySQLで複数テーブルにまたがる結果の総数を制限する方法
UNION ALLとLIMITを組み合わせて結果の総数を制限する複数のテーブルにまたがる検索結果の合計件数を制限したい場合は、UNION ALLとLIMITを組み合わせることで実現できます。この記事では、例として3つのテーブルを作成し、それぞれの結果を結合した上で全体の件数を制限する手順を具体的に解説します。1つ目のテーブル(demo3)を作成するまず、次のクエリで最初のテーブルを作成します。mysql> create table demo3 -> ( -> value int -> ); Query OK, 0 rows affected (1.39 sec)続いて、
-
MySQLエラー1099(HY000)の原因と解決方法:READロックされたテーブルを更新するには
MySQLエラー1099(HY000)とはMySQLでテーブルに対してLOCK TABLES ... READを実行して読み取りロックをかけた状態では、そのテーブルへのINSERTやUPDATEなどの更新操作を行うことができません。この状態で更新を試みると、「ERROR 1099 (HY000): Table xxx was locked with a READ lock and cant be updated」というエラーが発生します。このエラーを解消するには、UNLOCK TABLESステートメントを使ってロックを解除する必要があります。以下に、実際の動作を例とともに確認していきましょう。