-
MySQLで2列の主キーにAUTO_INCREMENTを設定する方法【MyISAM活用】
MySQLでは、通常AUTO_INCREMENTはテーブル内の1つの列にのみ設定できますが、MyISAMエンジンを使用すれば、複数列で構成された主キーの一部としてAUTO_INCREMENT列を定義できます。この場合、AUTO_INCREMENT列の番号は、主キーを構成するもう一方の列の値ごとに独立して採番されるのが特徴です。2列を主キーとするテーブルの作成まず、ENUM型の「Result」列、INT型でAUTO_INCREMENTを設定した「StudentId」列、「StudentName」列を持つテーブルを作成します。主キーは「Result」と「StudentId」の2列の組み合わせで構成
-
MySQLで複数の行(レコード)を一括挿入する方法
MySQLでは、INSERT文の「VALUES」句を活用することで、複数の行(レコード)を1つのクエリでまとめて挿入できます。各レコードの値は括弧( )で囲み、そのセット同士をカンマ(,)で区切って記述するのがポイントです。この方法を使えば、個別にINSERT文を実行するよりも通信回数が減り、処理速度やパフォーマンスの面でも大きなメリットがあります。複数行挿入の基本構文MySQLで複数の行を挿入する際の基本的な構文は以下の通りです。INSERT INTO テーブル名(カラム名1, カラム名2, ... カラム名N)VALUES(値1, 値2, ... 値N),(値1, 値2, ... 値N),
-
MySQLでONLY_FULL_GROUP_BYを無効にする方法
MySQLのONLY_FULL_GROUP_BYは、GROUP BY句で指定されていないカラムをSELECT文で参照することを禁止するSQLモードです。このモードを有効にすると、標準SQLに準拠した厳密なグループ化処理が強制されるため、予期しない集計結果を防ぐことができます。 現在のsql_modeを確認する まず、現在有効なSQLモードを確認してみましょう。 mysql> SELECT @@sql_mode; ONLY_FULL_GROUP_BYを有効にする方法 以下のクエリを実行すると、ONLY_FULL_GROUP_BYを有効にできます。 mysql> SET sq
-
MySQLのカラムをNULL許可に変更する方法【ALTER TABLEの使い方を解説】
MySQLでは、テーブル作成時にNOT NULL制約を設定したカラムでも、後からALTER TABLE文を使ってNULL値を許可するように変更できます。本記事では、実際のSQL例を使いながら、その手順をわかりやすく解説します。 1. NOT NULL制約付きテーブルを作成する まずは検証用として、NOT NULL制約を持つテーブルを作成しましょう。以下のクエリを実行します。 mysql> create table AllowNullDemo -> ( -> id int not null -> ); Query OK, 0 rows affecte
-
MySQLで主キー(プライマリーキー)を削除する方法
MySQLで主キー(プライマリーキー)を削除するには、DROP PRIMARY KEYコマンドを使用します。この記事では、実際にテーブルを作成しながら、主キーの削除手順をわかりやすく解説します。 1. 主キーを持つテーブルを作成する まず、カラムに主キーを設定したサンプルテーブルを作成します。以下のクエリを実行してください。 mysql> create table PrimaryKeyDemo -> ( -> id int not null, -> Primary key(id) -> ); Query OK, 0 rows affect
-
MySQLのZEROFILL(ゼロフィル)とは?利点と使い方を実例で解説
MySQLのZEROFILLは、カラム定義で指定した表示幅に満たない数値の先頭を「0」で埋めて表示する属性です。数値自体は変化せず、あくまで表示上の整形に使われる点が特徴です。この記事では、実際のテーブル作成からデータ挿入、表示結果までを通じて、ZEROFILLの役割と利点をわかりやすく解説します。 ZEROFILLを使ったテーブルを作成する まず、ZEROFILLを設定したカラムと、設定していないカラムの2つを持つテーブルを作成して、表示の違いを比較してみましょう。以下がテーブル作成のクエリです。 mysql> create table ZeroFillDemo ->
-
MySQLでインデックスの一覧を取得する方法【SHOW INDEX / INFORMATION_SCHEMA】
MySQLでは、テーブルに作成されたインデックスを簡単に確認できます。本記事では、「SHOW INDEX」コマンドを使った個別テーブルのインデックス確認方法と、INFORMATION_SCHEMA.STATISTICS テーブルを利用したデータベース全体のインデックス一覧取得方法を、実行例とあわせて解説します。 1. SHOW INDEX コマンドでインデックスを表示する まずは、特定テーブルのインデックス情報を表示する基本の方法です。MySQLでは SHOW コマンドを使用します。 インデックスを表示するクエリは以下のとおりです。 mysql> SHOW INDEX FROM ind
-
MySQLデータベースのテーブルサイズを取得・確認する方法
MySQLデータベース内の各テーブルのサイズを確認したい場合、システムが標準で提供している「information_schema.TABLES」を利用するのが最も手軽な方法です。このスキーマには、すべてのデータベースとテーブルに関するメタ情報(データ長、インデックス長など)が格納されており、SQLクエリだけで簡単に容量を調べることができます。全テーブルのサイズを一覧表示するSQL構文以下のクエリを実行すると、指定したデータベースに含まれるすべてのテーブルのサイズをMB単位で一覧取得できます。 SELECT TABLE_NAME AS `ALLTABLESNAME`, ROUND((DATA_L
-
JavaでMySQLデータベースのデータを削除する方法|DELETE文の使い方を徹底解説
MySQLデータベースからデータを削除するには、DELETEコマンドを使用します。まずは基本となる構文を確認しておきましょう。 DELETE文の基本構文 delete from テーブル名 where 条件; WHERE句で条件を指定すると、該当するレコードだけをピンポイントで削除できます。逆に条件を指定しなかった場合、テーブル内の全データが削除されてしまうため、実行前には必ず条件を確認してください。 本記事では、JavaプログラムからMySQLデータベースのデータを削除する具体的な手順を解説します。はじめにサンプル用のテーブルを作成し、テストデータを挿入していきましょう。 サンプルテーブルの
-
JavaでMySQLデータベースのレコードを更新する方法【UPDATE文の使い方を実例で解説】
MySQLデータベースのテーブルに格納されたデータを更新するには、UPDATEコマンドを使用します。本記事では、UPDATE文の基本構文から、実際にテーブルを作成し、Java(JDBC)経由でレコードを更新するまでの一連の手順を、サンプルコード付きで詳しく解説します。 UPDATE文の基本構文 MySQLで既存のデータを更新する場合、以下の構文を使用します。 update テーブル名 set カラム名1 = 値1, ....N where 条件; where句で条件を指定しないと、テーブル内のすべてのレコードが更新されてしまうため注意が必要です。 ステップ1:テーブルの作成 まずは更新用のサン
-
MySQLでデータベース図(ER図)を自動生成する方法【MySQL Workbench活用ガイド】
MySQLでデータベース図(ER図)を自動生成したい場合は、公式GUIツールのMySQL Workbenchを利用するのが最も簡単です。Workbenchには「リバースエンジニアリング(Reverse Engineer)」機能が標準で搭載されており、既存のデータベースから自動的にER図を作成できます。 手順1:「Database」メニューを開く まず、MySQL Workbenchを起動し、上部メニューの「Database」を選択します。メニュー内の以下の項目をクリックしてください。 Database → Reverse Engineer 「Database」タブを開いたところのスクリーンショ
-
MySQLでネストされたトランザクションを扱う方法:SAVEPOINTの使い方を解説
MySQLでは、SAVEPOINTステートメントを使用することで、擬似的に「ネストされたトランザクション」のような処理を実現できます。MySQLは厳密な意味でのネストされたトランザクションを直接サポートしていませんが、セーブポイントを活用することで、トランザクション内の特定の時点まで部分的にロールバックすることが可能になります。 SAVEPOINTによるネストされたトランザクションの基本手順 全体の流れは以下のとおりです。 テーブルを作成する トランザクションを開始する テーブルにレコードを挿入する SAVEPOINTステートメントで名前付きのセーブポイントを設定する ROLLBACK
-
MySQLのALTER TABLE文で複合主キーを追加する方法
MySQLで複合主キーを追加するには MySQLで既存のテーブルに複合主キー(コンポジットプライマリーキー)を追加したい場合は、ALTER TABLE文を使用します。複合主キーとは、2つ以上のカラムを組み合わせて1つの主キーとして定義するもので、組み合わせ全体がテーブル内で一意になるように制約をかけられるのが特徴です。 ここでは、実際にサンプルテーブルを作成し、複合主キーを追加する手順を順番に解説していきます。 1. デモ用テーブルを作成する まずは練習用に、以下のクエリでテーブルを作成しましょう。 ); Query OK, 0 rows affected (0.56 sec) この時点
-
MySQLテーブルからUNIQUE制約(一意制約)を削除する方法
MySQLのUNIQUE制約とはUNIQUE制約(一意制約)とは、テーブルの特定カラムに重複した値を登録できないようにする制約です。まずは、UNIQUE制約を持つテーブルを作成して、その動作を確認してみましょう。UNIQUE制約付きテーブルの作成以下のクエリで、NameカラムにUNIQUE制約を設定したテーブルを作成します。 mysql> create table UniqueConstraintDemo -> ( -> Name varchar(200) unique -> ); Query OK, 0 rows affected (1.05 sec
-
MySQLの列をAUTO_INCREMENTに変更する方法
既存のテーブルに対して、特定の列にAUTO_INCREMENT(自動採番)を後から追加したいケースはよくあります。そのような場合は、ALTER TABLE文とMODIFY句を組み合わせることで簡単に実現できます。 デモ用テーブルの作成 まず、動作確認のためのサンプルテーブルを作成しましょう。ここでは「Id」と「Name」という2つの列を持つテーブルを定義します。 mysql> create table AddingAutoIncrement -> ( -> Id int, -> Name varchar(200), -> Primary
-
MySQLのBigInt(20)とInt(20)の違いとは?違いを徹底解説
MySQLにおけるINT型とBIGINT型の基本的な違い MySQLで使われるINT型とBIGINT型の最も大きな違いは、データを格納するために必要なバイト数です。 INT型:4バイト(32ビット)の符号付き整数。格納できる値は 232 通りです。 BIGINT型:8バイト(64ビット)の符号付き整数。格納できる値は 264 通りです。 具体的な値の範囲で言うと、以下のようになります。 INT型:-2,147,483,648 ~ 2,147,483,647 BIGINT型:-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 つま
-
MySQLで「SHOW PROCESSLIST」をカスタマイズする方法|INFORMATION_SCHEMA.PROCESSLISTの活用術
MySQLのプロセス一覧をカスタマイズ表示するには MySQLでは、通常のコマンド「SHOW PROCESSLIST」の代わりに、information_schema.processlistテーブルを利用することで、プロセス一覧を柔軟にカスタマイズできます。比較的新しいバージョンのMySQLでは、「SHOW PROCESSLIST」コマンドを「information_schema」経由で実行できるようになっています。 INFORMATION_SCHEMA.PROCESSLISTは、MySQL 5.1.7以降で追加された機能です。まずは、使用しているMySQLのバージョンを確認しておきましょう。
-
MySQLでNULLを0に置き換えて返す方法:IFNULL()関数の使い方
MySQLでNULLを0として取得するには MySQLでは、IFNULL()関数を使用することで、NULL値を0に置き換えて取得できます。IFNULL()は第1引数がNULLでない場合はそのまま値を返し、NULLの場合は第2引数で指定した代替値(ここでは0)を返す便利な関数です。 IFNULL()の基本構文 IFNULL(YOUREXPRESSION,0); 実際の動作を確認するために、サンプルテーブルを作成して試してみましょう。 1. テーブルの作成 まず、以下のクエリでテーブルを作成します。 mysql> create table NullDemoWithZero -&g
-
MySQLユーザーアカウントの一覧を取得する方法【SELECT文の使い方】
MySQLユーザーアカウントの一覧を取得する方法 MySQLに登録されているユーザーアカウントの一覧を確認したい場合は、システムデータベース「mysql」内の「user」テーブルに対してSELECT文を実行します。このテーブルには、サーバー上のすべてのユーザーアカウント情報が格納されています。 ユーザー名の一覧を表示するクエリ まず、ユーザー名だけを抽出するための基本的なクエリがこちらです。 SELECT User FROM mysql.user; 実行すると、以下のような結果が得られます。 +------------------+ | User | +----
-
MySQLのDESCRIBEコマンドとは?DESCとの違いと使い方を解説
MySQLのDESCRIBEコマンドとはMySQLにおけるDESCRIBEとDESCは、まったく同じ意味を持つコマンドです。DESCはDESCRIBEの省略形であり、テーブルに関する情報(カラム名やカラムに設定された制約など)を表示するために使用されます。DESCRIBEコマンドは、以下のコマンドと同等の働きをします。SHOW COLUMNS FROM テーブル名;DESCRIBEコマンドの実行例それでは、実際にDESCRIBEコマンドを使ってテーブルの情報を表示してみましょう。次のようなクエリを実行します。mysql> DESCRIBE Student;ここでは、「Student」とい