テーブル内の一意のデータを含むフィールドは、PRIMARY KEY(PK)と呼ばれます。つまり、PRIMARYKEYフィールドにはテーブル内の一意のデータが含まれている必要があります。
- PRIMARYKEYフィールドには各行の値が含まれます。
- PRIMARYKEYフィールドに空の文字列を含めることはできません。
- PRIMARYKEYデータが時間の経過とともに変更されることはありません。
- テーブルは1つのPRIMARYKEYのみで構成でき、テーブル内の単一または複数のフィールドで構成できます。テーブルの主キーとして複数の列が使用されている場合、それらはテーブルの複合キーと呼ばれます。
- 主キーの重複レコードはありません。
- テーブルでフィールドがPRIMARYKEYとして設定されている場合、そのフィールドに同じフィールドの値をテーブルに複数回含めることはできません。
たとえば、データベースにStudentテーブルがあります。このテーブルには、Student_Id、Student_Name、Phone_Number、およびEmailの4つのフィールドが含まれています。 Student_IdとEmailは、Studentテーブルの主キーです。主キーは1つだけですが、上記で説明したように、テーブルには1つまたは複数のフィールドを含めることができます。 1人の学生のデータがすでにテーブルに存在していますが、同じ学生が同じ電子メールIDを使用してデータを再度追加しています。学生が詳細を入力すると、ポップアップに「電子メールはすでに存在しました」というメッセージが表示されます。これは、Eメールがすでにテーブルに存在し、EメールフィールドがPRIMARY KEYであり、PRIMARYKEYに重複する値を含めることができないために表示されます。
SQLテーブルに主キーを作成
次のSQLクエリは、「Employee」テーブルの作成時にEmployee_IdフィールドにPRIMARYKEYを作成します。
CREATE TABLE Employee( Employee_Id int PRIMARY KEY, Employee_Name varchar(40) NOT NULL, Salary int NOT NULL, Department varchar(40), City varchar(40) );
上記のクエリでは、Employee_IdフィールドにPRIMARYKEYが定義されています。フィールド名とデータ型の後にキー名を記載できます。上記のクエリは、Employee_Idを主キーとして作成する1つの方法です。
PRIMARY KEYが正常に定義されているかどうかを確認するには、DESCコマンドに続けてEmployeeテーブル名を使用できます。
DESC従業員;
フィールド | タイプ | ヌル | キー | デフォルト | 追加 |
Employee_Id | Int(11) | いいえ | PRI | NULL | |
Employee_Name | Varchar(40) | いいえ | NULL | ||
給与 | Int(11) | いいえ | NULL | ||
部門 | Varchar(40) | はい | NULL | ||
市 | Varchar(40) | はい | NULL |
キーフィールドPRIは、Employee_Id行の前に表示されます。これは、Employee_IdがPRIMARYKEYとして正常に定義されていることを意味します。
表で主キーを使用する利点:
- テーブルからのデータへの高速アクセス。
- PRIMARYKEYフィールドに値を重複させることはできません。
主キーを作成する別の方法
CREATE TABLE Employee( Employee_Id int NOT NULL, Employee_Name varchar(40) NOT NULL, Salary int NOT NULL, Department varchar(40), City varchar(40), PRIMARY KEY(Employee_ID) );
上記と同じクエリで、PRIMARYKEYとして作成されるフィールド名の前にNOTNULLを指定する必要があり、最後に、上記のようにPRIMARYKEYキーワードとフィールド名を括弧内に記述する必要があります。クエリ。
テーブルがすでに存在する場合は、フィールドにPRIMARYKEY制約を作成します
次のクエリを使用します:
ALTER TABLE Employee ADD PRIMARY KEY(Employee_Id);
ALTERTABLEクエリを使用してPRIMARYKEYを定義すると、PRIMARYKEYフィールドはNOTNULL制約ですでに宣言されています。
複数の列のSQL主キー
次のSQLクエリは、「Student」テーブルが作成されるときに、複数の列にPRIMARYKEYを作成します。
CREATE TABLE Student( Student_Id int NOT NULL, Student_Name varchar(40), Department varchar(40), Phone_Number int(10), Email varchar(100) NOT NULL, PRIMARY KEY(Student_ID, Email));>
Student_IdとEmailの例では、主キーが1つだけ作成されています。
PRIMARY KEYが正常に定義されているかどうかを確認するには、DESCコマンドに続けてStudentテーブル名を使用できます。
DESC Student;
フィールド | タイプ | ヌル | キー | デフォルト | 追加 |
Student_Id | Int(11) | いいえ | PRI | NULL | |
Student_Name | Varchar(40) | はい | NULL | ||
部門 | Varchar(40) | はい | NULL | ||
Phone_Number | Int(10) | はい | NULL | ||
メール | Varchar(100) | いいえ | PRI | NULL |
Student_IdとEmailの行の前に表示されているように、キーフィールドPRIが示されています。これは、Student_IdとEmailがPRIMARYKEYとして正常に定義されていることを意味します。
次に、SHOW CREATE TABLEを実行し、続いてStudentテーブル名を実行します。これにより、Studentテーブルが説明されます。
SHOW CREATE TABLE Student;
上記の出力では、1つのPRIMARY KEYのみが作成されていることがわかります。括弧内には、テーブルの作成時にPRIMARYKEYとして作成されたフィールド名が示されています。
学生テーブルからPRIMARYKEY制約を削除するとします。次のクエリを使用して、PRIMARYKEY制約を削除します。
ALTER TABLE Student DROP PRIMARY KEY;
PRIMARY KEYが正常に削除されたかどうかを確認するには、DESCコマンドに続けてStudentテーブル名を使用します。
DESC Student;
フィールド | タイプ | ヌル | キー | デフォルト | 追加 |
Student_Id | Int(11) | いいえ | NULL | ||
Student_Name | Varchar(40) | はい | NULL | ||
部門 | Varchar(40) | はい | NULL | ||
Phone_Number | Int(10) | はい | NULL | ||
メール | Varchar(100) | いいえ | NULL |