HOWTO · MySQL

MySQL テーブルから制約を削除する

この記事では、MySQL テーブルから制約を削除する方法を紹介します。

制約は、MySQL 列へのデータ入力を禁止する一連のルールまたは制限です。MySQL のテーブルには、ユーザーが制限を必要とするさまざまな属性または列があります。

適用されたバリアは、MySQL 列セット内のすべてのタイプのデータ値の許容を無効にし、列全体で一貫性を提供します。適用される制約セットの定義で許可されている値のみが有効になります。

MySQL で制約付きのテーブルを作成する

MySQL では、ユーザーはテーブルスキーマとともに列に制約を適用できます。これらの制約には、以下の 2つのタイプがあります。

  1. 列レベルの制約
  2. テーブルレベルの制約

制約付きのテーブルを作成するための構文:

Create table tablemname
 attributeName1 attributeType constraint,
 attributeName2 attributeType constraint,
 ...
 attributeNameN attributeType constraint,
 TableLevelConstraint(AttributeName)

上記のコードの構文は、それぞれにテーブルレベルと列レベルの制約を作成する方法を示しています。両方の背後にある考え方は、必要に応じて制約を追加する特権をユーザーに与えることです。

  1. 列レベルの制約non-nullunique などの制約のタイプは、属性名を定義するときに定義されます。これは、制約名が属性のデータが提供された後のものであることを意味します。
  2. テーブルレベルの制約:制約のタイプは、テーブル定義の最後で定義されます。これらの制約は、PrimaryKey``ForeignKey および Index 制約に似ています。

テーブルに対する実際のクエリの前のクエリのリスト:

create table studentPK ( id varchar(255) not null, firstName varchar(255), lastname varchar(255), age integer, primary key (id));

上記のコマンドは、idfirstNamelastNameage などの属性を持つテーブル studentPK を作成します。主キー制約は、テーブルの主キーまたは一意の識別子を作成するために MySQL で定義されたキーワードです。

構文は、引数のパラメーターを使用して、属性を主キーにします。

Describe studentPK;

別のクエリは、作成されるテーブルを記述することです。以下に示す画像は、studentPK テーブルのフィールドに入力される制約を示しています。

テーブル内の制約付きの実際の実行

MySQL テーブルから制約を削除する

MySQL で DROP 制約を実行するためのクエリ:

Alter table studentPK drop primary key;

上記の構文は、Alter キーワードを使用して studentPk の構文を変更します。制約はテーブルレベルにあるため、テーブルレベルでうまくドロップするのは簡単です。

Alter コマンドは、テーブルのスキーマを変更する場合に最適です。StudentPk テーブルのスキーマを変更するために、同じテーブルから主キーを削除します。

以下は、同じもののローカル実行イメージです。

StudentPk テーブルから主キー制約を削除します

同様に、同じキーが他のテーブルで使用される場合、別のテーブルの外部キーをドロップすることによってドロップされます。

外部キー制約を作成するためのクエリ:

create table studentDept ( deptid varchar(255) not null, deptName varchar(255), id varchar(255), foreign key(id) references studentPK (id));

上記のクエリは、別のリレーション studentDept テーブルに id として外部キーを作成します。外部キーは、キーワード外部キーを使用して形成されます。

キーワードとともに、2つのテーブルを依存させるために親テーブルをリンクするための references キーワードが必要です。references キーワードは、studentPk テーブルの id フィールドを studentDept テーブルの外部キーとしてバインドします。

以下に示す画像で出力を確認できます。

MySQL で外部キー制約を使用して新しいテーブルを作成する

外部キーが内部で作成されると、そのキーの新しいキー名が作成されます。テーブルを説明し、名前を確認するためのステートメントは次のとおりです。

SHOW CREATE TABLE studentDept;

以下は、MySQL のテーブル構造を確認するためのコンソール出力の図です。

MySQL テーブルと制約名を説明する

上の画像は、外部キーが studentdept_ibfk_1 という名前で作成されていることを示しています。これで、作成された名前の外部キーを簡単に削除できます。

Alter table studentDept drop foreign key studentdept_ibfk_1;

上記のクエリは、studentDept テーブルから外部キーを削除します。Alter コマンドは、変更がスキーマレベルで行われることを示します。

外部キーは studentDept テーブルから削除されます。describe コマンドを使用して再チェックできます。

外部キーをドロップする前に覚えておくべきポイント:

  1. 外部キーの名前は事前に必要です。テーブルから制約を削除するには、キーが必要です。

  2. キー名を知らずに drop コマンドを実行すると、以下に示すエラーが発生します。

    キー名なしで使用した場合の外部キー制約の削除エラー

  3. SHOW CREATE TABLE コマンドは必須です。