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

SQLで外部キーを使用してテーブルを作成する方法

    問題:

    データベース内のテーブルの外部キーを作成したい。

    例:

    student idを参照する外部キーが含まれています テーブルの列city

    ソリューション1(新しいテーブル):

    CREATE TABLE student (
    id INT PRIMARY KEY,
    first_name VARCHAR(100) NOT NULL,
    last_name VARCHAR(100) NOT NULL,
    city_id INT FOREIGN KEY REFERENCES city(id)
    );
    

    ディスカッション:

    別のテーブルを参照する外部キー列を含む新しいテーブルを作成するには、キーワードFOREIGN KEY REFERENCESを使用します。 その列の定義の最後にあります。その後に、参照されるテーブルの名前と括弧で囲まれた参照される列の名前を続けます。

    この例では、テーブルstudent CREATE TABLEを使用する 句。列の名前をリストし、それぞれのデータ型を括弧で囲みます。列city_id はこのテーブルの外部キーであり、列idに格納されているIDの値を示します。 テーブル内cityFOREIGN KEY REFERENCESを記述します この列の定義の最後に、参照されているテーブルと列を続けます:city(id)

    1つのテーブルに複数の外部キーを作成できることに注意してください。

    ソリューション2(新しいテーブル):

    CREATE TABLE student (
    id INT PRIMARY KEY,
    first_name VARCHAR(100) NOT NULL,
    last_name VARCHAR(100) NOT NULL,
    city_id INT,
    FOREIGN KEY (city_id) REFERENCES city(id)
    );
    

    ディスカッション:

    テーブルの作成中に外部キーを定義する別の方法は、FOREIGN KEY REFERENCESを使用することです。 列定義の最後にある句。この場合、FOREIGN KEYの後 節では、外部キー列を指定します。次はREFERENCESです 参照されるテーブルと列の名前とともに句。

    以下に示すように、複数の列に外部キーを作成できます。

    ソリューション3(新しいテーブル):

    CREATE TABLE student (
    id INT PRIMARY KEY,
    first_name VARCHAR(100) NOT NULL,
    last_name VARCHAR(100) NOT NULL,
    score_id INT,
    subject_id INT,
          CONSTRAINT fk_student_score_subject_id 
          FOREIGN KEY (subject_id, score_id) REFERENCES score_subject(subject_id, score_id)
    );
    

    この例では、制約fk_student_score_subject_id score_idの2つの列で構成される外部キーです。 およびsubject_id 。これらの2つの外部キー列は、テーブルscore_subjectscore_id およびsubject_id

    別の例を次に示します。

    ソリューション4(新しいテーブル):

    CREATE TABLE student (
    id INT PRIMARY KEY,
    first_name VARCHAR(100) NOT NULL,
    last_name VARCHAR(100) NOT NULL,
    city_id INT,
          CONSTRAINT fk_student_city_id 
          FOREIGN KEY (city_id) REFERENCES city(id)
    );
    

    ディスカッション:

    このコードには、再びCONSTRAINTがあります。 この制約の名前を持つ句。読みやすく、理解しやすい名前を使用してください。この例では、fk_student_city_idという名前を使用します。 、関連するテーブルと列を示します。次に、FOREIGN KEYを記述します。 そして、外部キーとなる列の名前を(括弧内に)追加します。次に、REFERENCESがあります 句の後に参照されるテーブルと列の名前が続きます(ここでは、id

    ソリューション5(既存のテーブル):

    ALTER TABLE student
    ADD FOREIGN KEY (city_id) REFERENCES city(id);
    

    ディスカッション:

    既存のテーブルに新しい外部キーを追加することもできます。ここで、テーブルはALTER TABLEを使用して変更されます 句。テーブル名(この例では、student )はALTER TABLEの後に配置されます キーワード。次に、ADD FOREIGN KEY 句の後には、外部キーとして使用される列の名前が続きます。次に、REFERENCES clauseがあります。 参照されるテーブルの名前と括弧内の主キー列の名前。

    このコマンドを実行する前に、変更するテーブルが存在している必要があることに注意してください。

    ソリューション6(既存のテーブル、外部キー制約):

    ALTER TABLE student
          ADD CONSTRAINT fk_student_city_id 
          FOREIGN KEY (city_id) REFERENCES city(id)
    

    ディスカッション:

    既存のテーブルの制約として外部キー列に名前を付ける場合は、このようなクエリを使用します。ここで、外部キー制約の名前はfk_student_city_idです。 。制約名を指定しない場合、データベースはデフォルトの制約名を生成します(データベースによって異なります)。


    1. JavaScriptはMySQLと接続できますか?

    2. IS NOT NULL変数が設定されている場合、レコードのテストはTRUEを返しません

    3. SQLServerをOracleに接続する

    4. Oracle接続を開くと、接続オブジェクトがnullになります