-
MySQLのテーブルに新しい行(レコード)を挿入する方法
MySQLでは、INSERT INTOコマンドを使用することで、テーブルに新しい行(レコード)を簡単に挿入できます。 基本構文 INSERT INTO table_name values(value1,value2,…) 使用例 ここでは、「Emp_id」「Emp_name」「Emp_Sal」という3つのカラムを持つ「Employee」テーブルを例に説明します。次のようなクエリを実行すると、テーブルに新しい行を追加できます。 mysql> INSERT INTO Employee values(110,Aarav,50000); Query OK, 1 row aff
-
MySQLのLAST_INSERT_ID()関数とは?使い方と具体例をわかりやすく解説
MySQLのLAST_INSERT_ID()関数は、AUTO_INCREMENT属性が設定されたカラムにおいて、直近で自動生成された連番(シーケンス番号)を取得するための関数です。データを挿入した後に、その行に割り当てられたIDをすぐに知りたい場合に非常に便利です。LAST_INSERT_ID()の主な特徴AUTO_INCREMENTによって最後に生成された値を返します。戻り値は接続(コネクション)ごとに管理されるため、他のクライアントのINSERT操作の影響を受けません。1回のINSERT文で複数行を挿入した場合は、最初の行に割り当てられたIDが返されます。使用例ここでは、AUTO_INCR
-
複数行INSERT時にMySQLのLAST_INSERT_ID()関数はどのような値を返すのか?
MySQLのLAST_INSERT_ID()関数は、直近で自動生成された連番(AUTO_INCREMENT値)を返すことで知られています。しかし、複数行を一度に挿入した場合、この関数が返すのは最初に挿入された行に対して生成された連番である点に注意が必要です。 例 mysql> Insert into Student(Name) values(Ram),(Mohan),(Aryan); Query OK, 3 rows affected (0.03 sec) Records: 3 Duplicates: 0 Warnings: 0 上記のクエリは、複数行INSERT文を使ってStudent
-
MySQLで特定の文字のASCIIコード(番号)を取得するには?ASCII()関数の使い方
ASCII()関数とはMySQLの文字列関数 ASCII() を使うと、指定した文字のASCII数値コードを取得できます。構文ASCII(str)引数 str には、先頭文字のASCII値を取得したい文字列を指定します。ここで重要なポイントとして、ASCII() 関数が返すのは、引数として渡された文字列の最も左側の文字(最初の1文字)の番号コードです。文字列全体ではなく、あくまで先頭の1文字だけが評価される点に注意しましょう。使用例mysql> SELECT ASCII('A') AS '大文字AのASCII値'; +-------------------
-
UPDATE文のSET句でサブクエリが複数行を返すと、MySQLでは何が起こるのか?
この場合、MySQLはエラーメッセージを返します。その理由は、UPDATEステートメントのSET句内で新しい値を割り当てるためにサブクエリを使用する場合、そのサブクエリはWHERE句に一致する更新対象テーブルの各行に対して、必ず1行だけを返さなければならないというルールがあるためです。具体例まず、以下のような「info」テーブルを用意します。ここで注目すべきは、id = 5 の行が2つ存在している点です。mysql> insert into info(id, remarks) values(5,average); Query OK, 1 row affected (0.06 sec)
-
MySQLのVARCHARカラムの最大長はどれくらい?文字数制限と行サイズ上限を徹底解説
VARCHARデータ型は、1バイト文字およびマルチバイト文字の可変長文字データを格納するために使用される型です。構文は VARCHAR(n) という形式で、n は最大文字数を表し、テーブル作成時に必ず指定する必要があります。なお、MySQL 5.0.3より前のバージョンでは n の指定範囲は 0〜255 でしたが、MySQL 5.0.3以降では 0〜65,535 の範囲で指定できるように拡張されました。VARCHARに格納できる最大文字数の決まり方VARCHARに実際に格納できる最大文字数は、「行の最大サイズ」と「使用する文字セット」の2つの要素によって決まります。MySQLにおける行サイズの
-
MySQLでサポートされているすべての文字セットを確認するには?SHOW CHARACTER SETの使い方
MySQLでサポートされているすべての文字セットを確認するクエリ MySQLがサポートするすべての文字セットの一覧を取得するには、SHOW CHARACTER SETステートメントを使用します。このコマンドを実行すると、各文字セットの名前、説明、デフォルトの照合順序(collation)、そして1文字あたりの最大バイト数(Maxlen)が一覧形式で表示されます。 mysql> SHOW CHARACTER SET; 実行結果の例は以下のとおりです。 CharsetDescriptionDefault collationMaxlen big5Big5 繁体字中国語big5_chin
-
MySQLで結果セットから一意の行のみを取得するには?DISTINCTキーワードの使い方
MySQLでクエリを実行した際、テーブル内に完全に同じ内容の行が複数存在することがあります。こうした重複行を取り除き、一意(ユニーク)な行だけを結果セットとして取得したい場合は、SELECT文にDISTINCTキーワードを使用します。基本的な構文SELECT DISTINCT カラム名 FROM テーブル名;DISTINCTを指定すると、SELECTで選択されたすべてのカラムの値が完全に一致する行は1つにまとめられ、重複行が除外された結果が返されます。実例:重複データを含むテーブルまず、重複行を含むテーブル「names」の中身を確認してみましょう。mysql> Select * from
-
MySQLテーブルから特定の行を削除する方法【DELETE文の使い方】
MySQLのテーブルから行を削除したい場合、DELETE文とWHERE句を組み合わせて使用します。WHERE句で削除対象の行を特定することで、テーブル内の他のデータに影響を与えることなく、目的の1行だけを正確に削除できます。基本的な構文DELETE FROM テーブル名 WHERE 削除対象の行を特定する条件;実行例ここでは、以下のような「names」テーブルを例に説明します。まず、現在のテーブルの中身を確認してみましょう。mysql> Select * from names; +------+-----------+ | id | name | +------+-----
-
【MySQL】サーバー上のすべてのデータベースのデフォルト文字セットを確認する方法
information_schema.SCHEMATAを使った確認方法 サーバー上に存在するすべてのMySQLデータベースのデフォルト文字セットを一覧で確認したい場合は、information_schema.SCHEMATAテーブルに対して以下のクエリを実行します。このクエリを実行すると、データベース名とそれぞれに設定されたデフォルトの文字セットが一緒に返されます。 mysql> SELECT SCHEMA_NAME Database, default_character_set_name Charset FROM information_schema.SCHEMATA; +------
-
特定のMySQLデータベースのデフォルト文字セットを確認する方法
特定のMySQLデータベースに設定されているデフォルトの文字セット(キャラクタセット)を確認するには、information_schema.SCHEMATA テーブルに対してクエリを実行します。このテーブルには、サーバー上のすべてのスキーマ(データベース)に関する情報が格納されています。デフォルト文字セットを確認するクエリ以下のクエリを使用すると、指定したデータベースのデフォルト文字セットを取得できます。mysql> SELECT SCHEMA_NAME DatabaseName, default_character_set_name Charset FROM information_s
-
MySQLテーブルのカラムの文字セット(charset)を確認するSQLクエリの書き方
MySQLでは、テーブルの各カラムにどの文字セットが設定されているかを簡単に確認できます。ここでは、information_schema.columns を利用した確認方法と、実際の出力例を紹介します。 カラムの文字セットを確認するクエリ MySQLテーブルのカラムの文字セットを調べるには、次のようなクエリを実行します。 mysql> SELECT column_name AS Column, character_set_name AS Charset FROM information_schema.columns WHERE table_schema = db_name
-
MySQLテーブルから複数の行を削除する方法
MySQLのテーブルから複数の行(レコード)を一度に削除したい場合は、DELETEステートメントにWHERE句を組み合わせて使用します。WHERE句が削除対象となる複数の行を特定することで、条件に一致したすべての行をまとめて削除できます。基本構文DELETE FROM テーブル名 WHERE 条件;実行例まず、サンプルテーブル「names」の中身を確認しておきましょう。mysql> Select * from names; +------+-----------+ | id | name | +------+-----------+ | 1 | Rahul |
-
特定のMySQLデータベース内の全テーブルの文字セットを確認する方法
MySQLでは、INFORMATION_SCHEMA.Columns テーブルを参照することで、特定のデータベース内にあるすべてのテーブルの文字セットを簡単に確認できます。以下のクエリを実行してください。mysql> Select TABLE_NAME, CHARACTER_SET_NAME FROM INFORMATION_SCHEMA.Columns Where TABLE_SCHEMA = db_name;実行例たとえば、次のクエリを実行すると、「Alpha」という名前のデータベースに含まれるすべてのテーブルの文字セットが一覧で返されます。mysql> Select TABL
-
MySQLのUPDATEステートメントにおけるSET句の列の順序が重要な理由とは?結果セットに大きな違いが生じるのか解説
MySQLにおいて、UPDATEステートメントのSET句で列を記述する順序が重要なのは、式の中で使用されている列名の値が、その時点で最新の状態で評価されるためです。つまり、SET句内の列の順序を入れ替えるだけで、MySQLが返す結果セットに大きな違いが生じます。これは、MySQLがSET句の各式を左から右へ順番に処理するという仕様によるものです。先に更新された列の新しい値は、それ以降の式の中で参照されます。以下の具体例で挙動を確認してみましょう。検証用テーブルの準備この例では、「tender」というテーブルを使用します。まず、現在のテーブルの内容を確認します。mysql> Select
-
MySQLのNOW()とSYSDATE()の違いとは?実行時刻の挙動をわかりやすく解説
MySQLにおけるNOW()とSYSDATE()の基本的な違いMySQLには、現在の日付と時刻(タイムスタンプ)を取得するための関数として、NOW()とSYSDATE()の2つが用意されています。どちらも一見同じように見えますが、実際の出力結果はステートメントの実行タイミングによって大きく異なります。この違いを理解することは、正確な時刻処理を行う上で非常に重要です。NOW()の特徴:ステートメント開始時刻を返すNOW()関数は、そのステートメントが実行を開始した時点の時刻を返します。つまり、クエリの実行中に時間が経過しても、常に同じ値(一定の時刻)を返すのが特徴です。一方、SYSDATE()関
-
MySQLのUPDATE文でSET句に行の既存の値を使って新しい値を設定する方法
MySQLのUPDATEステートメントでは、WHERE句の条件に一致した行に対して、SET句の中でその行の既存の値を参照し、それを基に新しい値を設定することができます。これにより、現在の値を使った計算結果で列を更新できます。以下に具体例を示します。使用例まず、次のような「tender」テーブルが存在すると仮定します。mysql> Select * from tender; +-----------+---------+------+ | tender_id | company | rate | +-----------+---------+------+ | 200 | AB
-
MySQLはDATE型カラムに日付と時刻の値を格納できるか?評価方法を解説
ご存じのとおり、MySQLのDATEデータ型におけるデフォルトの形式は「YYYY-MM-DD」です。この形式には時刻(時間)の情報を格納する仕組みがありません。 しかし、DATEデータ型のカラムに対して、日付とともに時刻の値を格納しようとした場合でも、エラーにはなりません。MySQLは警告(Warning)を表示したうえで、そのカラムには日付の値のみを格納します。以下の例で具体的な動作を確認してみましょう。 実行例 mysql> Create table date_time_test(date DATE); Query OK, 0 rows affected (0.44 sec)
-
【MySQL】別のテーブルの値を使ってテーブルを更新する方法|UPDATE文とサブクエリの活用
MySQLにおいて、あるテーブルの値を別のテーブルに格納されている値で更新したい場合は、UPDATE文のSET句の中でサブクエリを式として記述します。この方法を使えば、参照先テーブルから取得した値をもとに、対象テーブルのカラムをまとめて更新することができます。 基本構文 基本的な構文は以下のとおりです。 UPDATE 対象テーブル SET 更新対象カラム = (SELECT 参照カラム FROM 参照テーブル WHERE 結合条件) WHERE 更新条件; 具体例:studentテーブルとinfoテーブルを使った更新 ここでは、「student」テーブルと「info」テーブルという2つ
-
ALLOW_INVALID_DATES SQLモードとは?無効な日付を保存する方法を解説
その名前が示すとおり、ALLOW_INVALID_DATES SQLモードを有効にすると、テーブルに無効な日付を保存できるようになります。通常、MySQLの厳格モード(STRICTモード)では「1993-11-31」のように実在しない日付を挿入しようとするとエラーになりますが、このモードを設定すれば受け入れられるようになります。以下の具体例で動作を確認してみましょう。使用例mysql> SET sql_mode = ALLOW_INVALID_DATES; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> Insert