日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql之外键约束

發布時間:2025/3/20 数据库 10 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql之外键约束 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于數據的幾點說明:

A、約束保證數據的完整性和一致性

B、約束分為表級約束和列級約束,兩者之間的區別是約束針對字段的數目的多少來決定的;列級約束只針對一個數據列來約束,表級約束針對兩個或者兩個以上的數據建立的約束,列級約束既可以在列定義建立約束,也可以在列定義后聲明,而表級約束只能在列定義后聲明。列級約束使用較多,表級約束使用較少,而NOT NULL?和 DEFAULT這兩種約束只有列級約束。?

C、約束的類型:

? ? NOT NULL(非空約束)、PRIMARY KEY(主鍵約束)、UNIQUE KEY(唯一約束)、DEFAULT(默認約束)、FOREIGN KEY(外鍵約束)

關于外鍵約束是為了保證數據的完整性,一致性,實現一對一或者一對多的關系。

外鍵約束的要求如下:

1、父表和子表必須使用相同的存儲引擎,而且禁止使用臨時表

2、數據表的存儲引擎必須為InooDB

在my.ini的配置文件中,修改為如下配置

default-storage-engine=INNODB

3、外鍵列和參照列必須具有相似的數據類型;數字的長度或是否有符號位必須相同,而字符長度可以不同

在test數據庫創建數據表

root@localhost test>CREATE TABLE province(-> id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,-> pname VARCHAR(20)-> ); Query OK, 0 rows affected (0.09 sec)

刪除數據表如何實現呢?

DROP TABLE table_name

查看創建的數據表是否為InooDB類型

root@localhost test>show create table province;

root@localhosttest>create table user(-> id smallint unsigned primary key auto_increment,-> username varchar(10),-> pid smallint unsigned, 用來存儲省份的編號,作為參照表將參考父表rpovince中的 id 的字段,且數據類型要相似-> foreign key (pid) references province (id) pid是外鍵,參照 province 中的 id 字段-> ); Query OK, 0 rows affected (0.09 sec)

現在有外鍵的這張表成為子表即是 user?表,父表示所參照的表?即是 provicne?表,外鍵列為? pid ,參照列為?id?列,那么我們沒有為id?創建索引,但是因為我們指定了 id?為主鍵(外鍵約束),而主鍵在創建時會自動創建索引 ,進行查看一下:

root@localhost test>show index from province;

或者使用,顯示不同的方式

root@localhosttest>show index from province\G;

現在來查看子表的索引創建情況:

root@localhosttest>show index from user\G;

此外,可以查看子表的信息

root@localhost test>show create table user;


4、外鍵列和參照列必須創建索引,如果外鍵列不存在索引的話,mysql將自動創建索引。

所謂的外鍵列就是加了FOREIGN KEY的那一列


而外鍵約束的參照操作(即是在更新表的時候,子表是否進行相應的操作)包括:

1、CASCADE:從父表中刪除或者更新且自動刪除或者更新子表中匹配的行

2、SET NULL:從父表刪除或者更新行,并設置子表中的外鍵列為 NULL ,如果使用該選項,必須保證子表列沒有指定 NOT NULL

3、RESTRICT:拒絕對父表的刪除或者更新操作

4、NOT ACTION:標準的 SQL 關鍵字,在 MYSQL 中與 RESTRICT 相同

root@localhosttest>create table user1(-> id smallint unsigned primary key auto_increment,-> username varchar(10),-> pid smallint unsigned,-> foreign key (id) references province(id) on delete cascade 在刪除時進行一種什么的操作-> );

對表?user1?進行查看

root@localhost test>show create table user1;

即是在父表中刪除或者更新父表中的記錄時也同步刪除或者更新子表中相應的行,因此在兩張表中有相應的記錄。必須先在父表中插入記錄,然后再在子表中插入記錄,因為子表參照的事父表中的信息。

現在在父表中插入記錄,由于 provicne?表中只有兩個字段,分別是 id?和?省份名稱,由于 id?為自動編號,所以只需操作省份名稱

root@localhosttest>insert? province(pname) values ('A'); root@localhosttest>insert? province(pname) values ('B'); root@localhosttest>insert? province(pname) values ('C');

進行查看:

root@localhosttest>SELECT * FROM province;

現在在 user1 表中寫幾條記錄

root@localhosttest>insert user1(username,pid) values('Tom',3); root@localhosttest>insert user1(username,pid) values('Junt,7); root@localhosttest>insert user1(username,pid) values('Rose',4);

并進行查看,使用命令 select * from user1;


即是 Tom?所在省份的 id?是 3,就是省份的名稱

刪除表中的記錄

delete from table_name where condition; root@localhosttest>delete from province where id=3; 刪除一行

刪除之后,進行查看


故而即是從父表中刪除記錄時,子表也隨著相應的刪除記錄。

在外鍵約束當中,在實際的開發過程中,我們很少使用物理的外鍵約束,很多都去使用邏輯的外鍵約束,因為物理的外鍵約束只有INNODB這種引擎才會支持,像我們另外的一種引擎MYISAM的引擎則不支持,反過來說,如果我想創建的數據表,假設存儲引擎為MYISAM,而且又想使用外鍵約束的話,其實是不可能實現的,所以說,我們在實際的項目開發中,我們不去定義物理的外鍵,所謂的邏輯外鍵指的是就是我們在定義兩張表的結構的時候,我們是按照存在的某種結構的方式去定義,但是不去使用FOREIGN KEY這個關鍵詞來定義。

a、刪除部分記錄時,使用delete;

b、刪除所有記錄時保留該表的結構,使用truncate;

c、刪除數據表時,使用drop;

查看users表中的記錄


由于上文中已經使用了delete刪除了記錄,這里清除所有記錄

root@localhost test>truncate table users;

或者使用delete進行刪除,由于delete條件可選,因此更加靈活,而truncate清除了表中的數據而保留表的結構。

root@localhost test>delete from users;

當表不在需要的時候進行刪除

root@localhost test>drop table users;




總結

以上是生活随笔為你收集整理的mysql之外键约束的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久久久五月天 | 97涩涩网 | 欧美日在线 | 亚洲一卡二卡三卡四卡 | 国产a一区二区三区 | 国产一区二区精彩视频 | 天堂一级片 | 国产做受高潮动漫 | 91成人精品 | 欧美日韩成人一区二区 | av永久免费观看 | 成av在线| 精品亚洲永久免费精品 | 亚洲综合一二三 | 欧美一区二区视频在线观看 | 欧美日韩在线观看一区 | 成年网站免费观看 | 亚洲97色 | 国产成人在线视频 | 久久久高清 | 精品日韩欧美 | 求一个黄色网址 | 久久国产柳州莫菁门 | 午夜性剧场 | 91视频综合网 | 欧美日韩国产免费一区二区三区 | 精品少妇一区二区三区在线观看 | 亚洲视频精品在线观看 | a天堂在线观看 | 反差在线观看免费版全集完整版 | 国产精品久久久久久久久免费 | 中文字幕国内自拍 | 黑森林av凹凸导航 | 久久久久久久久久久久久久久久久久久 | 懂色av一区二区三区在线播放 | 一区二区三区在线不卡 | 欧美一级视频免费 | 国产精品欧美久久久久天天影视 | 国产伦精品一区二区三区照片91 | av有码在线观看 | 青青草成人影视 | 黄色小视频在线播放 | 91蜜桃| 亚洲av成人无码久久精品 | 荫蒂被男人添免费视频 | 一区二区自拍偷拍 | 欧美日韩免费观看一区=区三区 | 中文字幕av久久 | 操女人免费视频 | 伊伊综合网 | 中文字幕av久久 | 成人免费看片' | 亚洲午夜网站 | 国产三级久久久 | 免费一区二区三区视频在线 | 日韩不卡视频在线 | 黄色一区二区视频 | 91文字幕巨乱亚洲香蕉 | 老司机午夜影院 | 高清中文字幕mv的电影 | 内射国产内射夫妻免费频道 | 成人在线免费视频播放 | 国产性一乱一性一伧一色 | 色先锋影院 | 欧美亚洲一区二区在线观看 | 精品综合网 | 夜夜操夜夜操 | 日本特级淫片 | 天天综合网国产 | 中文字幕在线观看亚洲 | 亚洲丝袜在线视频 | 黄色资源在线 | 久久精品国产亚洲AV熟女 | 久久久久久片 | 欧美日韩高清一区二区 国产亚洲免费看 | 金瓶狂野欧美性猛交xxxx | 91精品免费看 | 亚洲精品乱码久久久久久自慰 | 182午夜视频 | 欧美日韩中文一区 | 亚洲综合免费 | www.com捏胸挤出奶 | 欧美人与性动交xxⅹxx | 国产50页 | 能在线观看的av | 自拍超碰在线 | 欧美超碰在线观看 | 金瓶狂野欧美性猛交xxxx | 亚洲区自拍偷拍 | 精品无码在线观看 | 激情第一页 | 不卡中文字幕 | 古代玷污糟蹋np高辣h文 | 在线看毛片网站 | 啪啪天堂 | 一区二区在线观看视频 | 国产成人精品无码免费看夜聊软件 | 国产一线二线三线在线观看 | 豆花视频在线播放 |