mysql增加外鍵的方法:1、在CREATE TABLE語句中,通過FOREIGN KEY關(guān)鍵字來添加外鍵;2、在ALTER TABLE語句中,通過ADD和FOREIGN KEY關(guān)鍵字來添加外鍵。
和田縣網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司于2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
推薦課程:MySQL教程。
MySQL 外鍵約束(FOREIGN KEY)是表的一個(gè)特殊字段,經(jīng)常與主鍵約束一起使用。對于兩個(gè)具有關(guān)聯(lián)關(guān)系的表而言,相關(guān)聯(lián)字段中主鍵所在的表就是主表(父表),外鍵所在的表就是從表(子表)。
外鍵用來建立主表與從表的關(guān)聯(lián)關(guān)系,為兩個(gè)表的數(shù)據(jù)建立連接,約束兩個(gè)表中數(shù)據(jù)的一致性和完整性。比如,一個(gè)水果攤,只有蘋果、桃子、李子、西瓜等 4 種水果,那么,你來到水果攤要買水果就只能選擇蘋果、桃子、李子和西瓜,其它的水果都是不能購買的。
主表刪除某條記錄時(shí),從表中與之對應(yīng)的記錄也必須有相應(yīng)的改變。一個(gè)表可以有一個(gè)或多個(gè)外鍵,外鍵可以為空值,若不為空值,則每一個(gè)外鍵的值必須等于主表中主鍵的某個(gè)值。
定義外鍵時(shí),需要遵守下列規(guī)則:
主表必須已經(jīng)存在于數(shù)據(jù)庫中,或者是當(dāng)前正在創(chuàng)建的表。如果是后一種情況,則主表與從表是同一個(gè)表,這樣的表稱為自參照表,這種結(jié)構(gòu)稱為自參照完整性。
必須為主表定義主鍵。
主鍵不能包含空值,但允許在外鍵中出現(xiàn)空值。也就是說,只要外鍵的每個(gè)非空值出現(xiàn)在指定的主鍵中,這個(gè)外鍵的內(nèi)容就是正確的。
在主表的表名后面指定列名或列名的組合。這個(gè)列或列的組合必須是主表的主鍵或候選鍵。
外鍵中列的數(shù)目必須和主表的主鍵中列的數(shù)目相同。
外鍵中列的數(shù)據(jù)類型必須和主表主鍵中對應(yīng)列的數(shù)據(jù)類型相同。
在創(chuàng)建表時(shí)設(shè)置外鍵約束
在 CREATE TABLE 語句中,通過 FOREIGN KEY 關(guān)鍵字來指定外鍵,具體的語法格式如下:
1
2
[CONSTRAINT 外鍵名] FOREIGN KEY 字段名 [,字段名2,…]
REFERENCES 主表名 主鍵列1 [,主鍵列2,…]
例 1
為了展現(xiàn)表與表之間的外鍵關(guān)系,本例在 test_db 數(shù)據(jù)庫中創(chuàng)建一個(gè)部門表 tb_dept1,表結(jié)構(gòu)如下表所示。
創(chuàng)建 tb_dept1 的 SQL 語句和運(yùn)行結(jié)果如下所示。
1
2
3
4
5
6
7
mysql CREATE TABLE tb_dept1
- (
- id INT(11) PRIMARY KEY,
- name VARCHAR(22) NOT NULL,
- location VARCHAR(50)
- );
Query OK, 0 rows affected (0.37 sec)
創(chuàng)建數(shù)據(jù)表 tb_emp6,并在表 tb_emp6 上創(chuàng)建外鍵約束,讓它的鍵 deptId 作為外鍵關(guān)聯(lián)到表 tb_dept1 的主鍵 id,SQL 語句和運(yùn)行結(jié)果如下所示。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mysql CREATE TABLE tb_emp6
- (
- id INT(11) PRIMARY KEY,
- name VARCHAR(25),
- deptId INT(11),
- salary FLOAT,
- CONSTRAINT fk_emp_dept1
- FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
- );
Query OK, 0 rows affected (0.37 sec)
mysql DESC tb_emp6;
+--------+-------------+------+-----+---------+-------+
| Field? | Type??????? | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id???? | int(11)???? | NO?? | PRI | NULL??? |?????? |
| name?? | varchar(25) | YES? |???? | NULL??? |?????? |
| deptId | int(11)???? | YES? | MUL | NULL??? |?????? |
| salary | float?????? | YES? |???? | NULL??? |?????? |
+--------+-------------+------+-----+---------+-------+
4 rows in set (1.33 sec)
以上語句執(zhí)行成功之后,在表 tb_emp6 上添加了名稱為 fk_emp_dept1 的外鍵約束,外鍵名稱為 deptId,其依賴于表 tb_dept1 的主鍵 id。
注意:從表的外鍵關(guān)聯(lián)的必須是主表的主鍵,且主鍵和外鍵的數(shù)據(jù)類型必須一致。例如,兩者都是 INT 類型,或者都是 CHAR 類型。如果不滿足這樣的要求,在創(chuàng)建從表時(shí),就會出現(xiàn)“ERROR 1005(HY000): Can't create table”錯(cuò)誤。
在修改表時(shí)添加外鍵約束
外鍵約束也可以在修改表時(shí)添加,但是添加外鍵約束的前提是:從表中外鍵列中的數(shù)據(jù)必須與主表中主鍵列中的數(shù)據(jù)一致或者是沒有數(shù)據(jù)。
在修改數(shù)據(jù)表時(shí)添加外鍵約束的語法格式如下:
閱讀剩余部分
相關(guān)閱讀
mysql日期如何轉(zhuǎn)字符串
【mysql數(shù)據(jù)庫】第三章解讀:服務(wù)器性能剖析(上)
mysql case when的用法是什么
mysql關(guān)閉后自動重啟怎么辦
mysql精講之二:dml數(shù)據(jù)操作語句
淺析mysql中concat以及group_concat的使用
mysql如何來創(chuàng)建表
mysql怎么清空數(shù)據(jù)表數(shù)據(jù)
mysql安裝配置jdbc和基礎(chǔ)學(xué)習(xí)
mysql怎么加入一個(gè)數(shù)據(jù)庫?
SQL 數(shù)據(jù)庫建表時(shí)怎么設(shè)置外鍵,
1 -- 創(chuàng)建測試主表. ID 是主鍵.
2 CREATE TABLE test_main (
3 id INT,
4 value VARCHAR(10),
5 PRIMARY KEY(id)
6 );
7 go
-- 建表時(shí)設(shè)置外鍵
1 CREATE TABLE test_sub (
2 id INT,
3 main_id INT,
4 value VARCHAR(10),
5 PRIMARY KEY(id),
6 FOREIGN KEY (main_id) REFERENCES test_main
7 );
8 go
sql怎么設(shè)置外鍵
可以在創(chuàng)建表的時(shí)候創(chuàng)建,也可以在創(chuàng)建表之后創(chuàng)建。
創(chuàng)建表時(shí)創(chuàng)建:
create table student
(id int primary key,
name char(4),
dept char(9)
sex char(4))
create table grade
(id int ,
grade int
constraint id_fk foreign key (id) references student (id)
)
或創(chuàng)建了兩表之后再建
alter table grade
add constraint id_fk foreign key (id) references student (id)
呵呵,希望能幫助你。
sql server中圖形界面如何設(shè)置外鍵
在那個(gè)屬性上右鍵 有約束 自己添加就OK了
mysql怎么設(shè)置外鍵?
ALTER TABLE b ADD CONSTRAINT c FOREIGN KEY(c) REFERENCES a(c) ON DELETE CASCADE ON UPDATE CASCADE; 哎呀。。好像寫反了。我寫的是把表B的c設(shè)置為外鍵了。。你改一下吧。
如何在數(shù)據(jù)庫的建立表的時(shí)候設(shè)置表的外鍵
1 -- 創(chuàng)建測試主表. ID 是主鍵.
2 CREATE TABLE test_main (
3 id INT,
4 value VARCHAR(10),
5 PRIMARY KEY(id)
6 );
7 go
-- 建表時(shí)設(shè)置外鍵
1 CREATE TABLE test_sub (
2 id INT,
3 main_id INT,
4 value VARCHAR(10),
5 PRIMARY KEY(id),
6 FOREIGN KEY (main_id) REFERENCES test_main
7 );
8 go
sql server 2008 怎么設(shè)置外鍵
建外鍵的前提是此外鍵必須是另外一個(gè)表的主鍵。建外鍵的步驟: 第一步打開要建外鍵表的設(shè)計(jì)器,右擊選擇“關(guān)系”。然后彈出“外鍵關(guān)系”窗體,我們選擇“添加”,然后點(diǎn)擊“表和列規(guī)范”后面的小按鈕,就會彈出另外一個(gè)窗體讓我們選擇主鍵表和列,選好之后點(diǎn)擊確定。然后我們INSERT和UPDATE規(guī)范,在更新規(guī)則和刪除規(guī)則有四個(gè)選項(xiàng),分別是“不執(zhí)行任何操作”、“級聯(lián)”、“設(shè)置為NULL”、“設(shè)置默認(rèn)值”。默認(rèn)的不執(zhí)行任何操作。如果是“不執(zhí)行任何操作”,當(dāng)我們刪除或更新主鍵表的數(shù)據(jù)時(shí),會告訴用戶不能執(zhí)行刪除或更新該操作。“級聯(lián)”的意思是當(dāng)我們刪除或更新主鍵表的數(shù)據(jù)時(shí),會刪除或更新外鍵表中所涉及的相關(guān)數(shù)據(jù)的所有行。 “設(shè)置Null”的意思是當(dāng)我們刪除或更新主鍵表的數(shù)據(jù)時(shí),外鍵表中的外鍵列的值會設(shè)為Null,但前提是該列允許為空。 “設(shè)置默認(rèn)值”的意思是如果我們將外鍵列定義了默認(rèn)值,當(dāng)我們刪除或更新主鍵表的數(shù)據(jù)時(shí),外鍵表中的外鍵列的值設(shè)為定義的默認(rèn)值。 當(dāng)然我們可以用代碼創(chuàng)建,當(dāng)我們在創(chuàng)建數(shù)據(jù)庫表T——Card時(shí)只要加上一句話就OK啦,“Foreign key (studentNo) references T_Student(studentNo)"。如果我們已經(jīng)創(chuàng)建了改表,那如何用代碼實(shí)現(xiàn)了,這也很簡單也就一句話“ add constraint CMPKey(外鍵名) foreign key(studentNo) references T_Student(studentNo)”。
sql中怎樣創(chuàng)建外鍵約束
在創(chuàng)建表之后,添加外鍵約束:
alter table yuangong add constraint fk foreign key (部門罰) references bumen(部門號)
或者在創(chuàng)建表的時(shí)候添加外鍵
foreign key (部門號) references bumen(部門號)放在最后,用","與列分隔
數(shù)據(jù)庫中,一對多的時(shí)候外鍵設(shè)置在多的那張表嗎?如果一對一的時(shí)候,外鍵應(yīng)該設(shè)置在哪里?多對多的時(shí)候,
首先,外鍵引用的那個(gè)列在主表中必須是主鍵列或者唯一列。
所以1:n的肯定把外鍵建立在n的那張表上。
1:1,一般要看誰是主表,誰是附屬表,外鍵當(dāng)然建立在附屬表中。
n:m的情況,需要建立一個(gè)關(guān)系表,兩個(gè)原表和其關(guān)系分別是1:n,1
:m
數(shù)據(jù)庫語句怎么加外鍵
1,創(chuàng)建表的時(shí)候添加:foreign key (你的外鍵) references (表名)(字段名);
2,創(chuàng)建好之后修改:
alter table dbo.mh_User
add constraint FK_mh_User_..._id foreign key (你的外鍵) references (表名)(字段名);
Sql server怎樣創(chuàng)建主外鍵關(guān)系
在要設(shè)置關(guān)系的外鍵表中,右擊關(guān)系→添加→在表和列規(guī)范中選擇關(guān)聯(lián)的主表再選擇外鍵表與其關(guān)聯(lián)的字段
定義外鍵的方法和詳細(xì)的操作步驟如下:
1、第一步,創(chuàng)建一個(gè)主從表,如下圖所示,然后進(jìn)入下一步。
2、其次,完成上述步驟后,選擇主表,然后單擊設(shè)計(jì)表進(jìn)入表設(shè)計(jì)界面,如下圖所示,然后進(jìn)入下一步。
3、接著,完成上述步驟后,單擊外鍵進(jìn)入外鍵的設(shè)置界面,如下圖所示,然后進(jìn)入下一步。
4、然后,完成上述步驟后,設(shè)置外鍵名稱,然后選擇主表的外鍵字段,如下圖所示,然后進(jìn)入下一步。
5、隨后,完成上述步驟后,設(shè)置與數(shù)據(jù)庫,表名稱和從屬表的單詞相對應(yīng)的外鍵字段,如下圖所示,然后進(jìn)入下一步。
6、最后,完成上述步驟后,單擊保存即可,如下圖所示。這樣,問題就解決了。
名稱欄目:怎么創(chuàng)建mysql主外鍵 mysql如何創(chuàng)建主鍵和外鍵
網(wǎng)站地址:http://vcdvsql.cn/article16/ddsiggg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、外貿(mào)建站、靜態(tài)網(wǎng)站、定制網(wǎng)站、響應(yīng)式網(wǎng)站、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)