-
MySQLのCREATE TABLEクエリでCHAR_LENGTH()を使う方法
テーブル作成時にCHAR_LENGTH()を使用する MySQLでは、テーブル作成時にCHAR_LENGTH(カラム名)を使用することで、指定したカラムの文字数を自動的に計算して保存する「生成カラム(Generated Column)」を定義できます。これにより、データ挿入のたびに手動で文字数を数える必要がなくなります。 それでは、実際の例を見ながらテーブルを作成してみましょう。 mysql> create table DemoTable ( Id int NOT NULL AUTO_INCR
-
MySQLで1つまたは複数の列に基づいて重複行をすべて選択する方法
MySQLで特定の列に基づく重複行をすべて抽出したい場合、サブクエリとHAVING句を組み合わせることで実現できます。この記事では、実際にテーブルを作成し、データを挿入しながら、重複行を検出するクエリの書き方を具体的に解説します。 サンプルテーブルの作成 まず、CREATE TABLE文を使ってデモ用のテーブルを作成しましょう。 mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentFirstName varchar(20), S
-
MySQLで一度にN行だけデータを取得する方法|LIMIT句の使い方を解説
MySQLで一度にN行のみフェッチする方法MySQLで大量のデータを扱う際、テーブル内のすべてのレコードを一括で取得するのではなく、一度に指定した行数(N行)だけを取得したいケースはよくあります。ページネーションやパフォーマンスの最適化などにおいて非常に便利な機能です。このような場合には、LIMIT 句を使用します。基本的な構文は以下のとおりです。SELECT * FROM テーブル名 LIMIT 開始位置, 行数;LIMIT の後にカンマ区切りで2つの値を指定できます。1つ目は取得開始位置(オフセット)、2つ目は取得する最大行数です。たとえば LIMIT 0, 10 と書けば、「先頭行から数
-
MySQLのエイリアスでASキーワードは省略できる?使い方を実例付きで解説
MySQLでは、カラムにエイリアス(別名)を付ける際、ASキーワードを明示的に書く方法とASを省略する方法の2通りがあります。どちらの書き方でも同じ結果が得られますが、この記事では実際のSQL文の例を通して、それぞれの使い方と実行結果を詳しく解説します。準備:サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, &nbs
-
MySQLテーブルでレコードの作成時刻を保存する方法
MySQLでレコードの作成時刻(登録日時)を自動的に保存したい場合は、DEFAULT CURRENT_TIMESTAMPを使用します。ただし、この設定は挿入(INSERT)時のみ機能する点に注意してください。レコードを更新しても値は変わりません。テーブルの作成まず、TIMESTAMP型のカラムにデフォルト値としてCURRENT_TIMESTAMPを設定したテーブルを作成しましょう。mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Arrivaltime TIMES
-
MySQLで特定のリストから乱数を選択する方法
MySQLで特定のリストから乱数を選択する方法 MySQLでは、ELT()関数とRAND()関数を組み合わせることで、あらかじめ用意した特定の値のリストからランダムに1つの値を選択できます。 基本的な仕組み RAND()は0以上1未満の乱数を返します。これに10を掛け、FLOOR()で小数点以下を切り捨て、さらに1を加えることで「1〜10」の整数を生成できます。この数値をELT()関数のインデックスとして渡すことで、リスト内の対応する位置にある値が返される仕組みです。 実行例 以下のクエリでは、100から1000までの10個の値の中からランダムに1つを選択しています。 mysql>
-
MySQLのDROP TABLEはテーブルを完全に削除する?構造だけ残すTRUNCATEとの違いを徹底解説
MySQLのDROP TABLEとTRUNCATE TABLEの違いとは MySQLにおけるDROP TABLEコマンドは、テーブルを完全に削除します。テーブル内のすべてのデータに加え、テーブル自体の構造(定義)も削除されるため、実行後はテーブルが存在しない状態になります。 一方、TRUNCATE TABLEコマンドを使用すると、データはすべて削除されますが、テーブルの構造は保持されます。つまり、空のテーブルが再作成されたような状態になります。 この記事では、それぞれのコマンドの動作を実際のSQL例を交えて詳しく確認していきます。 DROP TABLEの動作を確認してみよう まずは、動作確認
-
MySQLで文字列から完全一致の単語を検索するクエリの書き方
MySQLで文字列から特定の単語を完全一致で検索したい場合、REGEXP演算子と正規表現パターンを組み合わせるのが効果的です。以下の構文を使用します。select * from テーブル名 where カラム名 regexp (^|[[:space:]])検索したい単語([[:space:]]|$);この正規表現パターンは、検索対象の単語の直前と直後が、それぞれ「文字列の先頭(^)」「空白([[:space:]])」「文字列の末尾($)」のいずれかである場合にのみマッチします。そのため、「Java」で検索した際に「JavaScript」までヒットしてしまうといった、部分一致による誤検出を防ぐこ
-
MySQLでテーブル内の2つの列を乗算した結果を合計して取得する方法
MySQLでは、集計関数 SUM() を使うことで、2つの列を掛け合わせた結果(積)を合計し、1つの値として取得できます。例えば「数量 × 単価 = 売上金額」のように、行ごとの計算結果を商品ごとに集計したい場合に非常に便利です。 準備:サンプルテーブルを作成する まず、動作確認用のテーブルを作成しましょう。 mysql> create table DemoTable ( CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY, CustomerProductName varchar(100), Custome
-
MySQLで特定の行を先頭に表示する方法(ORDER BY活用術)
MySQLでは、ORDER BY句を工夫して使うことで、任意の行を結果セットの先頭に表示できます。この記事では、特定の値を持つ行を最優先で取得し、残りの行を降順に並べる方法を、実際のSQL文と実行例を交えてわかりやすく解説します。 サンプルテーブルの作成 まず、デモ用のテーブルを作成します。 mysql> create table DemoTable ( Value int ); Query OK, 0 rows affected (0.20 sec) テストデータの挿入 次に、INSERTコマンドを使っていくつかのレコードを挿入します。 mysql>
-
MySQLで1つのクエリ内、LIKE検索の前に複数の列を連結する方法
CONCAT()関数で列を連結してLIKE検索を実行するMySQLでは、CONCAT()関数を使用することで、複数の列を1つの文字列として連結し、その結果に対してLIKE演算子による部分一致検索を行えます。ここでは、テーブル作成から実際の検索クエリまで、具体的な手順をサンプルコードとともに解説します。サンプルテーブルの作成まず、検索対象となるテーブルを作成しましょう。mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Value1 varchar(10),
-
MySQLのSOUNDEX()関数を使って発音が似た文字列を検索する方法
SOUNDEX()関数とはMySQLのSOUNDEX()関数は、文字列からサウンドex(Soundex)コードと呼ばれる音声表現の文字列を返します。Soundexは、英語の発音の類似性に基づいて文字列をインデックス化するアルゴリズムで、発音がほぼ同じ2つの文字列は、同一のSoundexコードを持つという特徴があります。この特性を活かすことで、スペルは異なるが発音が似ている名前や単語を効率的に検索できます。SOUNDEX()を使用したクエリの基本構文MySQLでSOUNDEX()を使って検索するには、以下のような構文を使用します。SELECT * FROM テーブル名 WHERE SOUNDEX
-
MySQLでブール値(BOOLEAN)を更新する方法を解説
MySQLでブール値を更新するには? MySQLでは、SET句を使うことでブール値(BOOLEAN型)のカラムを簡単に更新できます。MySQLではBOOLEANは実質的にTINYINT(1)として扱われるため、true / false のほか、1 / 0 や否定演算子 ! を使った反転も可能です。 ここでは、サンプルテーブルを作成し、実際にブール値を更新する手順を順番に見ていきましょう。 ステップ1:テーブルを作成する まず、isMarried というブール値カラムを持つテーブルを作成します。 mysql> create table DemoTable ( Id int
-
MySQLで負の数を格納するには?TINYINTデータ型の使い方と範囲を実例付きで解説
MySQLで負の数(マイナスの値)を格納したい場合は、TINYINTデータ型を使用できます。TINYINTは符号付きの場合、-128 から 127までの整数値を格納できる1バイトのコンパクトなデータ型です。TINYINTカラムを持つテーブルを作成する構文以下が基本的な構文です。CREATE TABLE yourTableName ( yourColumnName TINYINT, ... );実際にテーブルを作成してみようまず、TINYINT型のカラムを持つテーブルを作成します。mysql> create table DemoTable ( Number tiny
-
MySQLのシステム変数table_typeが機能しない理由とdefault_storage_engineへの移行方法
table_typeが機能しない理由MySQLのシステム変数「table_type」は、MySQL 5.5.3以降で非推奨(deprecated)となっているため、現在では機能しません。代わりに「default_storage_engine」を使用してください。構文は以下の通りです。SET default_storage_engine = 使用したいストレージエンジン名;ストレージエンジン名には、InnoDBやMyISAMなどを指定できます。ここでは、実際にエンジンタイプをMyISAMに設定してみましょう。mysql> SET default_storage_engine=MyISAM;
-
MySQLのCASE文で数学演算を実行する方法|ELSE句との組み合わせを解説
はじめにMySQLで条件に応じた数学演算を実行したい場合、IF関数だけでなくCASEステートメントを使う方法がおすすめです。CASE文では「THEN」で条件成立時の処理を、「ELSE」でそれ以外の場合の処理を柔軟に記述できます。この記事では、実際にテーブルを作成し、CASE文とELSE句を組み合わせて数学演算を行う手順を具体的に解説します。サンプルテーブルの作成まず、果物の名前と価格を格納するテーブルを作成します。mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-
【MySQL】FIND_IN_SET()でカンマ区切りの数値リストから特定の値を含む行を抽出する方法
カンマ区切りで格納された数字のリストの中に、特定の数値が含まれている行を検索したい場合には、MySQLの FIND_IN_SET() 関数を使用します。まずはサンプル用のテーブルを作成しましょう。mysql> create table DemoTable ( CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY, CustomerName varchar(20), CustomerAllProductPrice text ); Query OK, 0 rows affected (0.30 sec)次に、INS
-
MySQLのUPDATEクエリでCASEステートメントを使う方法【実行例つき】
UPDATEクエリの中でMySQLのCASEステートメントを使用するには、SET句の値としてCASE式を記述します。これにより、条件に応じて異なる値への一括更新が1つのクエリで実現できます。まずはサンプル用のテーブルを作成しましょう。 1. テーブルの作成 mysql> create table DemoTable ( UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY, UserScore int ); Query OK, 0 rows affected (0.29 sec) 2. レコードの挿入 insertコマン
-
【MySQL】特定のカラムの後に新しいカラムを追加してデフォルト値を設定する方法
MySQLで特定のカラムの後に新しいカラムを追加し、デフォルト値を定義する方法MySQLでは、ALTERコマンドを使うことで、既存のテーブルに新しいカラムを追加できます。特定のカラムの直後に新しいカラムを挿入し、さらにデフォルト値を設定するには、いくつかの手順に従う必要があります。この記事では、その具体的な手順をサンプルコードとともに分かりやすく解説します。1. サンプルテーブルを作成するまず、動作確認用のテーブル「DemoTable」を作成しましょう。mysql> create table DemoTable (
-
MySQLでテーブルに存在しないレコードのみを挿入する方法
MySQLで重複レコードを防ぎ、存在しないレコードだけを挿入するには?MySQLでは、「すでに存在するデータは登録せず、新しいレコードだけを挿入したい」というケースはよくあります。最もシンプルで確実な方法は、対象のカラムにUNIQUE INDEX(一意インデックス)を設定することです。一意インデックスが設定されたカラムに同じ値を挿入しようとすると、エラーが発生して挿入が拒否されます。それでは、実際の手順を見ていきましょう。1. テーブルを作成するまず、サンプル用のテーブルを作成します。mysql> create table DemoTable ( Id int NOT NUL