-
MySQLストアドプロシージャでWHERE IN()を使う方法
MySQLのストアドプロシージャ内でWHERE IN()句を動的に扱いたい場面は多くあります。本記事では、実際にテーブルを作成し、ストアドプロシージャを定義して、IN()条件に複数の値を渡して実行するまでの手順を解説します。1. サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> );Query OK, 0 rows affected (0.69 sec)2. レコードの挿入INSERTコマ
-
MySQLで特定のレコードを除外し、残りのレコード(数値)の合計を求める方法
データベース操作では、特定の条件に該当するレコードを除外したうえで、残りのレコードの数値を合計したいケースがよくあります。MySQLでは WHERE 句と集計関数 SUM() を組み合わせることで、この処理を簡単に実現できます。本記事では、サンプルテーブルを使いながら、「特定のレコード(ここでは名前が John のレコード)を無視して、残りの Amount カラムの合計を取得する」手順を解説します。1. サンプルテーブルを作成するまずは、名前(Name)と金額(Amount)を格納するテーブルを作成します。mysql> create table DemoTable
-
MySQLで最適化と修復を行うために必要な最小限のユーザー権限とは?
MySQLで最適化と修復に必要な最小限の権限MySQLでテーブルの最適化(OPTIMIZE)や修復(REPAIR)を実行するために、ユーザーに最低限必要な権限は「SELECT」と「INSERT」です。以下の構文を使用すると、ユーザーに対してSELECT権限とINSERT権限を付与できます。GRANT INSERT, SELECT ON yourDatabaseName.* TO yourUserName@localhost;手順1:ユーザーの作成まず、新しいユーザーを作成するクエリは次のとおりです。mysql> CREATE USER Emma@localhost IDENTIFIED
-
MySQLで別の列の条件に基づいて列の値を合計する方法
MySQLである列の値を、別の列の条件(例えば入社日の「年」や「月」)が同じレコードごとに合計したい場合は、集計関数SUM()とGROUP BY句を組み合わせることで実現できます。 ここでは、従業員名(EmployeeName)、入社日(JoiningDate)、給与(Salary)を持つテーブルを例に、月ごとの給与合計を求める手順を解説します。 1. サンプルテーブルの作成 まず、以下のコマンドでテーブルを作成します。 mysql> create table DemoTable -> ( &nbs
-
MySQLでvarchar型の複数列にUNIQUE制約を設定する方法
MySQLでは、1つまたは複数の列(カラム)に対してUNIQUE制約を設定できます。varchar型の列も例外ではなく、複数のvarchar列を組み合わせた複合ユニーク制約を定義することで、「列の組み合わせが重複しない」ようにデータの整合性を保つことが可能です。UNIQUE制約の基本構文既存のテーブルにUNIQUE制約を追加するには、ALTER TABLE文を使用します。alter table yourTableName add unique(yourColumnName1,yourColumnName2,...N);この構文では、指定した複数の列の値を組み合わせた全体が一意である必要がありま
-
MySQLで月を指定してデータを抽出する方法(MONTH()関数の使い方)
MySQLで日付データから特定の「月」に該当するレコードだけを抽出したい場合は、MONTH()関数を使うのが便利です。この記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、月を条件にしたSELECT文の書き方を具体的に解説します。1. サンプルテーブルの作成まずは、出荷日(Shippingdate)を格納するdatetime型のカラムを持つテーブルを作成します。mysql> create table DemoTable1599 -> ( -> Shippingdate d
-
MySQLでテーブルのディスク使用量を確認する方法|information_schema.tablesの使い方
MySQLでテーブルのディスク使用量は照会できる?はい、可能です。MySQLでは、システムビューである information_schema.tables を参照することで、テーブルが使用しているディスク容量を確認できます。基本的な構文は以下のとおりです。SELECT * FROM information_schema.tables WHERE table_name = テーブル名;ここからは、実際にサンプルテーブルを作成し、ディスク使用量を照会するまでの手順を順番に見ていきましょう。手順1:検証用テーブルを作成するまず、サンプルとなるテーブルを作成します。mysql> CREATE T
-
MySQLで空白(空文字列)の列をNULLに更新する方法
データベースを運用していると、「空文字列()」として登録されてしまったデータを「NULL」に置き換えたいケースによく出会います。NULLと空文字列は似ているようで意味が異なり、検索条件や集計処理に影響を与えるため、統一しておくことが重要です。この記事では、IF()関数とUPDATE文を組み合わせて、空白値の列をNULLに更新する手順を、実際のSQLコードと実行結果付きで解説します。1. サンプルテーブルを作成するまず、動作確認用のテーブルを作成します。ここでは氏名を格納するシンプルなテーブルを用意しました。mysql> create table DemoTable1601 -&g
-
MySQLで文字列(varchar)をタイムスタンプ形式に変換する方法
MySQLで文字列をタイムスタンプ形式に変換するには?MySQLで文字列(varchar型)をタイムスタンプ形式に変換するには、STR_TO_DATE()関数とDATE_FORMAT()関数を組み合わせて使用します。STR_TO_DATE()で文字列を日付値に解析し、DATE_FORMAT()で目的の形式に整形します。まず、実際の動作を確認するためのサンプルテーブルを作成しましょう。mysql> create table DemoTable1602 -> ( -> Reportin
-
MySQLでSELECTクエリを使用してデータを挿入(INSERT)する方法
MySQLでは、INSERT文とSELECTクエリを組み合わせることで、テーブルにデータを挿入することができます。通常、SELECTは既存のテーブルからデータを取得するために使われますが、値を直接指定してINSERTを実行する際にも活用できる便利な手法です。基本構文SELECTクエリを使用してINSERTを実行する場合の構文は以下の通りです。insert into yourTableName(yourColumnName1,yourColumnName2,yourColumnName3,...N) select yourValue1,yourValue2,yourValue3,......N;
-
MySQLで単一の列(カラム)の値のみを更新する方法
MySQLでは、UPDATE文を使うことで、テーブル内の特定の列(カラム)の値だけを簡単に更新できます。この記事では、サンプルテーブルを作成し、単一の列の値のみを更新する手順を具体例とともにわかりやすく解説します。 1. サンプルテーブルの作成 まず、テーブルを作成しましょう。 mysql> create table DemoTable1605 -> ( -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> StudentName varchar(20), -> Stude
-
MySQLストアドプロシージャで条件分岐を正しく実装する方法を解説
MySQLストアドプロシージャにおける条件分岐の基本MySQLのストアドプロシージャ内で条件を設定するには、IF ... THEN ... ELSE ... END IF構文を使用します。基本的な書式は以下のとおりです。if yourCondition then yourStatement1; else yourStatement2; end if; end //この構文を使うことで、条件が真(true)の場合はTHEN以降の処理が実行され、偽(false)の場合はELSE以降の処理が実行されます。 実際の実装例それでは、上記の構文をもとに、具体的なストアドプロシージャを作成し
-
MySQLで調和平均と二乗平均(Quadratic Mean)を計算する方法
MySQLには調和平均(Harmonic Mean)や二乗平均(Quadratic Mean)を直接求める組み込み関数は用意されていませんが、COUNT()、SUM()、SQRT()といった基本的な集計関数・数学関数を組み合わせることで、簡単に実装できます。サンプルテーブルの作成まず、以下のようにテーブルを作成します。mysql> create table DemoTable1606 -> ( -> Value int -> );Query OK, 0 rows affected (0.55 sec)レコードの挿入INSERTコマンドを使って、テーブル
-
【MySQL】現在の日付+2週間より前のレコードを取得するクエリの書き方
MySQLでは、CURDATE()関数とDATE_ADD()関数を組み合わせることで、「現在の日付+2週間」よりも前の日付を持つレコードを簡単に抽出できます。この記事では、サンプルテーブルを作成しながら、具体的な手順と実行結果をわかりやすく解説します。基本となる構文今回使用する基本構文は以下のとおりです。select * from yourTableName where yourColumnName < DATE_ADD(CURDATE(), INTERVAL 2 WEEK);現在の日付の確認注:この記事では現在の日付を「2019-10-20」として進めます。まず実際に確認しておきましょ
-
MySQLで2つのフィールドを結合し、その結果で3つ目のフィールドを更新する方法
MySQLで2つのフィールドを結合して別のカラムに保存する方法MySQLでは、CONCAT関数とUPDATE文を組み合わせることで、2つのカラム(フィールド)の値を連結し、その結果を別のカラムに保存できます。手順は大きく分けて2段階です。まずALTER TABLEで新しいカラムを追加し、次にUPDATE文で連結した値を設定します。基本構文2つのフィールドを結合するための基本的な構文は以下の通りです。alter table テーブル名 add column カラム名 データ型;update テーブル名 set 追加したカラム名 = concat(カラム名1, , カラム名2);サンプルテーブル
-
MySQLでvarchar型の時刻データを正しい時間形式に変換する方法
varchar型として保存された「1620」や「2345」のような時刻データを、実際の時間形式(例:04:20)に変換したい場合、MySQLのTIME_FORMAT()関数を使用することで実現できます。この記事では、SUBSTRING()とCONCAT()を組み合わせて、4桁の文字列を「時:分」の形式に整形する手順を解説します。1. サンプルテーブルの作成まず、到着時刻をvarchar型で格納するテーブルを作成します。mysql> create table DemoTable1591 -> ( -> ArrivalTime varchar(20) -&
-
MySQLでNULLまたは0のフィールドだけを更新する方法【IF()関数の実例付き】
MySQLでは、IF()関数を使って条件を設定することで、フィールドがNULLまたは0の場合にのみ更新処理を行うことができます。本記事では、実際にテーブルを作成し、動作を確認しながら手順をわかりやすく解説します。 サンプルテーブルの作成 まず、更新対象となるテーブルを作成します。 mysql> create table DemoTable1592 -> ( -> StudentMarks int -> ); Query OK, 0 rows affected (0.76 sec) テストデータの挿入 次に、INSERT文でレコードを挿入します。こ
-
MySQLでCASE WHENの代わりに使えるIF()関数の使い方
MySQLでCASE WHENの代わりにIF()関数を使う方法MySQLでは、CASE WHENの代わりにIF()関数を使うことができます。IF()関数は、条件が真の場合に2番目の引数を、偽の場合に3番目の引数を返すシンプルな条件分岐関数で、単純な分岐処理をより簡潔に記述できるのが特徴です。まずはサンプルテーブルを作成しましょう。mysql> create table DemoTable1593 -> ( -> PlayerScore int -> ); Query OK, 0 rows affected (0.44 sec)次に、insertコ
-
MySQLでn番目に高い値を取得する方法をわかりやすく解説
MySQLでn番目に高い値を取得する方法MySQLでテーブル内のn番目に高い値を取得したい場合、ORDER BY句とLIMIT句を組み合わせることで簡単に実現できます。基本構文n番目に高い値を選択するための基本的な構文は以下の通りです。SELECT DISTINCT(カラム名) FROM テーブル名 ORDER BY カラム名 DESC LIMIT (n番目の値 - 1), 1;ポイントはLIMIT句の使い方です。第1引数に「(n番目 - 1)」を指定することで、降順に並べ替えた結果から指定した位置のレコードを1件だけ取得できます。また、DISTINCTを使用することで、重複する値を除外した上
-
MySQLのREGEXP_REPLACEで数値を除去し、文字列と「/」のみを抽出する方法
MySQLのREGEXP_REPLACEで数値を除外し、文字列と「/」だけを取得する方法 カラムの値から数値部分を取り除き、文字列と「/(スラッシュ)」のみを抽出したい場合には、REGEXP_REPLACE() 関数が便利です。この記事では、サンプルテーブルを作成しながら、正規表現パターンを使って数値を削除する具体的な手順を解説します。 1. サンプルテーブルの作成 まず、次のようにテーブルを作成します。 mysql> create table DemoTable1595 -> ( -