-
MySQLクエリで「a」「b」「c」で始まるすべての名前を検索する方法
MySQLで「a」「b」「c」のいずれかの文字で始まる名前をすべて検索したい場合は、LIKE演算子とOR演算子を組み合わせて使用します。基本構文SELECT * FROM yourTableName WHERE yourColumnName LIKE A% OR yourColumnName LIKE B% OR yourColumnName LIKE C%;このクエリは、指定したカラムの値が「a」または「b」または「c」で始まるレコードのみを抽出します。LIKE句における % は任意の文字列に一致するワイルドカードであり、「A%」と指定することで「Aで始まるすべての文字列」を意味
-
MySQLを再起動してもevent_scheduler=ONを維持する方法
MySQLのグローバルシステム変数「event_scheduler」は、SET GLOBAL文で有効化(ON)しただけでは、サーバーの再起動とともにデフォルト値へ戻ってしまいます。再起動後もイベントスケジューラを確実に有効なままにしておくには、設定ファイルへの記述、あるいは永続化機能の利用が必要です。 現在の設定状態を確認する まず、現在のevent_schedulerの状態を次のSELECT文で確認できます。 mysql> SELECT @@event_scheduler; 実行結果: +-------------------+ | @@event_scheduler | +-----
-
MySQLでSELECT DISTINCTとCOUNTを組み合わせる方法!GROUP BYを使った件数集計の基本
MySQLで重複を除いて各値の出現回数を数えるには?MySQLで「重複しない値(DISTINCT)の一覧」と「それぞれの出現回数」を同時に取得したい場合は、GROUP BY句と集計関数COUNT(*)を組み合わせるのが基本の方法です。単純にSELECT DISTINCTだけでは値の一覧しか取得できませんが、GROUP BYを使えば各グループごとのレコード数を一度のクエリで効率的に集計できます。基本構文SELECT yourColumnName, COUNT(*) AS anyVariableName FROM yourTableName GROUP BY yourColumnName;COUN
-
MySQLのSELECT文で値「1」を「Y」に変換して表示する方法
MySQLでSELECT結果の1をYに変換するには?MySQLでは、IF()関数を使うことで、SELECT文の取得結果に含まれる「1」を「Y」に変換して表示できます。テーブルのデータそのものを更新するわけではなく、表示のタイミングで値を変換できるのが特徴です。基本構文SELECT IF(カラム名, Y, カラム名) AS 別名 FROM テーブル名;IF()関数は、第1引数の条件(または値)が真の場合に第2引数の値を、偽の場合に第3引数の値を返します。つまり、カラムの値が「1(真)」なら「Y」が返され、「0(偽)」なら元の値がそのまま返されます。動作確認用テーブルの作成それでは、実際に構文を確
-
MySQLのSELECTステートメントでCASE式を使って値「1」を「Y」に変換する方法
MySQLでは、SELECTステートメントの中でCASE式を使うことで、カラムの値を別の値や文字列に変換して取得できます。本記事では、tinyint型のフラグ値である「1」を「Y」に置き換えて表示する方法を、具体的な手順とともに解説します。 1. サンプルテーブルの作成 まずは動作確認用のテーブルを作成します。以下がCREATE TABLE文の例です。 mysql> create table changeValuefrom1toY -> ( -> Id int NOT NULL AUTO_INCREMENT, -> isValidAddres
-
SQLで2つ以上のフィールドを連結する方法|CONCAT()とCONCAT_WS()の使い方
SQLで2つ以上のフィールドを連結する方法SQLで3つ以上のカラム(フィールド)を1つの文字列につなげたい場合、MySQLでは CONCAT() 関数か CONCAT_WS() 関数を使用します。まずは基本となる構文から見ていきましょう。CONCAT() を使う場合の構文CONCAT() の引数にカラムを並べ、その間に区切り文字として「/」などを指定します。SELECT CONCAT(カラム名1,/,カラム名2,/,カラム名3,/,......N) AS 任意の別名 FROM テーブル名;CONCAT_WS() を使う場合の構文CONCAT_WS() は第1引数に区切り文字を一度だけ指定できる
-
MySQLで日時(DATETIME)を整数に変換する方法|UNIX_TIMESTAMP()関数の使い方を解説
MySQLでDATETIME型を整数に変換するには? MySQLでは、UNIX_TIMESTAMP()関数を使うことで、DATETIME型の日時データを整数(UNIXタイムスタンプ)に変換できます。UNIXタイムスタンプとは、1970年1月1日00:00:00 UTCからの経過秒数を表す数値です。 基本的な構文は以下のとおりです。 SELECT UNIX_TIMESTAMP(yourDatetimeColumnName) AS anyVariableName FROM yourTableName; サンプルテーブルを作成する それでは、実際に動作を確認するためのテーブルを作成しましょう。テー
-
SQLでVarcharをDouble(数値)に変換する方法!CAST()関数の使い方を徹底解説
SQLでVarchar(文字列)をDouble(数値)に変換する方法MySQLでは、CAST()関数を使うことで、varchar型(文字列型)のカラムをdoubleに相当するDECIMAL型(数値型)へ変換できます。金額データなどが誤って文字列として保存されていても、この方法を使えば数値として正しく並べ替えや計算ができるようになります。CAST()関数を使った変換の基本構文varcharをdoubleに変換するには、CAST()関数を利用します。基本的な構文は次のとおりです。SELECT カラム名1, カラム名2, ......N, CAST(対象カラム名 AS DECIMAL(全
-
MySQLで日付の年だけを2020年から2011年に変更する方法(SUBDATE関数の使い方)
MySQLでは、SUBDATE() 関数と INTERVAL を組み合わせることで、日付データの「年」の部分だけをまとめて変更できます。2020年から2011年への変更は、両者の差が9年であるため、9年分の日付を減算するだけで実現できます。月や日はそのまま維持される点がポイントです。SUBDATE()を使った基本的な構文UPDATE テーブル名SET 日付カラム名 = SUBDATE(日付カラム名, INTERVAL 9 YEAR);この構文を実行すると、指定したカラム内のすべての日付から9年が引かれ、2020年のレコードが一括して2011年に変わります。動作確認用テーブルの作成それでは、実際
-
MySQLの主キーフィールドにNOT NULLを追加する必要がない理由
MySQLの主キーにNOT NULLを指定する必要がない理由MySQLでは、主キー(PRIMARY KEY)フィールドにNOT NULLを明示的に追加する必要はありません。主キーを作成した時点で、MySQLが内部的に自動的にNOT NULL制約を適用してくれるからです。つまり、主キーとは「NOT NULL」と「ユニークキー(一意制約)」の両方の性質を兼ね備えたものなのです。主キーを持つテーブルの作成例実際に主キーフィールドの動作を確認してみましょう。まずはテーブルを作成します。mysql> create table NotNullAddDemo -> ( -> I
-
MySQLのTIME_FORMAT関数を使って時刻フィールドから秒を削除する方法
MySQLの時刻(TIME)型フィールドから秒を取り除いて「時:分」の形式だけを表示したい場合、TIME_FORMAT() 関数を使用します。この関数にフォーマット指定子 %H:%i を渡すことで、秒を含まない時刻文字列を簡単に取得できます。TIME_FORMAT()の基本構文SELECT TIME_FORMAT(カラム名1, %H:%i) AS 任意の別名1, TIME_FORMAT(カラム名2, %H:%i) AS 任意の別名2 FROM テーブル名;それでは、実際にテーブルを作成して動作を確認してみましょう。サンプルテーブルの作成まず、開始時刻と終了時刻を持つテーブルを作成
-
MySQLのユーザー定義変数とローカル変数の違いとは?使い方と初期化の挙動を徹底解説
MySQLでは、SQL文やストアドプロシージャの中で値を一時的に保持するための「変数」を利用できます。大きく分けてユーザー定義変数(セッション固有変数)とローカル変数の2種類があり、それぞれスコープや寿命、初期化のタイミングが異なります。本記事では、両者の違いと具体的な使い方をサンプルコード付きで解説します。ユーザー定義変数(セッション固有変数)とはユーザー定義変数は、セッション内でのみ有効な緩く型付けされた変数です。セッション中の任意の場所で初期化でき、その値はセッションが終了するまで保持され続けます。ユーザー定義変数は必ず記号 @ を接頭辞として付けます。@anyVariableName;
-
MySQLで2つのカラムからNULL以外の値を抽出する4つの方法
MySQLでは、2つのカラムのうちNULLでない方の値を取得したい場面がよくあります。例えば、ユーザー情報の補完や、データクレンジング処理などがその代表例です。本記事では、NULL以外の値を優先的に選択するための方法を、代表的な4つの構文とともに詳しく解説します。 方法1:IFNULL()関数を使う IFNULL()は、第1引数がNULLの場合に第2引数を返すシンプルな関数です。2つのカラムからNULL以外の値を取得する最も基本的な方法です。 構文は以下の通りです。 SELECT IFNULL(yourColumnName1, yourColumnName2) AS anyVariableN
-
MySQLでテーブルの日付値に30日を追加する方法
MySQLのテーブルに格納された日付値に30日を追加したい場合は、UPDATEコマンドとADDDATE()関数を組み合わせることで実現できます。基本構文UPDATE テーブル名 SET 日付カラム名=ADDDATE(日付カラム名, INTERVAL 30 DAY);なお、ADDDATE()はDATE_ADD()関数の別名(エイリアス)であり、どちらを使っても同じ結果が得られます。「INTERVAL 30 DAY」は「30日間」という単位を明示的に指定する記述です。動作確認用テーブルの作成それでは、実際に構文の動きを確認してみましょう。まず、以下のクエリでテーブルを作成します。mysql>
-
MySQLのDATE_FORMATで短い月名を表示するには?%Mではなく%bを使う方法
MySQLのDATE_FORMAT()関数において、%Mは「January」「February」のような完全な月名(フルネーム)を表示するための書式指定子です。そのため、「Jan」「Feb」のような短い月名(省略形)を表示する目的には使用できません。短い月名を表示したい場合は、%bを使用します。両者の違いは以下のとおりです。%M:完全な月名(January〜December)%b:省略された月名(Jan〜Dec)基本の構文SELECT DATE_FORMAT(yourColumnName, %d-%b-%y) AS anyVariableName FROM yourTableName;それでは
-
MySQLで「WHERE 1=0」を使う理由とは?クエリに行を返させないテクニック
MySQLの「WHERE 1=0」とは?MySQLにおける条件式「1=0」は、常に偽(false)と評価される条件です。この条件をWHERE句に指定すると、クエリは一切の行を返さず、必ず空のセット(Empty set)を返します。一見無意味な条件に思えますが、意図的に検索結果を空にしたい場面や、テーブル構造だけを複製したい場合などに活用される便利なテクニックです。基本構文構文は以下の通りです。SELECT * FROM yourTableName WHERE 1=0;実際に試してみようそれでは、具体的な動作を確認するためにサンプルテーブルを作成していきましょう。1. テーブルの作成まず、テーブ
-
MySQLで2つの列の値が異なる行をSELECT文で抽出する方法
MySQLで2つの列の値が異なる行を取得するには MySQLでは、!=(または <>)演算子を使うことで、2つの列の値が一致しない行を抽出できます。ただし、NULLが含まれる可能性がある場合は注意が必要です。NULLとの比較は常にUNKNOWNと評価されるため、単純な != だけではNULLを含む行が結果から漏れてしまいます。 そこで、NULLのケースも考慮した構文は以下のようになります。 SELECT * FROM yourTableName WHERE yourColumnName1 != yourColumnName2 OR (yourColumnName1 IS NULL
-
MySQLのINT型カラムにNULLを設定することはできる?基本と実例を解説
結論から言うと、MySQLのINT型カラムにはNULLを設定することができます。INT型カラムは、特に制約を指定しない限り、デフォルトでNULLを許容するNullableなカラムとして作成されます。NULLを挿入する基本構文INT型カラムにNULLを挿入する場合、INSERT文で値として「NULL」を指定します。基本構文は以下の通りです。INSERT INTO yourTableName(yourIntColumnName) values(NULL);実際にテーブルを作って確認してみようそれでは、実際の例を見ていきましょう。まずはテスト用のテーブルを作成します。「Id」カラムにはNOT NUL
-
MySQLでカラムのNOT NULL制約を削除する方法【ALTER TABLEの使い方】
MySQLでは、テーブル作成時にNOT NULL制約を付けたカラムにはNULL値を挿入できません。しかし、運用中に仕様変更などでNULLを許可したくなるケースは少なくありません。そのような場合は、ALTER TABLE文を使ってNOT NULL制約を削除できます。NOT NULL制約を削除する基本構文NOT NULL制約を外すには、MODIFY COLUMN句でカラムを再定義します。構文は以下のとおりです。ALTER TABLE テーブル名 MODIFY COLUMN カラム名 データ型;ポイントは、カラム定義から「NOT NULL」を取り除いて再指定することです。データ型は元の定義と同じもの
-
MySQLで全行の値に数値や日付を加算する方法(UPDATE文の使い方)
MySQLでは、UPDATE文を使うことで、テーブル内のすべての行に対して一括で値を加算できます。対象となるカラムの型が整数型か日付型かによって、書き方が少し異なります。 整数型カラムに値を加算する構文 カラムが整数型の場合、以下のような構文を使用します。 UPDATE テーブル名 SET 整数カラム名 = 整数カラム名 + 加算する値; UPDATE テーブル名 SET 整数カラム名 = 加算する値 WHERE 整数カラム名 IS NULL; 1行目は既存の値に加算する基本形、2行目はNULLが含まれている場合にNULLを任意の値へ置き換えるためのクエリです。 日付型カラムに値を加算する