MySQL の一意のキーは、カラムに格納されるすべての値が一意であることを保証する単一のフィールドまたはフィールドの組み合わせです。これは、列に格納できないことを意味します 重複した値 。たとえば、「student_info」テーブル内の学生の電子メール アドレスと名簿番号、または「Employee」テーブル内の従業員の連絡先番号は一意である必要があります。
MySQL では、テーブル内で UNIQUE 制約を持つ複数のカラムを使用できます。それは受け入れることができます ヌル 値ですが、MySQL では列ごとに 1 つの null 値しか許可されませんでした。それは、 誠実さ 列または列のグループを使用して、テーブルにさまざまな値を格納します。
固有キーの必要性
- これは、2 つのレコードが同じ値を列に格納するのを防ぐのに役立ちます。
- 組織的な方法で情報にアクセスするために、データベースの整合性と信頼性を維持する個別の値のみが保存されます。
- また、テーブルの一意性を維持するために外部キーとも連携します。
- テーブルに null 値を含めることができます。
構文
次の構文は、一意のキーを作成するために使用されます。 MySQL 。
テーブルに一意のキー列を 1 つだけ作成する場合は、次のような構文を使用します。
データ構造内の構造
CREATE TABLE table_name( col1 datatype, col2 datatype UNIQUE, ... );
テーブルに複数の一意のキー列を作成する場合は、次のような構文を使用します。
CREATE TABLE table_name( col1 col_definition, col2 col_definition, ... [CONSTRAINT constraint_name] UNIQUE(column_name(s)) );
一意制約の名前を指定していない場合、MySQL はこのカラムの名前を自動的に生成します。したがって、テーブルの作成時には制約名を使用することをお勧めします。
パラメータの説明
次の表でパラメータの詳細を説明します。
パラメータ名 | 説明 |
---|---|
テーブル名 | これはこれから作成するテーブルの名前です。 |
列1、列2 | テーブルに含まれる列の名前です。 |
制約名 | 一意のキーの名前です。 |
列名 | 一意のキーとなる列名です。 |
一意のキーの例
次の例は、MySQL で一意のキーがどのように使用されるかを説明します。
このステートメントはテーブルを作成します。 学生2 ' UNIQUE 制約付き:
CREATE TABLE Student2 ( Stud_ID int NOT NULL UNIQUE, Name varchar(45), Email varchar(45), Age int, City varchar(25) );
次に、以下にリストされている挿入クエリを実行して、その仕組みを理解します。
mysql> INSERT INTO Student2 (Stud_ID, Name, Email, Age, City) VALUES (1, 'Peter', '[email protected]', 22, 'Texas'), (2, 'Suzi', '[email protected]', 24, 'California'), (3, 'Joseph', '[email protected]', 23, 'Alaska'); mysql> INSERT INTO Student2 (Stud_ID, Name, Email, Age, City) VALUES (1, 'Stephen', '[email protected]', 22, 'Texas');
出力
以下の出力では、最初の INSERTクエリ は正しく実行されますが、2 番目のステートメントは失敗し、「キー Stud_ID のエントリ '1' が重複しています」というエラーが表示されます。
CTC 完全形式
一意のキーを定義したい場合は、 複数の列 、次のようにクエリを使用します。
CREATE TABLE Student3 ( Stud_ID int, Roll_No int, Name varchar(45) NOT NULL, Email varchar(45), Age int, City varchar(25), CONSTRAINT uc_rollno_email Unique(Roll_No, Email) );
出力では、一意のキー値に 2 つの列が含まれていることがわかります。 ロール番号 そして Eメール 。
これを確認するには、次のステートメントを実行します。
結合SQLから更新
mysql> SHOW INDEX FROM Student3;
ここでは、一意制約がテーブルに正常に追加されたことがわかります。
一意のキーを削除
ALTER TABLE ステートメントを使用すると、テーブルから一意のキーを削除することもできます。一意のキーを削除するには、次の構文を使用します。
ALTER TABLE table_name DROP INDEX constraint_name;
上記の構文では、 テーブル名 は変更するテーブルの名前です。 制約名 は、削除する一意のキーの名前です。
例
このステートメントにより、 uc_rollno_email テーブルからの制約を永続的に削除します。
mysql> ALTER TABLE Student3 DROP INDEX uc_rollno_email;
SHOW INDEX ステートメントを実行すると、これを実現できます。
ALTER TABLE ステートメントを使用した一意のキー
このステートメントにより、既存のテーブルに変更を加えることができます。既存のテーブルの列に一意のキーを追加したい場合があります。次に、このステートメントを使用して、その列の一意のキーを追加します。
tostringメソッドJava
構文
一意のキーを追加するための ALTER TABLE ステートメントの構文は次のとおりです。
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE(column_list);
例
このステートメントはテーブルを作成します。 学生3 ' テーブル定義に一意のキー列がありません。
CREATE TABLE Student3 ( Stud_ID int, Roll_No int, Name varchar(45) NOT NULL, Email varchar(45), Age int, City varchar(25) );
テーブルを作成した後、このテーブルに一意のキーを追加する場合は、次のように ALTER TABLE ステートメントを実行する必要があります。
mysql> ALTER TABLE Student3 ADD CONSTRAINT uc_rollno_email UNIQUE(Roll_No, Email);
両方のステートメントが正常に実行された出力を確認できます。
これを確認するには、次のステートメントを実行します。
mysql> SHOW INDEX FROM Student3;
ここでは、一意制約がテーブルに正常に追加されたことがわかります。
ネットワークとネットワークの種類