-
MySQLで「TIMESTAMP DEFAULT CURRENT_TIMESTAMP」列を宣言した場合、値を挿入しないとどうなる?
TIMESTAMP型のデフォルト値CURRENT_TIMESTAMPの動作MySQLで timestamp default CURRENT_TIMESTAMP のように列を宣言した場合、INSERT文でその列に何も値を指定しなくても、自動的に現在の日時(現在のタイムスタンプ)が挿入されます。実際にテーブルを作成して動作を確認してみましょう。1. テーブルの作成まず、以下のようにテーブルを作成します。mysql> create table DemoTable ( ArrivalDate timestamp default CURRENT_TIMESTAMP ); Query OK,
-
MySQLで1つのクエリを使って最初のテーブルから2つ目のテーブルへ一部のレコードのみを挿入する方法
MySQLでは、INSERT INTO ... SELECT構文(ネストされた挿入)を利用することで、あるテーブルから別のテーブルへレコードをコピーできます。さらにWHERE句で条件を指定すれば、すべてではなく一部のレコードだけを挿入することも可能です。基本構文INSERT INTO テーブル名2(カラム名1, カラム名2, .....N)SELECT カラム名1, カラム名2, ....N FROM テーブル名1 WHERE 条件;それでは、実際に例を見ながら確認していきましょう。サンプルテーブルの作成まず、元となるテーブルを作成します。mysql> create table Demo
-
MySQLテーブルからランダムな行を表示する方法(ORDER BY RAND()の使い方)
MySQLのテーブルからランダムに1行だけ取得して表示したい場合には、RAND()関数をLIMIT句と組み合わせて使用します。今回は1行だけ取得したいので、「LIMIT 1」と指定します。まずは動作確認用のサンプルテーブルを作成してみましょう。サンプルテーブルの作成mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(50), Quote text ); Query OK, 0 rows affected (0.71 sec)次に、INSER
-
MySQLのWHERE句でSUM()関数の結果は使用できる?HAVING句を使った正しい書き方を解説
MySQLでは、SUM()などの集計関数の結果をWHERE句で直接使用することはできません。これは、WHERE句がグループ化の前に行単位で評価されるためです。代わりに、GROUP BYと組み合わせたHAVING句を使うことで、集計結果に基づいた絞り込みが可能になります。 ここからは、実際にサンプルテーブルを作成しながら手順を確認していきましょう。 1. サンプルテーブルの作成 まず、名前と価格を持つテーブルを作成します。 mysql> create table DemoTable ( Name varchar(50), Price int ); Query OK, 0
-
MySQLで特定の重複レコードを新しい値に一括置換する方法
MySQLでは、UPDATE文とREPLACE()関数を組み合わせることで、テーブル内に存在する特定の重複レコード(同じ値が複数含まれるデータ)を、まとめて新しい値に置き換えることができます。本記事では、実際にサンプルテーブルを作成しながら、その手順をわかりやすく解説します。 1. サンプルテーブルを作成する まず、以下のようにテーブルを作成します。 mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(50) ); Query OK, 0 rows
-
MySQLで99S・50Kなど数字と英字が組み合わされたレコードを取得するクエリ方法
「99S」や「50K」のように、数字の後に英字が続く形式のレコードをMySQLで取得したい場合、最も簡単な方法是REGEXP(正規表現)を使うことです。この記事では、実際にテーブルを作成し、目的の形式を持つレコードだけを抽出する手順をわかりやすく解説します。サンプルテーブルの作成まず、以下のCREATE TABLE文でテーブルを作成します。mysql> create table DemoTable ( Id varchar(50) ); Query OK, 0 rows affected (0.77 sec)テーブルへのレコード挿入続いて、
-
MySQLで同じIDの行を統合し、各列の最大値を表示するクエリの書き方
同じIDを持つ複数の行を1つの行にまとめて、各列ごとの最大値を取得したい場合には、集計関数MAX()とGROUP BY句を組み合わせて使用します。この記事では、実際にテーブルを作成しながら手順を詳しく解説していきます。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable ( Id int, Value1 int, Value2 int, Value3 int, Value4 int );
-
MySQLで2つのテーブルから共通するIDレコードを取得する方法
MySQLでは、サブクエリとIN句を組み合わせることで、2つのテーブルに共通して存在するIDのレコードを簡単に取得できます。この記事では、実際にテーブルを作成し、データを挿入して、一致するレコードを抽出するまでの手順を解説します。 1つ目のテーブルを作成する まず、以下のクエリで1つ目のテーブル「DemoTable1」を作成します。 mysql> create table DemoTable1 ( Id int ); Query OK, 0 rows affected (1.26 sec) DemoTable1にデータを挿入する INSERTコマンドを使って、いくつかのレコードを
-
MySQLで条件に基づいてレコードを並べ替える方法(ORDER BY IFの使い方)
はじめにMySQLでは、ORDER BY IF() を使うことで、特定の条件に基づいてレコードを並べ替えることができます。通常の ORDER BY 句はカラムの値に基づいてソートしますが、IF() 関数を組み合わせることで、より柔軟な並べ替えが可能になります。この記事では、実際にテーブルを作成し、条件付きのソートを行う具体的な手順を解説します。サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable ( Name varchar(50), Score int ); Query OK, 0 rows aff
-
MySQLのchar(1)型カラムにNULLを挿入する方法をわかりやすく解説
MySQLのchar(1)型カラムにNULLを挿入するには MySQLでは、char(1)型のカラムにNULLを挿入したい場合、そのカラムを「NULL許容」として定義しておくことが重要です。カラム定義にNULLを明示的に指定しておけば、INSERT文を使ってNULLをそのまま格納できます。 また、sql_modeを「STRICT_TRANS_TABLES」に設定しておくと、無効な値を挿入しようとした際にエラーが発生し、データの整合性が厳密に保たれます。デフォルト設定によっては、不正な値が警告とともに自動調整されてしまうこともあるため、意図しないデータの登録を防ぎたい場合には厳密モードの活用がお
-
MySQLで現在日から14週間以内の日付レコードを抽出する期間クエリの書き方
現在の日付からさかのぼって14週間以内のレコードを取得したい場合は、BETWEEN句とDATE_SUB()関数を組み合わせると簡単に実現できます。この記事では、サンプルテーブルを使いながら具体的な手順を解説します。1. サンプルテーブルを作成するまず、日付を格納するカラムを持つテーブルを作成します。mysql> create table DemoTable ( ArrivalDate date ); Query OK, 0 rows affected (0.93 sec)2. テストデータを挿入するここでは、現在日が 2019-08-31 であるものとして話を進めます。INSER
-
MySQLでテーブルの特定の1列のみを条件に基づいて更新(インクリメント)する方法
はじめに MySQLでは、UPDATE文を使うことで、テーブルの特定の列だけを対象に値を更新できます。さらにWHERE句で条件を指定すれば、該当する行の数値を自動的にインクリメント(加算)することも可能です。本記事では、実際のサンプルコードを通して、その手順をわかりやすく解説します。 1. サンプルテーブルを作成する まず、「Name」と「Score」の2つの列を持つテーブルを作成します。 mysql> create table DemoTable ( Name varchar(50), Score int ); Query OK, 0 rows affected (1
-
MySQLで条件付きGROUP BYを使って重複データを集約・取得する方法
はじめにMySQLでは、GROUP BY句と集計関数(MAX()など)を組み合わせることで、条件付きのグループ化を行い、各グループから必要な値を効率的に取得できます。本記事では、学生名が重複しているデータから、各学生の最高得点を取り出す例を通して、その具体的な手順を解説します。 1. サンプルテーブルの作成まず、テーブルを作成します。mysql> create table DemoTable ( StudentName varchar(40), StudentMarks int ); Query OK, 0 rows affected (0.64 sec) 2. テストデ
-
特殊文字を含む特定の文字列を選択するためのMySQLクエリ
データベースの検索では、アポストロフィ()などの特殊文字が含まれる文字列を扱いたい場面があります。本記事では、REPLACE関数を活用して、特殊文字を含むレコードを柔軟に抽出するMySQLクエリの書き方を解説します。1. サンプルテーブルの作成まず、検索対象となるテーブルを作成します。mysql> create table DemoTable ( Title text ); Query OK, 0 rows affected (0.66 sec)2. テストデータの挿入次に、INSERT文を使ってアポストロフィを含むレコードと含まないレコードを挿入します。mysql> in
-
MySQLのCREATEステートメントにおけるKEYキーワードの使い方を解説
KEYキーワードとINDEXの関係 MySQLの公式ドキュメントには、以下のように記載されています。 KEYは通常、INDEXの同義語です。PRIMARY KEY属性は、カラム定義の中で単に「KEY」と記述することも可能です。これは他のデータベースシステムとの互換性を保つために実装されています。 つまり、MySQLでは KEY と INDEX はほぼ同じ意味で使うことができ、状況に応じて使い分けが可能です。以下、実際のコード例を見ていきましょう。 サンプルテーブルの作成 まず、テスト用のテーブルを作成します。Id カラムには PRIMARY KEY を設定し、自動採番(AUTO_INCREM
-
MySQLでIDが最も大きい行のみを表示する方法
テーブルの中から最も大きなIDを持つ行だけを取得したい場合、「ORDER BY Id DESC」で降順に並べ替えたうえで「LIMIT 1」を組み合わせることで実現できます。降順ソートの先頭、すなわちIDが最大のレコードを1件だけ取り出す仕組みです。サンプルテーブルの作成まずは動作確認用のテーブルを作成しましょう。mysql> create table DemoTable ( Id int, FirstName varchar(50) ); Query OK, 0 rows affected (
-
MySQLでBIGINT型の電話番号列から一意な電話番号の数を取得する方法
MySQLで電話番号の重複を除いた件数(一意な電話番号の数)を取得するには、COUNT()関数とDISTINCTキーワードを組み合わせます。COUNT()はレコード数を数えるための関数であり、DISTINCTを併用することで、重複を排除した一意なレコードだけを対象にカウントできます。この記事では、実際にテーブルを作成し、データを挿入して、一意な電話番号の件数を取得するまでの手順を具体的なSQL例とともに解説します。1. サンプルテーブルを作成するまず、BIGINT型の電話番号列を持つテーブルを作成します。mysql> create table DemoTable ( PhoneN
-
MySQLの1つのクエリで学生ID・名前・年齢の3つの条件を組み合わせて学生レコードを取得する方法
MySQLでは、AND演算子を使うことで、1つのクエリ内に複数の条件を指定できます。ここでは、学生ID(StudentId)、名前(StudentName)、年齢(StudentAge)という3つの条件をすべて満たすレコードを取得する方法を、実際のコード例とともに解説します。 1. サンプルテーブルの作成 まず、デモ用のテーブルを作成します。 mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName var
-
MySQLでIdとFileIDを持つテーブルから各FileIDの出現回数を取得するクエリ
MySQLでは、GROUP BY句とCOUNT()関数を組み合わせることで、テーブル内の各FileIDエントリが何件ずつ存在するかを簡単に集計できます。ここでは、IdとFileIDの2つのカラムを持つテーブルを例に、その手順を解説します。 1. サンプルテーブルの作成 まず、Id(自動採番の主キー)とFileIDを持つテーブルを作成します。 mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, FileID int ) AUTO_INCREMENT=100; Query O
-
MySQLのAUTO_INCREMENTは1から始まる?開始値を変更する方法を実例付きで解説
MySQLのAUTO_INCREMENT(自動インクリメント)は、レコードが挿入されるたびに一意の番号を自動的に割り当てる便利な機能です。デフォルトでは1から始まりますが、ALTER文で開始値を変更したり、テーブル作成時に初期値を指定したりすることも可能です。 本記事では、実際のSQL実行例を交えながら、AUTO_INCREMENTの基本的な動作と、任意の番号から採番を開始する方法を詳しく解説します。 テーブルの作成 まず、AUTO_INCREMENT列を持つテーブルを作成します。 mysql> create table DemoTable ( UniqueNumber int