當前位置:首頁 » 編程語言 » sql引用外鍵
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql引用外鍵

發布時間: 2022-07-22 23:36:53

『壹』 sql如何建立外鍵請教高手了

資料庫mysql
建立外鍵的前提:
本表的列必須與外鍵類型相同(外鍵必須是外表主鍵)。
外鍵作用:
使兩張表形成關聯,外鍵只能引用外表中的列的值!
指定主鍵關鍵字:
foreign
key(列名)
引用外鍵關鍵字:
references
<外鍵表名>(外鍵列名)
事件觸發限制:
on
delete和on
update
,
可設參數cascade(跟隨外鍵改動),
restrict(限制外表中的外鍵改動),set
Null(設空值),set
Default(設默認值),[默認]no
action
例如:
outTable表
主鍵
id
類型
int
創建含有外鍵的表:
create
table
temp(
id
int,
name
char(20),
foreign
key(id)
references
outTable(id)
on
delete
cascade
on
update
cascade);
說明:把id列
設為外鍵
參照外表outTable的id列
當外鍵的值刪除
本表中對應的列篩除
當外鍵的值改變
本表中對應的列值改變。
自己實踐
才能完全了解外鍵的作用
關鍵是:事件觸發限制的作用

『貳』 sql怎麼設置外鍵

sql server中建立外鍵約束有3中方式:enterprise manager中,tables,design table,設置table的properties,可以建立constraint, reference key;enterprise manager中,diagrams, new diagrams,建立兩個表的關系;直接用transact sql語句。

1、三個方法都需要先建立數據表。

1)創建表author :

create table [dbo].[author] (
[id] [bigint] not null ,
[authorname] [char] (10) null ,
[address] [char] (480) null ,
[introction] [ntext] null
)

2)創建表mybbs:

reate table [dbo].[mybbs] (
[id] [bigint] identity (1, 1) not null ,
[authorid] [bigint] not null ,
[title] [char] (40) null ,
[date_of_created] [datetime] null ,
[abstract] [char] (480) null ,
[content] [ntext] null
)

2、設置表mybbs中的authorid為外鍵,參照author表的id欄位,直接使用transact sql語句,過程如下:

1)增加表mybbs(authorid)的外鍵約束fk_mybbs_author,表mybbs中的authorid受表author中的主鍵id約束:

begin transaction
alter table dbo.mybbs add constraint fk_mybbs_author
foreign key (authorid)
references dbo.author([id]) on update cascade on delete cascade

2)刪除外鍵約束fk_mybbs_author:
--alter table dbo.mybbs drop constraint fk_mybbs_author
--rollback
commit transaction

上面on update cascade,on delete cascade兩個選項,指明以後author表的id欄位有delete,update操作時,mybbs表中的id也會被級聯刪除或更新。如果沒有選中,是不可以對author表中已被mybbs表關聯的id進行update或者delete操作的。

拓展資料:

SQL的主鍵和外鍵的作用:

1、插入非空值時,如果主鍵表中沒有這個值,則不能插入。

2、更新時,不能改為主鍵表中沒有的值。

3、刪除主鍵表記錄時,你可以在建外鍵時選定外鍵記錄一起級聯刪除還是拒絕刪除。

4、更新主鍵記錄時,同樣有級聯更新和拒絕執行的選擇。

簡而言之,SQL的主鍵和外鍵就是起約束作用。

『叄』 SQL資料庫外鍵

創建外鍵時可以指定級聯刪除選項,設置後主表數據被刪除,從表數據也會被刪除,反之則不然。

參考:http://hi..com/zagelover/item/c0118adda8f92ef592a97475

sql外鍵約束NO ACTION,CASCADE,SET NULL,SET DEFAULT

NO ACTION
指定如果試圖刪除/修改某一行,而該行的鍵被其他表的現有行中的外鍵所引用,則產生錯誤並回滾 DELETE/UPDATE語句。
CASCADE、SET NULL 和 SET DEFAULT
允許通過刪除或更新鍵值來影響指定具有外鍵關系的表,這些外鍵關系可追溯到在其中進行修改的表。如果為目標表也定義了級聯引用操作,那麼指定的級聯操作也將應用於刪除或更新的那些行。不能為具有 timestamp 列的外鍵或主鍵指定 CASCADE。
ON DELETE CASCADE
指定如果試圖刪除某一行,而該行的鍵被其他表的現有行中的外鍵所引用,則也將刪除所有包含那些外鍵的行。
ON UPDATE CASCADE
指定如果試圖更新某一行中的鍵值,而該行的鍵值被其他表的現有行中的外鍵所引用,則組成外鍵的所有值也將更新到為該鍵指定的新值。 (如果 timestamp 列是外鍵或被引用鍵的一部分,則不能指定 CASCADE。 )
ON DELETE SET NULL
指定如果試圖刪除某一行,而該行的鍵被其他表的現有行中的外鍵所引用,則組成被引用行中的外鍵的所有值將被設置為 NULL。目標表的所有外鍵列必須可為空值,此約束才可執行。
ON UPDATE SET NULL
指定如果試圖更新某一行,而該行的鍵被其他表的現有行中的外鍵所引用,則組成被引用行中的外鍵的所有值將被設置為 NULL。目標表的所有外鍵列必須可為空值,此約束才可執行。
ON DELETE SET DEFAULT
指 定如果試圖刪除某一行,而該行的鍵被其他表的現有行中的外鍵所引用,則組成被引用行中的外鍵的所有值將被設置為它們的默認值。目標表的所有外鍵列必須具 有默認值定義,此約束才可執行。如果某個列可為空值,並且未設置顯式的默認值,則會使用 NULL 作為該列的隱式默認值。因 ON DELETE SET DEFAULT 而設置的任何非空值在主表中必須有對應的值,才能維護外鍵約束的有效性。
ON UPDATE SET DEFAULT
指 定如果試圖更新某一行,而該行的鍵被其他表的現有行中的外鍵所引用,則組成被引用行中的外鍵的所有值將被設置為它們的默認值。目標表的所有外鍵列必須具 有默認值定義,此約束才可執行。如果某個列可為空值,並且未設置顯式的默認值,則會使用 NULL 作為該列的隱式默認值。因 ON UPDATE SET DEFAULT 而設置的任何非空值在主表中必須有對應的值,才能維護外鍵約束的有效性。

『肆』 sql中怎樣創建外鍵約束

添加外鍵 ,alter table B

語法:alter table 表名 add constraint 外鍵約束名 foreign key(列名) references 引用外鍵表(列名)

如:

altertableStu_PkFk_Sc
addconstraintFk_s
foreignkey(sno)
referencesStu_PkFk_S(sno)

--cc是外鍵約束名,不能重復,也不能是int類型(如1,2,3)

add constraint cc

--B表裡的需要約束的欄位(id)

foreign key (id)

--A表後的(id)可省略

references A (id)

(4)sql引用外鍵擴展閱讀:

數據查詢語言,其語句,也稱為「數據檢索語句」,用以從表中獲得數據,確定數據怎樣在應用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其他類型的SQL語句一起使用。

參考資料:結構化查詢語言_網路

『伍』 關於SQL建表引用外鍵問題

系主任電話 char(15) default'', Constraint SdeptPK Primary Key (系號,系名),)建立這個Sdept表成功了。 Create table Teacher( 教師編號 char(10) not null, 教師姓名 char(15) not null, 教師性別 char(15) default'', 教師出生日期 datetime, 職稱 char(10) default'', 教師政治面貌 char(10) default'', 辦公室房間號 char(10) default'', 教師電話 char(15) default'', 系名 char(30) default'', Constraint TeacherPK Primary Key (教師編號), Constraint TeacherFK Foreign Key (系名) References Sdept (系名), Constraint DatatimeCK Check (教師出生日期1900-1-1 AND 教師出生日期<2000-1-1))出現錯誤!伺服器: 消息 1776,級別 16,狀態 1,行 1 在被引用表 'Sdept' 中沒有與外鍵 'SdeptFK' 的引用列的列表匹配的主鍵或候選鍵。 伺服器: 消息 1750,級別 16,狀態 1,行 1 未能創建約束。請參閱前面的錯誤信息。 哪位牛人給出結果啊?!!!急!

『陸』 sql資料庫添加外鍵引用orderinfo

外鍵:foreign key (userLevelId) references userLevel(userLevelId)。 主鍵:primary key。

『柒』 SQL資料庫中的外鍵 是怎麼輸入的

表中的欄位都要手寫上去的。
主鍵一般是用來約束自身的,一般值要唯一
外鍵是外部引用約束,含義是其值必須在所引用的表中欄位中存在