A. sql中創建組合主鍵和組合外鍵
聯合主鍵:primary
key(id,name)
外鍵:FOREIGN
KEY
(id,name)
REFERENCES
user(id,name)
註:聯合主鍵的外鍵必須同時引用兩個主鍵無法單個引用
B. 怎麼在SQL中設置外鍵
sql ce表中建立外鍵約束的語法:CREATE TABLE DetectTable(UserID integer,StartTime datetime not null,EndTime datetime not null,MassName nvarchar(10), foreign key (UserID) references UserTable(UserID)),其中,UserID為UserTable表中的主鍵。
也可以在創建資料庫關系圖直接拖
在資料庫關系圖上右鍵-->新建關系圖-->添加表
然後直接用滑鼠拖欄位連接就可以建立外鍵約束了
C. 求助,sql外鍵的創建問題
-- 創建外鍵(默認選項)
ALTER TABLE test_sub ADD CONSTRAINT main_id_cons FOREIGN KEY (main_id) REFERENCES test_main;
-- 刪除 外鍵約束
ALTER TABLE test_sub DROP CONSTRAINT main_id_cons;
不知道樓主明白了么?
那個constraint id_fk 中的 id_fk
是為了 方便你 刪除外鍵
當然了。某些資料庫, 是 允許 暫時禁用外鍵約束.
禁用的時候, 也是要給一個名字的。
下面是一段 Oracle 的例子
SQL>--創建外鍵(默認選項)
SQL>ALTERTABLEtest_subADDCONSTRAINTmain_id_consFOREIGNKEY(main_id)REFERENCEStest_main;
表已更改。
SQL>--測試插入子表數據.將出錯ORA-02291:違反完整約束條件
SQL>INSERTINTOtest_sub(ID,MAIN_ID,VALUE)VALUES(3,3,'THREETHREE');
INSERTINTOtest_sub(ID,MAIN_ID,VALUE)VALUES(3,3,'THREETHREE')
*
ERROR位於第1行:
ORA-02291:違反完整約束條件(TEST.MAIN_ID_CONS)-未找到父項關鍵字
--嘗試禁用外鍵約束.
SQL>ALTERTABLEtest_subMODIFYCONSTRAINTmain_id_consDISABLE;
表已更改。
SQL>INSERTINTOtest_sub(ID,MAIN_ID,VALUE)VALUES(3,3,'THREETHREE');
已創建1行。
SQL>INSERTINTOtest_main(id,value)VALUES(3,'THREE');
已創建1行。
SQL>commit;
提交完成。
--恢復啟用外鍵約束.
SQL>ALTERTABLEtest_subMODIFYCONSTRAINTmain_id_consENABLE;
表已更改。
SQL>DELETEtest_mainWHEREID=1;
DELETEtest_mainWHEREID=1
*
ERROR位於第1行:
ORA-02292:違反完整約束條件(TEST.MAIN_ID_CONS)-已找到子記錄
D. sql中外鍵怎麼寫
1、創建測試表;
create table test_class(class_id varchar2(10), class_name varchar2(30));
create table test_student(student_id varchar2(10), student_name varchar2(30), class_id varchar2(10));
E. sql怎麼設置外鍵
創建資料庫時就是有主鍵的創建了主鍵,但是表之間的關系沒有聯系,要建資料庫關系圖只有主鍵沒有外鍵時不行的。
建外鍵的前提是此外鍵必須是另外一個表的主鍵。建外鍵的步驟:
第一步、打開要建外鍵表的設計器,右擊選擇「關系」。
第二步、然後彈出「外鍵關系」窗體,我們選擇「添加」,然後點擊「表和列規范」後面的小按鈕。
第三步、彈出另外一個窗體讓我們選擇主鍵表和列,記住要選擇相同的,選好之後點擊確定。
第四步、展開INSERT和UPDATE規范,在更新規則和刪除規則有四個選項,分別是「不執行任何操作」、「級聯」、「設置為NULL」、「設置默認值」。
默認的不執行任何操作。如果是「不執行任何操作」,當我們刪除或更新主鍵表的數據時,會告訴用戶不能執行刪除或更新該操作。
「級聯」的意思是當我們刪除或更新主鍵表的數據時,會刪除或更新外鍵表中所涉及的相關數據的所有行。
「設置Null」的意思是當我們刪除或更新主鍵表的數據時,外鍵表中的外鍵列的值會設為Null,但前提是該列允許為空。
「設置默認值」的意思是如果我們將外鍵列定義了默認值,當我們刪除或更新主鍵表的數據時,外鍵表中的外鍵列的值設為定義的默認值。
當然也可以用代碼創建,在創建資料庫表T——Card時只要加上一句代碼就可以了。「Foreign
key
(studentNo)
references
T_Student(studentNo)"。如果已經創建了改表,那如何用代碼實現了,這也很簡單也就一句代碼「
add
constraint
CMPKey(外鍵名)
foreign
key(studentNo)
references
T_Student(studentNo)」。
F. sql用命令創建主鍵與外鍵。
創建SQL的主鍵和外鍵約束的方法:
--在創建表時就可以對欄位加上約束:
create table Student
(
StudentNo int PRIMARY KEY IDENTITY(1,1), --加主鍵約束,還有標識列屬性(兩者構成實體完整性)
StudentName nvarchar(15) not null, --加非空約束,不加"not null" 默認為:可以為空
StudentSchool text(20) FOREIGN KEY REFERENCES SchoolTable(SchoolName), --加外鍵約束,格式:FOREIGN KEY REFERENCES 關聯的表名(欄位名)
StudentAge int DEFAULT ((0)), --加默認值約束
StudentSex nvarchar(2) CHECK(StudentSex=N'男' or StudentSex=N'女') --加檢查約束,格式:check (條件表達式)
)
--如果在表創建好了以後再加約束,則格式分別為:
-- 主鍵:
alter table 表名
add constraint PK_欄位名--"PK"為主鍵的縮寫,欄位名為要在其上創建主鍵的欄位名,'PK_欄位名'就為約束名
primary key (欄位名) --欄位名同上
--唯一約束:
alter table 表名
add constraint UQ_欄位名
unique (欄位名)
--外鍵約束:
alter table 表名
add constraint FK_欄位名--"FK"為外鍵的縮寫
foreign key (欄位名) references 關聯的表名(關聯的欄位名) --注意'關聯的表名'和'關聯的欄位名'
alter table 表A add constraint FK_B foreign key (ticket_no) references 表B(ticket_no)
alter table 表A add constraint FK_C foreign key (person_no) references 表C(person_no)
alter table 成績表 add constraint FK_StudentNo foreign key (StudentNo) references Student (StudentNo)
ON UPDATE CASCADE ON DELETE CASCADE
級聯更新,級聯刪除,這樣在刪除主表Student時,成績表中該學生的所有成績都會刪除。
--檢查約束:
alter table 表名
add constraint CK_欄位名
check (條件表達式) --條件表達式中的條件用關系運算符連接
--默認值約束:
alter table 表名
add constraint DF_欄位名
default '默認值' for 欄位名--其中的'默認值'為你想要默認的值,注意'for'
--刪除創建的約束:
alter table 表名
drop constraint 約束名--約束名為你前面創建的如:PK_欄位這樣的約束名
--注意:如果約束是在創建表的時候創建的,則不能用命令刪除
--只能在'企業管理器'裡面刪除
參考資料 : http://www.studyofnet.com/news/92.html
希望以上的回答能夠幫到你
G. sql 添加外鍵語句
為資料庫表添加外鍵方法(以SqlSever2005資料庫為例):
1、新建兩張表,一張為主表,一張為副表。主表裡的外鍵就是連接到副表的主鍵。
H. 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)
(8)sql中建立外鍵時候出來一個key擴展閱讀:
數據查詢語言,其語句,也稱為「數據檢索語句」,用以從表中獲得數據,確定數據怎樣在應用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其他類型的SQL語句一起使用。
參考資料:結構化查詢語言_網路
I. SQL建立外鍵
-- 創建測試主表. ID 是主鍵.
CREATE TABLE test_main (
id INT,
value VARCHAR(10),
PRIMARY KEY(id)
);
-- 創建測試子表.
CREATE TABLE test_sub (
id INT,
main_id INT,
value VARCHAR(10),
PRIMARY KEY(id)
);
默認外鍵約束方式
ALTER TABLE test_sub ADD CONSTRAINT main_id_cons FOREIGN KEY (main_id) REFERENCES test_main;
DELETE CASCADE 方式
-- 創建外鍵(使用 ON DELETE CASCADE 選項,刪除主表的時候,同時刪除子表)
ALTER TABLE test_sub
ADD CONSTRAINT main_id_cons
FOREIGN KEY (main_id) REFERENCES test_main ON DELETE CASCADE;
UPDATE CASCADE方式
-- 創建外鍵(使用 ON UPDATE CASCADE 選項,更新主表的主鍵時候,同時更新子表外鍵)
ALTER TABLE test_sub
ADD CONSTRAINT main_id_cons
FOREIGN KEY (main_id) REFERENCES test_main ON UPDATE CASCADE;
SET NULL方式
-- 創建外鍵(使用 ON DELETE SET NULL 選項,刪除主表的時候,同時將子表的 main_id 設置為 NULL)
ALTER TABLE test_sub
ADD CONSTRAINT main_id_cons
FOREIGN KEY (main_id) REFERENCES test_main ON DELETE SET NULL;
是否可以解決您的問題?