-
MySQLのREPEAT()関数を使って文字列を指定した回数だけ繰り返す方法
MySQLでは、REPEAT()関数を使用することで、文字列を指定した回数だけ簡単に繰り返し複製することができます。区切り線やパターン文字列を生成したい場合などに便利な関数です。構文REPEAT(Str, No.)パラメータの説明Str: 繰り返し複製したい元の文字列を指定します。No.: 文字列を繰り返す回数を示す数値を指定します。なお、いずれかの引数がNULLの場合、戻り値もNULLになります。また、繰り返し回数に0以下の値を指定した場合は、空文字列が返されます。使用例次の例では、文字列「#*」を5回繰り返しています。mysql> Select REPEAT(#*,5); +----
-
MySQLで値を代入していないユーザー変数を参照すると何が返る?NULLの挙動を解説
MySQLでは、明示的に値が代入されていないユーザー変数を参照した場合、NULLが返されます。つまり、そのような変数の値はNULLとして扱われるということです。ユーザー変数のNULLの挙動を確認する実際に、複数のユーザー変数を参照する次のSQLを実行して、その動作を見てみましょう。mysql> Select @X, @Y, @Z, @S, @G; +------+-------+----------+------+------+ | @X | @Y | @Z | @S | @G | +------+-------+----------+------+--
-
複数行を返すステートメントでMySQLユーザー変数に値を代入するとどうなる?仕組みと動作例を解説
ユーザー変数に値を代入する際、複数の行を返すステートメントを使用するとどうなるのでしょうか。結論から言うと、最終行(最後の行)の値だけがユーザー変数に保存されます。これは、MySQLのユーザー変数が単一の値しか保持できないためです。以下では、サンプルテーブル「Tender」のデータを使って、この動作を具体的に確認していきます。サンプルデータの確認まず、「Tender」テーブルには次のようなデータが格納されています。mysql> select * from Tender; +----+---------------+--------------+ | Sr | CompanyName
-
MySQLのSETステートメントでSELECT結果をユーザー変数に代入する方法
SETステートメントとサブクエリを組み合わせた変数への代入MySQLでは、SETステートメントを使ってSELECT文の実行結果をユーザー変数に代入することができます。その際のポイントは、SELECT文を括弧( )で囲んだサブクエリとして記述することです。また、この方法を使うためには、SELECT文が必ず単一の値(1行1列)を返す必要があるという条件があります。サンプルデータ:Tenderテーブルここでは、以下のような「Tender」テーブルのデータを使って具体的な使い方を確認していきます。mysql> select * from Tender; +----+---------------
-
MySQLユーザー変数の主な特性とは?基本の4つのポイントを解説
MySQLのユーザー変数(@変数)には、いくつかの重要な特性があります。ここでは、その代表的な4つの性質について、具体例を交えながら詳しく解説します。1. 大文字と小文字を区別しないMySQL 5以降では、ユーザー変数名は大文字と小文字が区別されません。なお、MySQL 5より前のバージョンでは区別されていたため、古いシステムを扱う際には注意が必要です。以下の例で確認してみましょう。例mysql> SET @A = MySQL; Query OK, 0 rows affected (0.00 sec) mysql> Select @A, @a; +-------+-------+
-
【MySQL】mysqldumpで作成したダンプファイルを復元する方法
mysqldumpコマンドで作成されたファイル(ダンプファイル)を復元する場合、既存のデータベースに復元するか、新しくデータベースを作成してからその中に復元するかのどちらかを選択できます。復元作業には SOURCE ステートメントを使用します。ここでは、具体的な例を使って手順を解説します。復元の手順と実行例この例では、あらかじめダンプしておいた student_info.sql ファイルを復元します。このテーブルはもともと「query」というデータベースに存在していたものですが、今回は新しく用意した「tutorials」というデータベースへ復元してみましょう。1. 復元先のデータベースを選択す
-
mysqldumpコマンドでMySQLデータベースの特定テーブルだけをバックアップする方法
MySQLでは、mysqldumpクライアントプログラムを使うことで、データベース全体だけでなく、特定のテーブルだけを選択してバックアップできます。バックアップ結果は「.sql」という拡張子を持つファイルに出力され、テーブルの作成用SQL文(CREATE TABLE)やデータ挿入用SQL文(INSERT)が含まれます。基本構文mysqldump -u ユーザー名 データベース名 テーブル名 > 出力ファイル名.sqlポイントは、データベース名の後ろにテーブル名を指定することです。テーブル名を省略すればデータベース全体が、複数のテーブル名をスペース区切りで並べればそれらのテーブルだけがバッ
-
MySQLのORD()関数とASCII()関数の類似点と相違点を解説
MySQLには、文字列の左端の文字を数値として取得するための関数が2つ用意されています。それがORD()関数とASCII()関数です。どちらも似たような動作をしますが、マルチバイト文字を扱う際に挙動が異なります。本記事では、それぞれの特徴と違いについて詳しく解説します。ORD()関数とはORD()関数は、文字列の左端の文字がマルチバイト文字(1バイト以上のバイト列)である場合、その文字コードを以下の計算式に基づいて返します。(1バイト目の値) + (2バイト目の値 × 256) + (3バイト目の値 × 256^2)つまり、複数バイトで構成される文字の場合、各バイトの値を重み付けして合計した数
-
MySQLのOCTET_LENGTH()関数とは?使い方とLENGTH()との関係を解説
MySQLのOCTET_LENGTH()関数は、文字列のバイト数(オクテット数)を数えるための関数です。基本的にはLENGTH()関数の同義語(シノニム)として動作するため、どちらを使用しても同じ結果が得られます。 OCTET_LENGTH()関数の構文 OCTET_LENGTH(Str) Str には、バイト数を調べたい対象の文字列を指定します。戻り値としてその文字列の長さ(バイト数)が返されます。 使用例 mysql> Select OCTET_LENGTH(My name is Ram) As Str_Length; +------------+ | Str_Length |
-
MySQLのOCTET_LENGTH()関数でデータ列に格納された文字数をカウントする方法
MySQLのOCTET_LENGTH()関数を使って、テーブルのデータ列に格納されている文字列の長さを調べるには、引数として対象のカラム名を渡します。SELECT句の中でこの関数を参照すると、各行の文字列長が結果セットに表示されます。さらに、WHERE句内で使用すれば比較値としても機能し、特定の長さを持つ行だけを抽出するといった条件絞り込みにも活用できます。以下では、サンプルテーブル「Student」のデータを使って、具体的な使い方を見ていきましょう。SELECT句でOCTET_LENGTH()を使用する例まず、Nameカラムの文字列長を一覧表示する基本的なクエリです。ASキーワードを使うこと
-
mysqldumpクライアントプログラムを使ってすべてのデータベースをバックアップする方法
MySQLでは、mysqldumpクライアントプログラムを使用することで、サーバー上のすべてのデータベースのバックアップを「.sql」という拡張子が付いた単一のファイルにまとめて取得できます。ダンプファイルには、データベースを再構築するために必要なCREATE文やINSERT文などが含まれています。すべてのデータベースをバックアップするコマンドすべてのデータベースを一括でバックアップするには、--all-databasesオプションを使用します。以下に具体的な例を示します。実行例この例では、mysqldumpクライアントプログラムを使って、すべてのデータベースのバックアップを「alldatab
-
mysqldumpでダンプしたデータベースを復元する方法
ダンプ済みデータベースを復元するにはmysqldumpでデータベース全体をバックアップした後、そのダンプファイルを使ってデータベースを復元したいケースはよくあります。復元には、mysqlクライアントコマンドとリダイレクト演算子を使用します。復元コマンドの例C:\mysql\bin>mysql -u root query < tutorials.sql上記のコマンドでは、tutorials.sqlというファイルに保存しておいた「tutorials」データベースのダンプデータを、「query」という名前の別のデータベースに復元しています。つまり、ダンプ元である「tutorials」デー
-
MySQLのLOCATE()関数はPOSITION()やINSTR()関数と何が違う?3つの文字列検索関数の違いを徹底解説
MySQLには、文字列の中から部分文字列が最初に出現する位置を返す関数として、LOCATE()、POSITION()、INSTR() の3つが用意されています。いずれも基本的な役割は同じですが、使い方や機能面でいくつか重要な違いがあります。 最大の違い:検索開始位置を指定できるのはLOCATE()だけ 3つの関数の中で最も大きな違いは、LOCATE()関数だけが第3引数で検索の開始位置を指定できるという点です。POSITION()やINSTR()にはこのような引数が存在しないため、常に文字列の先頭から検索が行われます。 そのため、「n番目以降の出現位置」を調べたい場合には、実質的にLOCAT
-
mysqldumpでダンプした複数のデータベースや全データベースを復元する方法
mysqldumpでダンプしたデータベースの復元方法mysqldumpコマンドを使って複数のデータベース、あるいはすべてのデータベースをダンプしておけば、あとから簡単に復元(リストア)することができます。ここでは、その具体的な手順を解説します。複数のデータベースを復元する場合たとえば、「tutorials」と「query1」という複数のデータベースを「tutorials_query1.sql」というファイルにダンプしている場合は、以下のコマンドで一括して復元できます。C:\mysql\bin> mysql -u root < tutorials_query1.sqlこのコマンドを実
-
MySQLサーバー間でテーブルやデータベースをコピーする方法|mysqldumpの使い方を解説
あるMySQLサーバーから別のMySQLサーバーへテーブルやデータベースをコピーしたい場合は、mysqldumpコマンドにデータベース名とテーブル名を指定して使用します。1. ダンプファイルを作成するまず、コピー元のホストで以下のコマンドを実行します。これにより、データベース全体がdump.txtファイルに出力されます。$ mysqldump -u root -p database_name table_name > dump.txt password *****特定のテーブル名を指定せずに実行すれば、データベース全体をまとめてコピーすることも可能です。2. ダンプファイルを別サーバーに
-
MySQLのTRIM()関数で第1引数(BOTH・LEADING・TRAILING)を省略した場合、どのような結果が返されるのか?
MySQLのTRIM()関数では、第1引数(BOTH、LEADING、TRAILINGのいずれか)を明示的に指定しなかった場合、デフォルト値としてBOTHが自動的に適用されます。つまり、文字列の先頭と末尾の両方から指定した文字が削除されることになります。以下の例でその動作を確認してみましょう。使用例mysql> SELECT TRIM(A FROM ABCDAEFGAA); +-----------------------------+ | TRIM(A FROM ABCDAEFGAA) | +-----------------------------+ | BCDAEFG
-
MySQLで文字列から部分文字列を抽出する方法|SUBSTRING関数の使い方を徹底解説
MySQLのSUBSTRING()関数とはMySQLでは、SUBSTRING()関数を使うことで、文字列から任意の部分文字列(サブストリング)を抽出できます。この関数は、指定した開始位置から、指定した長さの部分文字列を返すのが基本的な動作です。SUBSTRING()関数には、以下の4つの構文形式があります。SUBSTRING(str, pos)SUBSTRING(str FROM pos)SUBSTRING(str, pos, len)SUBSTRING(str FROM pos FOR len)各形式の違いと動作のポイント引数lenを指定しない形式では、文字列strのpos番目の位置から始ま
-
MySQLのTRIM()関数が使えないケースとは?主な制約と代替方法を解説
MySQL TRIM()関数の基本的な制約MySQLのTRIM()関数を使用するには、元の文字列から取り除きたい文字(列)をあらかじめ指定しておく必要があります。この仕様が、状況によっては大きな弱点となります。特に、各行ごとに削除したい内容が異なるデータを一括処理したい場合、TRIM()関数では対応できません。ここでは、TRIM()関数が使用できない代表的な2つのケースを、具体例とともに解説します。ケース1:各行で削除対象の文字が異なる場合まず、以下のような従業員テーブル(Employee)を例に考えてみましょう。mysql> Select * from Employee; +----
-
MySQLのMAKE_SET()関数とは?構文と使い方をわかりやすく解説
MySQLのMAKE_SET()関数は、10進数の数値をビット(2進数)に変換し、その数値の中で「1」が立っている(セットされている)すべてのビットに対応する文字列を、カンマ区切りのリスト(セット値)として返す関数です。最下位ビットには1番目の文字列、次に低いビットには2番目の文字列、というように順番に対応付けられます。構文MAKE_SET(bits, str1, str2,…)各引数の意味は以下のとおりです。bits:ビットを表す式です。10進数または2進数の値を指定できます。str1, str2…:各ビットに対応付ける文字列のリストです。使用例mysql> Select MAKE_S
-
MySQLでテーブルの列の値から部分文字列を抽出する方法(SUBSTRING・MID・SUBSTR)
MySQLでは、SUBSTRING()、MID()、SUBSTR() のいずれかの関数を使用することで、テーブルの列の値から部分文字列を抽出できます。これら3つの関数は機能的に同一であり、どれを使っても同じ結果が得られます。ポイントは、関数の第1引数に通常の文字列リテラルではなく列名を指定する点です。構文は次のようになります。SUBSTRING(列名, 開始位置, 抽出する文字数)第1引数:対象となる文字列または列名第2引数:抽出を開始する位置(先頭の文字は1番目として数えます)第3引数:抽出する文字数(省略した場合は開始位置から末尾まで)使用例ここでは、「Student」テーブルの「name