-
MySQLで誤ってエンコードされた文字化けデータをUTF-8に変換する方法
MySQLでは、データがlatin1など誤った文字コードで保存されてしまい、文字化けが発生することがあります。こうした問題は、CONVERT()関数とbinaryキーワードを組み合わせることで、UTF-8へ正しく変換・復元できます。本記事では、具体的な手順をサンプルコード付きで解説します。基本構文誤ってエンコードされたデータをUTF-8に変換するには、以下の構文を使用します。SELECT CONVERT(binary CONVERT(カラム名 USING latin1) USING UTF8) AS 別名 FROM テーブル名;サンプルテーブルの作成まず、動作を確認するためのテーブルを作成しま
-
MySQLでデータベース名やテーブル名をシングルクォートで囲むと動作しない?バッククォートの正しい使い方を解説
はじめに:なぜシングルクォートでは動かないのかMySQLでは、データベース名やテーブル名といった「識別子」を囲む場合、シングルクォート()ではなくバッククォート(`)を使用する必要があります。シングルクォートは文字列リテラル(値)を囲むためのものであり、識別子には利用できません。予約語や特殊文字を含む名前を安全に扱うためにも、識別子はバッククォートで囲むのが基本です。データベース名とテーブル名の両方をバッククォートで囲んだ、UPDATE文の基本構文は以下の通りです。UPDATE `yourDatabaseName`.`yourTableName` SET yourColumnName1 = y
-
MySQLで名前に「?」を含むデータベースを削除(DROP)する方法
MySQLでは、データベース名に「?」のような特殊文字が含まれている場合、通常の方法では削除できません。このようなデータベースを削除するには、データベース名をバッククォート(`)で囲む必要があります。基本構文DROP DATABASE `データベース名`;実際に試してみようまず、理解を深めるために「?」を含むデータベースを作成してみましょう。データベース作成のクエリは以下のとおりです。mysql> create database `test?data`; Query OK, 1 row affected (0.14 sec)これで、「?」という文字を含むデータベースが作成されました。すべ
-
MySQLで2つのテーブルを比較して欠落しているIDを抽出する方法
MySQLで2つのテーブルを比較し、片方のテーブルに存在しないID(欠落しているID)を取得したい場合は、サブクエリとNOT IN句を組み合わせるのが基本的な方法です。基本構文以下が、2つのテーブルを比較して欠落しているIDを返すための基本構文です。SELECT テーブル名1.IDカラム名 FROM テーブル名1WHERE IDカラム名 NOT IN (SELECT テーブル名2.IDカラム名 FROM テーブル名2);この構文では、サブクエリで2つ目のテーブルに存在するIDの一覧を取得し、1つ目のテーブルの中でその一覧に含まれないIDだけを抽出しています。それでは、実際にサンプルデータを使っ
-
MySQL:サンプルテーブル「bar」から文字列「foo」を含むすべての行を削除する方法
MySQLで特定の文字列を含む行を削除する方法 テーブル「bar」から文字列「foo」を含むすべての行を削除するには、LIKE演算子を使用します。LIKE演算子とワイルドカード(%)を組み合わせることで、部分一致するレコードを柔軟に検索し、まとめて削除できます。 ここでは、サンプルテーブルを作成し、実際にデータを挿入してから削除までの一連の流れを順番に解説します。 サンプルテーブル「bar」の作成 まず、動作を確認するためのサンプルテーブル「bar」を作成しましょう。テーブル作成のクエリは以下の通りです。 mysql> create table bar -> (
-
MySQLのSELECT文で「LIMIT 0」が許可されている理由とは?実行例で解説
MySQLのSELECT文で「LIMIT 0」を指定すると、空の結果セット(Empty set)が返されます。一見無意味に思えるこの構文ですが、実は開発現場で役立つ重要な用途がいくつかあります。 本記事では、LIMIT句の基本的な役割と、LIMIT 0が許可されている理由について、実際のサンプルコードとともに詳しく解説します。 LIMIT句の基本的な役割 LIMIT句は、結果セット全体ではなく、指定した行数だけを取得したい場合に使用します。例えば「上位3件だけ表示したい」といったケースで活躍します。 また、JDBCやODBC、PHPのMySQLiなどのMySQL APIを利用する場合、LIMI
-
MySQLのREGEXPで6〜10の整数に一致させる方法
MySQLで特定の範囲(たとえば6から10)の整数に一致するレコードを取得したい場合、最もシンプルなのはBETWEEN演算子を使う方法です。基本の構文は以下の通りです。SELECT *FROM yourTableName WHERE yourColumnName BETWEEN 6 AND 10;また、正規表現(REGEXP)を使って同じ条件に一致させることもできます。その構文は次のようになります。SELECT *FROM yourTableName WHERE yourColumnName REGEXP 10|[6-9];この正規表現は「10」または「6〜9のいずれか1桁」に一致することを意
-
MySQLでカラム内の余分なスペースを削除するUPDATEクエリの書き方(TRIM関数の使い方)
MySQLのTRIM()関数でスペースを削除する方法MySQLでは、TRIM()関数を使用することで、カラムに含まれる前後の不要なスペースを簡単に削除できます。データ登録時に意図せず空白が混入してしまうケースは多いため、この方法は実務でも非常に役立ちます。基本構文UPDATE yourTableName SET yourColumnName=TRIM(yourColumnName);サンプルテーブルの作成まず、動作を確認するためのテーブルを作成しましょう。以下がテーブル作成用のクエリです。mysql> create table removeSpaceDemo -> (
-
MySQLでREPLACE()関数を使って文字列内のスペースを削除するUPDATEクエリの書き方
文字と文字の間に不要なスペースが含まれているデータを一括で修正したい場合、MySQLのREPLACE()関数を使えば簡単にスペースを削除できます。基本構文スペースを除去するUPDATEクエリの基本構文は以下の通りです。UPDATE テーブル名 SET カラム名 = REPLACE(カラム名, , );この構文では、指定したカラム内のすべての半角スペースを空文字()に置き換えることで、文字列からスペースを取り除いています。動作確認用のサンプルテーブルを作成するそれでは、実際に上記の構文を試してみましょう。まずはテスト用のテーブルを作成します。mysql> create table rem
-
MySQLで複数のCOUNTクエリの結果を合計する方法
MySQLでは、複数のテーブルに対するCOUNTクエリの結果を1つの数値として合計できます。ポイントは、サブクエリを「+」(プラス)演算子で連結することです。それぞれのサブクエリが返す件数を足し合わせることで、全体の合計レコード数を簡単に取得できます。基本構文複数のCOUNTクエリの結果を合計するには、以下の構文を使用します。SELECT (SELECT COUNT(*) FROM テーブル名1)+ (SELECT COUNT(*) FROM テーブル名2)+ (SELECT COUNT(*) FROM テーブル名3)...N AS 任意の別名;検証に使用する3つのテーブルここでは、テストデー
-
MySQLですべてのレコードの先頭2文字を削除する方法
MySQLでカラム(フィールド)に格納されたすべての値から先頭2文字を削除したい場合は、SUBSTRING()関数を使用します。SUBSTRING()関数は、指定した位置以降の文字列を取り出すことができる文字列関数です。基本構文先頭2文字を削除するには、UPDATE文とSUBSTRING()関数を組み合わせて次のように記述します。UPDATE yourTableName SET yourColumnName = SUBSTRING(yourColumnName, 3) WHERE yourCondition;ポイントは「3」を指定する点です。SUBSTRING(文字列, 3) は「3文字目以降
-
TIMESTAMP()関数を使わずにタイムスタンプ値を昇順で並べ替えるMySQLのコマンド方法
MySQLでタイムスタンプ値を昇順(古い日時から新しい日時へ)に並べ替えたい場合、TIMESTAMP()関数を使う必要はありません。ORDER BY ASC句を使用するだけで簡単に実現できます。基本構文タイムスタンプのカラムを昇順にソートするための基本的な構文は以下のとおりです。SELECT yourTimestampColumnName FROM yourTableName ORDER BY yourTimestampColumnName ASC;それでは、実際にテーブルを作成して動作を確認してみましょう。サンプルテーブルの作成まず、タイムスタンプ型のカラムを持つテーブルを作成します。以下が
-
MySQLエラー1064(42000)の原因と解決策:バッククォートとシングルクォートの正しい使い分け
MySQLエラー1064(42000)とは?MySQLでは、2種類の引用符を使い分ける必要があります。ひとつはバッククォート(` `)、もうひとつはシングルクォート( )またはダブルクォートです。ERROR 1064 (42000) の多くは、カラム名に対してシングルクォートを使用してしまうことが原因で発生します。正しいルールは以下の通りです。カラム名 → バッククォート(` `)で囲む文字列値 → シングルクォート( )で囲む検証用テーブルの作成まず、エラーの挙動を理解するためにテーブルを作成します。テーブル作成用のクエリは以下の通りです。mysql> create table Bac
-
MySQLでLIKEを複数条件に使う方法|WHERE句は1つ、ANDで組み合わせるだけ
MySQLでLIKEを複数条件に指定する基本MySQLで複数の部分一致検索を行いたい場合、WHERE句を2つ並べる必要はありません。1つのWHERE句の中でLIKE演算子を複数回使用し、AND演算子で連結するだけで実現できます。ここでは、Id列とName列の両方に対してLIKEによる部分一致検索を行う具体例を、テーブル作成から順に見ていきましょう。サンプルテーブルの作成まず、動作確認用のテーブルを作成します。テーブル作成用のクエリは以下の通りです。mysql> create table WhereDemo -> ( -> Id int, -> Name
-
MySQLのストアドプロシージャで発生する「変数または新しい疑似変数ではありません」エラーの原因と解決方法
MySQLでストアドプロシージャを扱う際に、「Not a variable or NEW pseudo-variable(変数または新しい疑似変数ではありません)」というエラーメッセージに遭遇することがあります。このエラーは、主にOUTパラメータを持つストアドプロシージャを呼び出す際に、ユーザー定義変数を正しく指定していないことが原因で発生します。 エラーを解消するための基本概念 このエラーを回避するには、ストアドプロシージャから値を受け取るためにユーザー定義変数を使用します。ユーザー定義変数は、変数名の先頭に@記号を付けるのが特徴です。 ストアドプロシージャを呼び出す際の基本的な構文は以下の
-
MySQLでKey=MULのカラムを作成する方法を解説
Key=MULのカラムを作成するにはADD KEYを使用するMySQLでKey=MULを持つカラムを作成するには、ADD KEYを使用する必要があります。基本的な構文は以下の通りです。ALTER TABLE yourTableName MODIFY COLUMN yourColumnName data type, ADD KEY(yourColumnName);サンプルテーブルの作成構文を理解するために、まず実際にテーブルを作成してみましょう。テーブル作成のクエリは以下の通りです。mysql> create table Instructor -> ( -> I
-
MySQLのCREATE USER文で変数を使用する方法を解説
MySQLでは、動的クエリ(プリペアドステートメント)を活用することで、CREATE USER文に変数を使用できます。ユーザー名やパスワードをあらかじめ変数に格納しておき、それらを組み合わせてユーザーを作成する流れになります。基本的な構文1. 変数にユーザー名とパスワードを設定するまず、SETコマンドを使って、ユーザー名用とパスワード用の2つの変数を定義します。構文は以下の通りです。SET @anyVariableName=yourUserName; SET @anyVariableName1=yourpassword;2. CONCAT()関数でクエリを組み立てる次に、MySQLのCONCA
-
MySQLでテーブルをコピーする方法|INSERT INTO SELECT文の使い方を解説
MySQLでテーブルをコピーするには? MySQLであるテーブルのデータを別のテーブルへ丸ごとコピーしたい場合、INSERT INTO SELECT文を使うことで簡単に実現できます。基本構文は以下の通りです。 INSERT INTO データベース名.コピー先テーブル名(SELECT * FROM データベース名.コピー元テーブル名); この構文のポイントは、SELECT *で取得した全レコードをそのままINSERT INTOで別テーブルに流し込むという仕組みです。異なるデータベース間でも「データベース名.テーブル名」の形式で指定すればコピーが可能です。 それでは、実際にサンプルを作成しながら動
-
MySQLのテーブルから無効なメールアドレスを抽出する方法
MySQLのテーブルに保存されたデータの中から、無効なメールアドレスを検出したいケースは少なくありません。そんなときに便利なのが、LIKE演算子の否定形である「NOT LIKE」を使った方法です。以下の構文を使用することで、無効なメールアドレスのリストを簡単に抽出できます。SELECT yourColumnName FROM yourTableName WHERE yourColumnName NOT LIKE %_@_%._%;この構文では、「@」が含まれていないメールアドレスや、「@」の後にドット「.」が存在しないメールアドレスを無効なものとして判定します。パターン「%_@_%._%」は、
-
MySQLで変数の型を取得する方法は?CAST演算子を使った型変換の基本
MySQLでは変数の型を直接取得できないMySQLには、変数に格納された値の「型」そのものを取得する機能はありません。ユーザー定義変数(@変数)は値に応じて動的に型が決まるため、代わりにCAST演算子を使って、値を別の型へ明示的に変換するのが一般的な方法です。変数への値の代入方法まず、SET文を使ってユーザー定義変数に値を代入します。構文は以下の通りです。SET @yourVariableName := anyValue;CAST演算子による型変換の構文CAST演算子を使うことで、変数の値を指定した型に変換できます。SELECT CAST(@yourVariableName AS SIGNED