<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                #### 13.4.4、外鍵約束,foreign key 外鍵主要是維護表之間的關系的,主要是為了保證參照完整性,如果表中的某個字段為外鍵字段,那么該字段的值必須來源于參照的表的主鍵,如:emp中的deptno值必須來源于dept表中的deptno字段值。 >[danger]注意:外鍵關聯有四種模型 第一種 一對一模型 ,A表的一條記錄對應B表中的一條記錄 有且只對應一條(t_student t_student_info) 怎么實現:在其中任意一張表定義主鍵,另外一張表定義外鍵 與之關聯 并且定義外鍵的這張表要滿足唯一約束,但是我們建議在t_student 中 添加主鍵 >[info]第二種 一對多 ,A表中的一條記錄對應B表中的多條記錄 (classes t_student) 怎么實現:通常我們在A表中定義一個主鍵,在B表中添加外鍵關聯A表的主鍵字段(表中的外鍵不添加為約束) >[danger] 第三種多對多,A表中一條記錄對應B表中的多條記錄同時,B表中的一條記錄也對應A表中的多條記錄(t_student t_subject) 怎么實現:我們要創建第三張關系表,表中只有兩個字段,其中一個字段作為外鍵指向A表,另一個外鍵指向B表 >[info] 第四種自關聯一對多,一般所有的樹形結構都可以用此方式來描述 怎么實現:在此表中添加一個字段做為外鍵關聯此表自己的主鍵 建立學生和班級表之間的連接 首先建立班級表t_classes ``` drop table if exists t_classes; create table t_classes( classes_id int(3), classes_name varchar(40), constraint pk_classes_id primary key(classes_id) ) ``` 在t_student中加入外鍵約束 ``` drop table if exists t_student; create table t_student( student_id int(10), student_name varchar(20), sex char(2), birthday date, email varchar(30), classes_id int(3), constraint student_id_pk primary key(student_id), constraint fk_classes_id foreign key(classes_id) references t_classes(classes_id) ) ``` 向t\_student中加入數據 ``` insert into t_student(student_id, student_name, sex, birthday, email, classes_id) values(1001, 'zhangsan', 'm', '1988-01-01', 'qqq@163.com', 10) ``` ![](https://img.kancloud.cn/be/ff/beff8f5acd1310d0a07af6e8f795f4ef_643x82.png) 出現錯誤,因為在班級表中不存在班級編號為10班級,外鍵約束起到了作用 存在外鍵的表就是子表,參照的表就是父表,所以存在一個父子關系,也就是主從關系,主表就是班級表,從表就是學生表![](https://img.kancloud.cn/70/ae/70aeaedd304c564a20db4f41d8fca950_651x44.png) 以上成功的插入了學生信息,當時classes\_id沒有值,這樣會影響參照完整性,所以我們建議將外鍵字段設置為非空 ``` drop table if exists t_student; create table t_student( student_id int(10), student_name varchar(20), sex char(2), birthday date, email varchar(30), classes_id int (3) not null, constraint student_id_pk primary key(student\_id), constraint fk_classes_id foreign key(classes_id) references t_classes(classes_id) ) insert into t_student(student_id, student_name, sex, birthday, email, cla sses_id) values(1001, 'zhangsan', 'm', '1988-01-01', 'qqq@163.com', null); ``` 再次插入班級編號為null的數據![](https://img.kancloud.cn/42/2d/422dd432b0abc74e8216c9e2426521cd_645x53.png) 添加數據到班級表,添加數據到學生表,刪除班級數據,將會出現如下錯誤: ``` insert into t_classes (classes_id,classes_name) values (10,'366'); insert into t_student( student_id, student_name, sex, birthday, email, classes_id ) values( 1001, 'zhangsan', 'm', '1988-01-01', 'qqq@163.com', 10 ) mysql> update t_classes set classes_id = 20 where classes_name = '366'; 因為子表(t_student)存在一個外鍵classes_id,它參照了父表(t_classes)中的主鍵,所以先刪除子表中的引用記錄,再修改父表中的數據。 我們也可以采取以下措施 級聯更新。 mysql> delete from t_classes where classes_id = 10; 因為子表(t_student)存在一個外鍵classes_id,它參照了父表(t_classes)中的主鍵,所以先刪除父表,那么將會影響子表的參照完整性,所以正確的做法是,先刪除子表中的數據,再刪除父表中的數據,采用drop table也不行,必須先drop子表,再drop父表 我們也可以采取以下措施 級聯刪除。 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看