MySQLの外部キー(テーブルとテーブルの間の関係)

外部キー 2つのテーブル間の関係を確立します

主な文法:外部キー(現在のテーブルに西洋の外部キーフィールドの概念を確立するために)参照は、テーブル名(ID)と関連しています
  • 3つのテーブルとテーブルの間の関係

    • 多くの

    • 多くの多くの

    • マンツーマン

  • テーブルとテーブルの間の関係を研究

    • すべてのデータは、欠点のテーブルに格納されている場合:

      • 1.構造は致命的> ----明確ではありません

      • スペースの無駄2. ---->致命的な

      • 3.拡張性が悪い---->欠点を無視することはできません

        • ファイルに保存されているすべてのPY Pythonコード、強い結合一緒に----> ----分離型>分割テーブルと同様

      • ウェンディは、上記の表を解決するために分割しました。

    • 今回は強力な関係を構築するために、上記の「外部キー」、2つのテーブルを必要とします。

  • テーブルと(多くの、いずれかの多くの多くの1つ)のテーブル間の関係を確認

    • 注:この時点で考えるように二つの位置に立って持って、関係を確立するために2つのテーブルから考慮されます

      • 一例として、employeeテーブルの位置を取る:複数の従業員が部署に対応できますか?答えは明白です:ことができます!

        従業員や部門:多くの

         

      • そして、それを考えてから、部門表を配置:複数の部門は、従業員に対応できますか?そうではありません。

        フォームテーブルに多くの部門の従業員

        概要:任意の方法多対テーブルの関係、雇用対多の外部キー関係が言いました。

コードに直接ませんナンセンス、

#2のテーブル作成
        あなたが最初の対応表は、関連テーブル確立する必要があります。1. 

    :#は関連していたテーブル
        DEP:
            表DEPを作成する(
                主キーAUTO_INCREMENT、int型上記のid上記
                dep_name VARCHAR(16)、
                VARCHAR(255)dep_desc 
            ); 

    #関連性テーブル:
        EMP:
            表EMP(作成
                主キーAUTO_INCREMENT int型ID、
                名前VARCHAR(16)、
                年齢int型、
                性別列挙型( '男性'、 '女性'、 'その他')デフォルトの'男性'、
                dep_id int型ないヌル、
                外部キーを(dep_id)参照DEP(ID)
            ); 
            
            
     #インサートデータ:
        - 1.データテーブル(DEP)に関連し、データ関係テーブルに挿入されなければならない(EMP)です。
        DEP番号:
            INSERT INTO DEP(dep_name、dep_desc)の値
            ( '外務省のNb_省'、 '国際大使部門')、
            (' Sb_教育部門は'、」プログラマ部門を作った!!!! ')、
            ('技術''技術限ら部門'); 

        #EMP:
            INSERT INTO EMP(名前、年齢、性別、dep_id)
            の値('タンク'17'男性'、1)、。 'ジェイソン'、70' MALE '2)、
            ('ショーン'50'男性'2)、
            ('エゴン'88'男性'2)、
            ('オーウェン'95'女性」、3); 
            
            
         #エラー、
            EMPへの挿入(名前、年齢、性別、
 
        #エラー
        更新SETがdep_id EMP WHERE ID = 100 = 2; エラー
        DEP更新セットID = 100 WHERE ID = 1; 
削除dep_idフィールドが関連付けDEPテーブルIDフィールドを変更するために、関連しています。
        EMPから削除WHERE ID = 1; 
        更新DEP SET ID = 100 WHERE ID = 1; 
削除:削除関連テーブルに記録されたテーブルに関連するレコードを削除
            -削除EMPテーブルdep_idレコード2 
            削除EMP dep_id 2 =から; 

            -削除DEPテーブル2のIDレコード
            ID = 2 DEPから削除します。   

カスケード更新やカスケード削除

	-更新カスケードに
        - ON DELETE CASCADEを
    -创建表
        #被关联表:
            DEP2:
                テーブルDEP2を作成します(
                    ID int型主キーAUTO_INCREMENT、
                    dep_nameのVARCHAR(16)、
                    dep_desc VARCHAR(255)
                ); 

        #关联表:
            EMP2:
                テーブルEMP2(作成
                    ID int型主キーのAUTO_INCREMENT、
                    名前のVARCHAR(16)、
                    年齢int型、
                    性別列挙型を( '男性'、 '女性'、 '他人')デフォルトの'男性'、
                    dep_id INT NOT NULL、 
                    外部キー(dep_id)参照のDEP2(ID)
                    ON UPDATE CASCADEを
                    ON削除カスケード
                ); 
                
         -挿入データ
        #のDEP:
            INSERT INTOのDEP2(dep_name、dep_desc)の値
            ( '外務省のNb_省'、 '国際大使部門')、
            (' Sb_教育部門'、」作られたプログラムメンバー部門!!!! ')、
            ('技術''技術限ら部門'); 

        #EMP:
            INSERT INTO EMP2(名前、年齢、性別、dep_id)
            の値('タンク'17'男性'、1。 )、 'ジェイソン'、70 '男性'、2)、 'ショーン'、50 '男性'、2)、 'エゴン'、88 '男性'、2)、 'オーウェン'、95 '女性'、3);

            #エラー、
            INTO EMP INSERT(名前、年齢、性別、dep_id)の値
            ( 'ケーキ'、100 'その他'、999); 


    -データの更新やデータを削除
        -更新レコード
            更新IDを= SET 200は= DEP2 IDである場合1; 

        -削除記録
            ID = 200 DEP2から削除します。

 

注:長いがあるとしてとしてMySQLノー多対多

多くの多く:

  我々はまた、二つのテーブルの位置を考えるように立たなければなりません。

 

-第三のテーブルを使用して、二つのテーブルのための「多くの外部キー関係に多くの」の設立。
        -ブック:
            表ブックを作成します(
                    ID int型主キーAUTO_INCREMENTを、
                    タイトルVARCHAR(20)で、
                    価格はint、。
                    book_content VARCHAR(255)
            ); 

        -著者:
            表の作成者(作成
                    ID int型主キーAUTO_INCREMENT、
                    名前VARCHAR(16)、
                    年齢はint 
            ); 


        - book2author:
            表の作成book2author(
                ID int型主キーAUTO_INCREMENT、 
                book_id int型、
                AUTHOR_ID int型、 
                外部キー(book_id)参考書籍(ID)
                ONアップデートカスケード
                ON削除カスケード、
                外部キー(AUTHOR_ID)参考文献の著者(ID)
                ONアップデートカスケード
                ON削除カスケード
            ); 

    -データを挿入する
        -ブック
        INSERT INTOブック(タイトル,.価格、book_content)の値
        (「ゴールドボトルMEI」、199は、「小さな物語かすんモーメントを伝える」)、
        (「エントリからPythonは呼吸する」、2000、「どのように一晩はげ学ぶ『)、
        (』トリソミー」、200'ギャングスター')は、宇宙のファンタジーの世界に続く
        ; 

        -著者
        INSERT INTOの作者(名前、年齢)の値
        ('エゴン」、68)、 
        ('ジェイソン」、88); 

        - book2author:
        book2authorへの挿入(book_id、AUTHOR_ID)の値
        (1 ,. 1)、
        (1、2)
        (2、2)、
        (3 ,. 1); 

        #エラー、挿入データ、book_idが存在しなければならないAUTHOR_ID 
        book2author挿入(book_id 、AUTHOR_ID)値(4,4); 

        #更新または削除
            #アップデート
                -アップデート予約SET価格= 6666 WHERE = 1上記ID上記; 
                -アップデート予約SETは、上述したID = 4 WHERE上記ID = 1; 
削除
                -削除ID = 4本から;

 

ワン:

両者間の1対1の関係は、二つのテーブルにデータテーブルの大量、分割され

	- USER_INFO:
              	前記ID上、名前、年齢、性別、趣味、id_card 

            -ユーザー:
                上記ID上、名前、年齢、detail_id(外部キー)

            -詳細:
                上記ID、性別、趣味、上記id_card 

            1つの外部キーのいずれかを確立するために、詳細テーブルをユーザに関係。
            外部キーは、より高い周波数側で構築する必要があります。

        -テーブルの作成
            #は、テーブルが関連付けられている
            顧客テーブルを作成する(
                ID主キーAUTO_INCREMENT、int型
                名VARCHAR(16)、
                メディアVARCHAR(32)
            ); 


            #アソシエーションテーブル
            表学生(作成電話チャー(11)、 
                主キーAUTO_INCREMENT int型IDを、
                addrはVARCHAR(255)、
                id_card CHAR(18)と、

                #外部キーがユニークに設定する必要があります
                UNIQUE、int型CUSTOMER_ID 
                外部キー(CUSTOMER_ID)参照のお客様(ID)
                ON UPDATE CASCADEを
                ON削除カスケード
            ); 

        -データ挿入するために
            、顧客への挿入を(名前、メディア)の値
            ( 'ホモシステイン'、 'Facebookの')、 'zsb1'、 'IG')、 'zsb2'、 'VK')、 'HB'、 '鼓動'); 


            INSERT INTO学生(ADDR 、電話、id_card、CUSTOMER_ID)の値
            ( '上海'、 '15214546711'、 '440888888888888888' 、1)、
            ( '北京'、'18、888888888' 、 '440777777777777777'、2);

            #エラー、一から一、一対一の関係必見へ
            学生への挿入(addrは、電話、id_card、CUSTOMER_ID)の値( '上海'、 '15214546711'、 '440888888888888888'、1);

  

  

  

 

 

 

おすすめ

転載: www.cnblogs.com/lvguchujiu/p/12031223.html