-
MySQLのSELECT文にワイルドカードを追加する方法(CONCAT関数の活用)
MySQLでSELECT文にワイルドカードを追加するには?MySQLで部分一致検索を行いたい場合、CONCAT()関数を使ってLIKE句にワイルドカード(%)を動的に追加する方法が便利です。値の前後に「%」を連結することで、文字列の一部分だけでも検索できるようになります。基本構文ワイルドカードを追加して検索する場合、基本的な構文は以下の通りです。SELECT * FROM テーブル名 WHERE カラム名 LIKE CONCAT(%, 検索値, %);この書き方により、指定した値がカラム内のどこに含まれていても(前方・中間・後方)ヒットするようになります。サンプルテーブルの作成まず、動作を確認
-
MySQLでカンマ区切りの値から特定の数値を含むレコードをすべて選択する方法
MySQLで特定の数値を含むレコードを抽出するには?カンマ区切りで保存された値の中に、特定の数値が含まれているレコードをすべて取得したい場合は、concat() 関数と LIKE 演算子を組み合わせて使用します。基本の構文は以下のとおりです。select *from yourTableName where concat(,, yourColumnName, ,) like %,yourValue,%;この方法のポイント単純に LIKE %4% とすると、「14」や「40」など意図しない数値までマッチしてしまう可能性があります。そこで、列の値の前後を concat() でカンマで囲むことで、「4
-
MySQLでTIMESTAMP型のカラムを持つテーブルを作成する方法
MySQLでは、TIMESTAMPキーワードを使用することで、日時を自動的に記録するカラムを持つテーブルを簡単に作成できます。TIMESTAMP型に「DEFAULT CURRENT_TIMESTAMP」を指定すると、レコード挿入時の現在日時が自動的に設定されるため、作成日時や更新日時の管理に非常に便利です。1. TIMESTAMPカラムを持つテーブルを作成するまず、CREATE TABLE文でTIMESTAMP型のカラムを含むテーブルを作成します。mysql> create table demo50 -> ( -> id int not null auto_increment
-
MySQLで年(西暦)の各桁の合計を計算する方法
MySQLでは、剰余演算子(%)とFLOOR関数を組み合わせることで、年(西暦)の各桁の合計を簡単に求めることができます。桁の合計とは?まず、年の末尾の桁(1の位)を取り出して加算し、これをすべての桁に対して繰り返します。例えば「2020年」の場合は次のようになります。2 + 0 + 2 + 0 = 4末尾の桁を取り出す基本クエリ数値から末尾の桁を取り出すには、10で割った余りを求めます。基本となるクエリは以下の通りです。SELECT FLOOR(@yourVariableName % 10);年の各桁の合計を求めるクエリ千の位・百の位・十の位・一の位それぞれを取り出して合計することで、年の桁
-
MySQLで条件に基づいて並べ替える方法:ORDER BY CASE WHENの使い方
MySQLで特定の条件に基づいてレコードを並べ替えたい場合は、ORDER BY句とCASE WHEN式を組み合わせて使用します。これにより、標準的な昇順・降順ではなく、独自のカスタム順序でデータを柔軟にソートできます。テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table demo51-> (-> id int not null auto_increment primary key,-> name varchar(20)-> );Query OK, 0 rows affected (1.08 sec)レコードの挿入次に、I
-
MySQLでテーブルを結合(JOIN)してデータベースから値を取得する方法
MySQLで複数のテーブルに分けて保存されているデータをまとめて取得したい場合は、JOIN(結合)を使用します。JOINとは、テーブル同士で共通となるキー(カラム)を基準に、複数のテーブルのレコードを関連付けて1つの結果セットとして取得できる仕組みです。本記事では、実際に2つのテーブルを作成し、JOINを使って値をフェッチする手順を具体的なSQL文とともに解説します。 1つ目のテーブル「demo52」を作成する まず、ユーザーのIDと名前を管理するテーブル「demo52」を作成します。「id」にはPRIMARY KEY(主キー)を設定します。 mysql> CREATE TABLE `
-
MySQLで条件を指定して日付の期間(間・前・後)を抽出する方法
MySQLでは、WHERE句にAND条件とOR条件を組み合わせることで、「ある日付より前」かつ「別のある日付より後、またはNULL」といった複雑な条件付きの日付抽出が可能になります。退職日(relieving_date)が未設定のレコードも含めて抽出したい場合などに特に便利です。 基本の構文 条件付きで日付を選択する場合の基本的な構文は以下の通りです。 SELECT * FROM テーブル名 WHERE カラム名1 < 値1 AND (カラム名2 > 値2 OR カラム名2 IS NULL); この構文のポイントは、OR条件部分を括弧()で囲むことです。これにより、AND条件との優
-
MySQLで特定の値を持つ列の数をカウントする方法【SUM関数の活用】
はじめにMySQLでは、SUM関数と加算演算子(+)・論理演算子(AND)を組み合わせることで、テーブル内の複数の列に含まれる特定の値(たとえば「1」)の合計個数や、すべての列がその値を持つ行数を簡単に集計できます。本記事では、サンプルテーブルを作成しながら、具体的なSQLクエリの書き方と実行結果をわかりやすく解説します。基本構文特定の値を持つ列の数をカウントする場合、以下のような構文を使用します。selectsum(yourColumnName1 + yourColumnName2 + yourColumnName3 ... N) as `anyAliasName1`,sum(yourCol
-
JavaからMySQLを操作する:WHERE句の条件値にPreparedStatementを正しく使う方法
JavaからMySQLデータベースに対して、WHERE句の条件に変数の値を渡してクエリを実行したい場合、PreparedStatementを使用するのが最も安全かつ確実な方法です。SQLインジェクション対策にもなり、パフォーマンス面でもメリットがあります。基本的な構文は以下の通りです。String anyVariableName = select yourColumnName from yourTableName where name = ?; PreparedStatement ps = (PreparedStatement) con.prepareStatement(yourVariabl
-
MySQLのCONCAT_WS()関数で文字列を連結しながら条件に一致する行を抽出する方法
MySQLのCONCAT_WS()関数とはMySQLでは、CONCAT_WS()関数を使用することで、複数のカラムや値を指定した区切り文字で連結できます。さらにWHERE句と組み合わせれば、条件に一致する行だけを抽出しながら、読みやすい形式の文字列として出力することも可能です。この記事では、実際にテーブルを作成し、CONCAT_WS()と条件指定を組み合わせたクエリの実行例を順番に解説します。サンプルテーブルの作成まず、ユーザー情報を格納するテーブル「demo38」を作成しましょう。mysql> create table demo38-> (-> user_id int,-&
-
【MySQL】テーブルの重複行を削除して1行だけ残す方法
MySQLのテーブルから重複行を削除して1行だけ残したい場合は、「一時テーブル(Temporary Table)」の仕組みを利用するのが簡単で確実な方法です。全体の流れは以下の4ステップになります。 DISTINCTを使って一時テーブルを作成 ― 元テーブルから重複を除外したデータを抽出して保存します。 元テーブルをTRUNCATEで空にする 一時テーブルのデータを元テーブルへ再挿入する 一時テーブルをDROPで削除する create table anytemporaryTableName as select distinct yourColumnName1, yourColumnName
-
MySQLでLIMIT句を使ってページネーション(次の行)を取得する方法
MySQLでページネーション(特定の範囲の行だけを取得すること)を実現したい場合は、LIMIT句を使用します。LIMIT句では「開始位置(オフセット)」と「取得する行数」を指定できるため、大量のデータの中から必要な部分だけを効率よく取り出せます。この記事では、実際にテーブルを作成し、データを挿入したうえで、次の行を取得するページネーションの具体的な手順を解説します。1. サンプルテーブルを作成するまずはデモ用のテーブルを作成しましょう。以下のSQLでは、自動採番されるidカラムと名前を格納するnameカラムを持つテーブル「demo40」を定義しています。mysql> create tab
-
MySQLのREGEXPでアルファベットを含むレコードのみを抽出する方法|数字のみのレコードを除外
MySQLのREGEXPで文字を含むレコードのみを表示する方法MySQLでは、文字列と数値が混在するカラムから、アルファベットを含むレコードだけを抽出し、数字のみのレコードを除外したいケースがあります。このような場合には、REGEXP演算子を使用すると簡単に実現できます。基本構文REGEXPを使った基本的な構文は以下の通りです。select yourColumnName from yourTableName where yourColumnName REGEXP [a-zA-Z];サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table d
-
MySQLのWHERE句で日付の差を計算して行を抽出する方法(TIMESTAMPDIFFの使い方)
MySQLでは、TIMESTAMPDIFF() 関数を使うことで、日時同士の差分を計算し、その結果に基づいてWHERE句で行を絞り込むことができます。ここでは、指定した日時との差が5分以内のレコードを抽出する例を紹介します。サンプルテーブルの作成まず、datetime型のカラムを持つテーブルを作成しましょう。mysql> create table demo42 -> ( -> start_date datetime -> ); Query OK, 0 rows affected (0.77 sec)テーブルへのデータ挿入次に、INSERT文を使っていくつかの日時データを
-
MySQLでテーブルを作成し、現在の日付をデフォルト値として設定する方法
MySQLでは、テーブル作成時にDEFAULT制約を追加することで、カラムにデフォルト値を設定できます。日付型のカラムに対して現在の日付(CURRENT_DATE)をデフォルト値として指定すれば、レコード挿入時に明示的に値を渡さなくても自動的に当日の日付が登録されます。基本構文テーブルを作成し、DEFAULT制約を使ってデフォルト値を設定する際の基本的な構文は以下の通りです。CREATE TABLE yourTableName ( yourColumnName1 dataType not null , yourColumnName2 dataType default anyValue, . .
-
MySQLで最高額の給与を取得する方法
```html MySQLで最高額の給与を取得するには? テーブルの中から最も高い給与(最高額の給料)を取得したい場合は、集計関数の MAX() を使用します。MAX() 関数は、指定したカラムの中で最大の値を返してくれる便利な関数です。 基本構文 select MAX(yourColumnName) AS anyAliasName from yourTableName; サンプルテーブルの作成 まず、実際に動作を確認するためのテーブルを作成しましょう。 mysql> create table demo44 -> ( -> employee_id int not null
-
MySQLで文字列の最初に出現する語のみを置換する方法
REGEXP_REPLACE()で最初の出現箇所だけを置換する文字列内に同じ単語が複数回登場する場合、そのうち最初の1回だけを別の単語に置き換えたいことがあります。MySQLではREGEXP_REPLACE()関数を使うことで、この要件を簡単に実現できます。なお、この関数はMySQL 8.0以降で利用可能です。例として、次のような文字列を考えてみましょう。This is my first MySQL query. This is the first tutorial. I am learning for the first time.この文字列には「first」という単語が3回出現しますが、最
-
MySQLで特定の値より大きいレコードだけを抽出する方法|WHERE句を使った条件指定の基本
MySQLで特定の値以下のレコードを除外するには? MySQLである値を基準に、それより小さいレコードを除外し、大きい値を持つレコードだけを取得したい場合は、WHERE句に比較演算子「>(より大きい)」を組み合わせるのが基本です。 基本構文 SELECT * FROM テーブル名 WHERE カラム名 > 値; この構文により、指定したカラムの値が条件値より大きい行のみが結果セットとして返されます。 実際に試してみよう:サンプルテーブルの作成 まずは動作を確認するためのテーブルを作成します。 mysql> create table demo27 -> ( ->
-
MySQLで文字列と数値を組み合わせて保存するには?適切なデータ型の選び方
MySQLで「John_123」のような文字列と数値が混在したデータを1つのカラムに保存したい場合、VARCHAR型を使用します。VARCHARは可変長の文字列型であり、英数字や記号を含む任意の文字列を格納できるため、ユーザーIDや商品コードなど、文字と数字が組み合わさったデータの保存に最適です。 VARCHAR型の基本構文 CREATE TABLE yourTableName ( yourColumnName1 VARCHAR(40) ); 括弧内の数値(40)は、そのカラムに保存できる最大文字数を表しています。保存するデータの長さに応じて、適切な値を指定してください。 テーブルを作成し
-
MySQLで複数の列を並べ替える方法|ORDER BYが期待どおりに動作しないときの解決策
MySQLでは、ORDER BY句に複数の列をカンマ区切りで指定することで、複数条件による並べ替えが可能です。各列ごとに昇順(ASC)や降順(DESC)を個別に設定できるため、柔軟なソート処理を実現できます。複数列で並べ替える基本構文以下が、複数の列を指定して並べ替える際の基本的な構文です。SELECT * FROM テーブル名 ORDER BY 列名1 DESC, 列名2, 列名3;この構文では、まず「列名1」を降順(DESC)で並べ替え、同じ値が存在する場合は次に「列名2」で昇順(デフォルト)、さらに「列名3」で並べ替えられます。並び順の優先度は、記述した列の左から右へと適用される点に注意