-
MySQLで長い小数を扱うには?DECIMAL(21,20)の使い方を解説
MySQLで小数点以下の桁数が多い数値(長い小数)を正確に保存したい場合は、DECIMAL(21,20)を使用します。DECIMAL型は固定小数点型であり、FLOATやDOUBLEと異なり丸め誤差が発生しないため、高精度な数値の保存に最適です。DECIMAL(21,20)とはDECIMAL(21,20)は「全体で21桁、うち小数点以下が20桁」という意味です。そのため整数部分は1桁しか表現できません。より多くの整数桁が必要な場合は、DECIMAL(25,20)のように定義を調整しましょう。テーブルの作成まず、以下のようにテーブルを作成します。mysql> create table Dem
-
MySQLでGROUP BYとHAVINGを使って重複行を検出する方法
MySQLでテーブル内の重複行を見つけるには、GROUP BY句とHAVING句を組み合わせるのが最も基本的かつ効果的な方法です。この記事では、サンプルテーブルを作成し、実際に重複データを検出する手順をわかりやすく解説します。1. サンプルテーブルの作成まず、出荷日(ShippingDate)と顧客の国名(CustomerCountryName)を持つテーブルを作成します。mysql> create table DemoTable1494-> (-> ShippingDate datetime,-> CustomerCountryName varchar(20)->
-
MySQLでタイムスタンプ値を使って今日と昨日の2日分のデータを取得する方法
はじめにこの記事では、bigint型として保存されたUNIXタイムスタンプ値を持つMySQLテーブルから、「今日」と「昨日」の2日分のデータを抽出する方法を解説します。unix_timestamp()関数とcurdate()関数、そしてINTERVAL句を組み合わせることで、日付計算を簡単に行うことができます。1. サンプルテーブルの作成まず、出荷日をタイムスタンプ値で格納するテーブルを作成します。mysql> create table DemoTable1495 -> ( -> Sh
-
MySQLで結果を日付ごとにグループ化し、重複値の件数を表示するクエリの書き方
はじめにMySQLでは、GROUP BY句とDATE()関数、COUNT()関数を組み合わせることで、日付単位でレコードをグループ化し、重複する値の件数を簡単に集計できます。ここでは、到着日時ごとに乗客コードを集計する例を通して、その具体的な方法を解説します。1. サンプルテーブルの作成まず、以下のSQLを実行してテーブルを作成します。mysql> create table DemoTable1496-> (-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,-> PassengerCode varchar(20),-> A
-
MySQLでレコード削除後にキーを並べ替える方法をわかりやすく解説
MySQLでレコード削除後にキーを並べ替えるには?MySQLのテーブルからレコードを削除すると、IDに欠番(ギャップ)が生じることがあります。この欠番を埋めてキーを連続した値に並べ替えたい場合は、UPDATE文に数値計算を組み合わせることで実現できます。レコードの削除にはDELETE文を使用します。ここでは、実際のサンプルコードを使いながら手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成します。mysql> create table DemoTable1476 -> ( -> Id int -> ); Que
-
単一のMySQLクエリで複数のテーブルからNOT NULL値をカウントする方法
MySQLでは、スカラーサブクエリを組み合わせることで、単一のクエリで複数のテーブルからNOT NULL値の件数を同時に取得できます。COUNT関数はNULL値を自動的に除外するため、この方法はNULLを含むカラムの有効な値の数を数えるのに非常に便利です。基本構文複数のテーブルから値をカウントする場合、基本的な構文は以下の通りです。Select ( select count(yourColumnName) from yourTableName1) as anyAliasName1, ( select count(yourColumnName) from your
-
auto_increment値を指定せずにMySQLテーブルへレコードを挿入する方法
auto_increment値なしでレコード挿入は可能か?はい、可能です。AUTO_INCREMENTが設定されたカラムは、INSERT時に値を明示的に指定しなくても、MySQLが自動的に連番を採番してくれるためです。この記事では、実際にテーブルを作成し、auto_increment値を省略してレコードを挿入する手順を解説します。1. テーブルの作成まず、EmployeeIdカラムにAUTO_INCREMENTとPRIMARY KEYを設定したテーブルを作成します。mysql> create table DemoTable1479 -> ( -> Employ
-
MySQLクエリで「〜より大きくない」条件を記述する方法
MySQLで「〜より大きくない」を表すには?MySQLのクエリにおいて「〜より大きくない(not greater than)」という条件は、比較演算子の「〜以下(<=)」を使うことで簡単に表現できます。基本の構文は次のとおりです。select * from テーブル名 where カラム名<=値;サンプルテーブルを作成するまず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable1480 -> ( -> StudentName varchar(40), -> StudentMarks int
-
MySQLでCASE文を使って条件に応じてテーブルの行の値を置き換える方法
MySQLで条件を設定して行の値を置き換えたい場合は、CASE文を使用します。CASE文を使うことで、UPDATE文の中で各レコードの値に応じて異なる値を柔軟に設定できます。ここでは、実際にテーブルを作成し、データを挿入して、CASE文による置き換えの手順を順番に解説します。1. テーブルの作成まず、サンプル用のテーブルを作成します。mysql> create table DemoTable1481 -> ( -> PlayerScore int &n
-
MySQLでVARCHAR型の長い文字列を読みやすく表示するにはどうすればよいですか?
MySQLでは、VARCHAR型などのカラムに長い文字列を保存していると、通常のSELECT文では表形式の出力が横に広がり、非常に読みにくくなることがあります。このような場合、クエリの末尾に \G を付けるだけで、結果を縦方向に整形して見やすく表示できます。select * from yourTableName\Gサンプルテーブルの作成まず、動作を確認するためのテーブルを作成しましょう。mysql> create table DemoTable1482 -> ( -> Title varchar(255) -> ); Query OK, 0 ro
-
MySQLのSELECT INTOでユーザー定義変数に値を格納する方法
MySQLでは、SELECT ... INTO構文を使うことで、クエリの実行結果をユーザー定義変数(@変数名)に直接格納できます。本記事では、実際のコード例を通じて、その基本的な使い方を手順ごとにわかりやすく解説します。 1. サンプルテーブルを作成する まず、以下のCREATE TABLE文でテーブルを作成します。 mysql> create table DemoTable1483 -> ( -> Salary int ->
-
MySQLで同じテーブルにMAX(col)+1の値を挿入する方法
MySQLで同じテーブルにMAX(col)+1の値を挿入する方法MySQLでは、既存カラムの最大値に1を加えた値を、同じテーブルへ挿入したいケースがあります。例えば、連番を手動で管理しているテーブルに新しいレコードを追加する場合などが典型例です。この記事では、INSERT ... SELECT構文とMAX()関数を組み合わせて実現する方法を、実際のSQL例とともに解説します。1. サンプルテーブルの作成まず、デモ用のテーブルを作成しましょう。mysql> create table DemoTable1484 -> ( -> Id
-
MySQLでCOUNT()を使わずに複数のカウントを一度に実行する方法
はじめにMySQLでは、通常COUNT()関数を使ってレコード数を集計しますが、条件ごとに複数のカウントを行いたい場合は、SUM()とCASE文を組み合わせる方法が便利です。この記事では、実際のテーブル作成から集計クエリまで、手順を追って解説します。1. サンプルテーブルを作成するまず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable1485 -> ( -> StudentId int NOT NULL AUTO_INCREMENT PR
-
MySQLテーブルから新しく追加されたレコードを取得する方法
MySQLでテーブルに新しく追加されたレコードを取得するには、ORDER BY句とLIMIT句を組み合わせて使用します。AUTO_INCREMENTで採番される主キー(ID)を基準に降順(DESC)で並べ替え、LIMITで取得件数を指定することで、最新のレコードだけを効率的に取り出せます。 サンプルテーブルの作成 まず、CREATE TABLE文でテーブルを作成します。ここでは、自動採番される「StudentId」を主キーとする学生テーブルを用意しました。 mysql> create table DemoTable1486 -> ( -> StudentId
-
MySQLのSUBSTRING_INDEX()関数で文字列を分割する方法を徹底解説
MySQLで文字列を特定の区切り文字で分割したい場合、SUBSTRING_INDEX() 関数が非常に便利です。この記事では、サンプルテーブルの作成から、氏名を「名」と「姓」に分割するクエリの実行まで、具体的な手順をわかりやすく解説します。 SUBSTRING_INDEX()関数とは SUBSTRING_INDEX(str, delim, count) は、区切り文字 delim の count 回目の出現位置を基準に部分文字列を返す関数です。count が正の値の場合は左側から、負の値の場合は右側から数えます。この特性を組み合わせることで、柔軟に文字列を分割できます。 サンプルテーブルの作成
-
【MySQL】単一のクエリで複数の値を高速に挿入する最速の方法
はじめに MySQLで大量のデータを登録したい場合、INSERT文を何度も繰り返し実行する書き方は避けるべきです。この記事では、単一のクエリで複数の値を高速に挿入する最適な方法を実例付きで解説します。 非推奨な書き方 以下のように、INSERT文を個別に何度も実行する方法は、通信やパースのオーバーヘッドが大きく、処理速度が遅くなるため推奨されません。 insert into yourTableName values(yourValue1,yourValue2,...N); insert into yourTableName values(yourValue1,yourValue2,...N)
-
【MySQL】GROUP BYとHAVING句で同じテーブル内の共通する値を持つ行を抽出する方法
はじめにMySQLで、同じテーブル内に登録された複数の行の中から、特定の値が繰り返し登場するデータを抽出したいケースはよくあります。たとえば、「同じIDが何度も出現しているレコードを見つけたい」といった場合です。こうした処理には、GROUP BY句とHAVING句を組み合わせるのが効果的です。本記事では、実際のSQLコードと実行結果をもとに、その手順をわかりやすく解説します。1. サンプルテーブルを作成するまず、動作確認用のテーブルを作成しましょう。ここでは「Id」と「Name」の2つのカラムを持つシンプルなテーブルを用意します。mysql> create table DemoTable
-
【MySQL】SELECT文で重複・類似行を除外し、最大値を持つ行を取得する方法
はじめにデータベースを運用していると、内容が重複したレコードが登録されてしまうことがあります。こうしたケースでは、GROUP BY句とHAVING句を組み合わせることで、重複行をまとめつつ、各グループ内で最大値を持つ行だけを効率的に抽出できます。本記事では、MySQLで重複・類似コンテンツの行を除外し、SELECT文で最大値を持つ行を取得する手順を、具体的なサンプルコード付きで解説します。1. サンプルテーブルの作成まず、以下のCREATE TABLE文でテーブルを作成します。mysql> create table DemoTable1468  
-
MySQLテーブルからインデックスを削除する方法
MySQLのテーブルから不要になったインデックスを削除したい場合、ALTER TABLE文とDROP INDEX句を組み合わせて使用します。この記事では、実際のSQL実行例を交えながら、インデックスを削除する手順をわかりやすく解説します。 インデックスを削除する基本構文 MySQLテーブルからインデックスを削除する際の基本構文は以下の通りです。 ALTER TABLE テーブル名 DROP INDEX `インデックス名`; インデックス名にスペースが含まれる場合は、バッククォート(`)で囲む点に注意してください。 ステップ1:サンプルテーブルを作成する まずは動作確認用のテーブルを作成しま
-
MySQLでフィールドがNULLの場合に別のフィールドの値を取得する方法(COALESCE関数の使い方)
MySQLでは、COALESCE()関数を使うことで、指定したフィールドがNULLだった場合に、代わりに別のフィールドの値を取得できます。COALESCE()は、引数として渡された値の中から最初に見つかったNULL以外の値を返す関数です。1. サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable1470 -> ( -> FirstName varchar(20), -> Age int -> );Query OK, 0 rows affected (0.57 sec)2