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

MySQLテーブルからUNIQUE制約を削除するにはどうすればよいですか?


MySQLテーブルからUNIQUE制約を削除するには、まず、テーブルのUNIQUE制約によって作成されたインデックスの名前を確認する必要があります。 SHOWINDEXステートメントがこの目的で使用されていることはわかっています。 ‘ key_name SHOW INDEXステートメントの結果セットの’には、インデックスの名前が含まれています。 DROP INDEXの助けを借りて ステートメントまたはALTERTABLE ステートメントでは、UNIQUE制約を削除できます。両方のステートメントの構文は次のとおりです-

構文

DROP INDEX index_name ON table_name;
OR
ALTER TABLE table_name DROP INDEX index_name;

列「empno」にUNIQUE制約があるテーブル「empl」があるとします。インデックス名は次のように確認できます-

mysql> Show Index from empl\G
*************************** 1. row ***************************
Table: empl
Non_unique: 0
Key_name: empno
Seq_in_index: 1
Column_name: empno
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
1 row in set (0.02 sec)

UNIQUE制約を削除するために、次のクエリを記述できます-

mysql> ALTER TABLE empl DROP INDEX empno;
Query OK, 0 rows affected (0.26 sec)
Records: 0 Duplicates: 0 Warnings: 0

以下のクエリの結果セットは、列「empno」にUNIQUE制約がないことを示しています-

mysql> describe empl;

+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| empno | int(11) | YES | | NULL | |
| F_name | varchar(20) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+

2 rows in set (0.04 sec)

emplからのSHOWINDEXを実行する場合でも クエリを実行すると、MySQLは次のように空のセットになります-

mysql> Show index from empl;
Empty set (0.00 sec)

UNIQUE制約は、次のようにDROPINDEXステートメントを使用して「empl」テーブルから削除することもできます-

mysql> DROP INDEX empno on empl;
Query OK, 0 rows affected (0.17 sec)
Records: 0 Duplicates: 0 Warnings: 0

  1. MySQLテーブルから一意性制約を削除するにはどうすればよいですか?

    これにはDROPINDEXを使用できます。構文は次のとおりです- alter table yourTablename drop index yourUniqueName; 上記の構文を理解するために、テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです- mysql> create table removeUniquenessConstraint    -> (    -> Id int,    -> Name varchar(100),    -> Age in

  2. MySQLデータベースの列から一意のレコードをカウントするにはどうすればよいですか?

    このためには、集計関数count(*)を使用して、GROUPBYにカウントしてグループ化します。まずテーブルを作成しましょう- mysql> create table DemoTable (    UserName varchar(100),    UserPostMessage text ); Query OK, 0 rows affected (0.54 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values('Chris',&