sql >> データベース >  >> RDS >> Database

SQL主キー

    テーブル内の一意のデータを含むフィールドは、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として正常に定義されていることを意味します。

    表で主キーを使用する利点:

    1. テーブルからのデータへの高速アクセス。
    2. 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


    1. OracleODP.NetおよびEFCodeFirstと連携するようにDbContextを構成するにはどうすればよいですか。

    2. このPL/SQLの何が問題になっていますか?バインド変数*は宣言されていません

    3. PostgreSQLのフォールトトレランスの進化:同期コミット

    4. データの視覚化