MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQL Workbenchの列フラグ(PK・NN・AIなど)の意味を徹底解説

MySQL Workbenchでは、テーブルの列(カラム)に対してさまざまな「列フラグ」を設定することで、データの整合性を保つことができます。テーブルデザイナーで各カラムのチェックボックスに表示されるこれらのフラグは、それぞれ以下のような意味を持っています。

  • PK - Primary Key(主キー)
  • NN - NOT NULL(NULL値不可)
  • BIN - Binary(バイナリ)
  • UN - Unsigned(符号なし)
  • UQ - Unique(一意制約)
  • ZF - Zero Filled(ゼロ埋め)
  • G - Generated Column(生成列)
  • AI - Auto Increment(自動採番)

それでは、各フラグについて詳しく見ていきましょう。

PK(Primary Key:主キー)

Pri­mary Keyの略です。このフラグにチェックを入れることで、その列をテーブルの主キーとして設定できます。主キーはレコードを一意に識別するためのもので、重複した値やNULL値を許容しません。

NN(NOT NULL:NULL値禁止)

NOT NULLの略です。このフラグを設定すると、その列には必ず値が挿入されるようになり、NULL値の登録が禁止されます。必須項目となるデータに適用することで、不完全なレコードの混入を防げます。

BIN(Binary:バイナリ)

Binaryの略です。このフラグを使用すると、列のデータをバイナリ文字列として扱うことができます。文字コードによる照合や変換の影響を受けず、厳密な比較を行いたい場合に役立ちます。

UN(Unsigned:符号なし)

Unsignedの略です。数値型の列に対してこのフラグを設定すると、0以上の正の数値のみを格納できます。負の値が必要ない場合、同じバイト数でもより大きな範囲の正数を表現できるというメリットがあります。

UQ(Unique:一意制約)

Uniqueの略です。このフラグを設定すると、その列には重複した値を挿入できなくなります。ユーザーIDやメールアドレスなど、一意性が求められるデータに適用するのが一般的です。

ZF(Zero Filled:ゼロ埋め)

Zero Filledの略です。例えば、int(3)として宣言された列に「21」という値を保存すると、ゼロ埋めによって結果は「021」と表示されます。桁数を揃えたい場合などに便利ですが、実際に保存されるのは元の数値である点に注意してください。

G(Generated Column:生成列)

Generated Columnの略です。生成列とは、他の列の値から自動的に計算・生成される特殊な列のことです。手動で値を挿入するのではなく、定義した式に基づいて値が決まります。

AI(Auto Increment:自動採番)

Auto Incrementの略です。このフラグを設定すると、新しい行が挿入されるたびに、その列の値が自動的に連番で増加していきます。主キーと組み合わせて使用されることが多く、ID管理の手間を大幅に削減できます。

以下は、MySQL Workbench上で確認できる列フラグのスクリーンショットです。

MySQL Workbenchの列フラグ(PK・NN・AIなど)の意味を徹底解説

  1. MySQLでテーブルのカラム名(列名)を取得する構文とは?

    MySQLでは、information_schema.columns テーブルを参照することで、指定したテーブルのカラム名(列名)を簡単に取得できます。データベースの構造を確認したい場合や、動的にカラム情報を取得したいアプリケーションを開発する際に非常に便利な方法です。カラム名を取得する基本構文テーブルのカラム名を取得するには、以下の構文を使用します。SELECT column_name FROM information_schema.columns WHERE table_schema = データベース名 AND table_name = テーブル名;table_schema にはデータベー

  2. MySQLでテーブルの値からランダムに2件のレコードを取得する方法

    MySQLでランダムにレコードを抽出するには、ORDER BY RAND()を使用します。さらに、取得する件数を2件に限定したい場合は、LIMIT 2を組み合わせることで実現できます。この記事では、実際にテーブルを作成し、ランダムに2つの値を取得する手順を具体的な例とともに解説します。サンプルテーブルの作成まず、質問文を格納するテーブルを作成しましょう。mysql> create table DemoTable1815 ( Question text ); Query OK, 0 rows affected (0.00 sec)テストデータの挿入次に、INSERT