在本教程中,將學習sql外來鍵以及如何建立foreign key約束以強制表之間的關係。
1. sql外來鍵約束簡介
外來鍵是一列或一組列,用於強制兩個表中的資料之間的鏈結。 在外鍵引用中,第乙個表的主鍵列(或多個列)由第二個表的列(或列)引用。 第二個表的列(或列)成為外來鍵。
在建立或更改表時,可以使用foreign key約束建立外來鍵。 下面來看乙個簡單的例子以更好地理解。
2. sql foreign key約束示例
請參閱以下project表和project_assignments表:
create table projects (
project_id int auto_increment primary key,
project_name varchar(255),
start_date date not null,
end_date date not null
create table project_milestones(
milestone_id int auto_increment primary key,
project_id int,
milestone_name varchar(100)
每個專案可能有零個或多個里程碑,而乙個里程碑必須屬於乙個且只有乙個專案。 使用這些表的應用程式必須確保project_milestones表中的每一行都在projects表中存在相應的行。 換句話說,沒有專案就不可能存在里程碑。
不幸的是,使用者可能使用客戶端工具編輯資料庫,或者如果應用程式中存在錯誤,則可能會在project_milestones表中新增一行,該行不對應於專案表中的任何行。 或者使用者可以刪除專案表中的行,在project_milestones表中留下孤立的行。 這會導致應用程式無法正常工作。
解決方案是向project_milestones表新增sql foreign key約束,以強制執行project表和project_milestones表之間的關係。
可以在建立表時建立foreign key約束,如下所示:
create table project_milestones (
milestone_id int auto_increment primary key,
project_id int,
milestone_name varchar(100),
foreign key (project_id)
references projects (project_id)
foreign key子句將project_milestones表的project_id設定為引用project表的project_id列的外來鍵。
foreign key (project_id)
references projects (project_id)
可以為foreign key約束指定名稱,如下所示:
create table project_milestones (
milestone_id int auto_increment primary key,
project_id int,
milestone_name varchar(100),
constraint fk_project foreign key (project_id)
references projects (project_id)
hk_project是foreign key約束的名稱。將foreign key約束新增到現有表
,要向現有表新增foreign key約束,請使用alter table語句。
alter table table_1
add constraint fk_name foreign key (fk_key_column)
references table_2(pk_key_column)
假設project_milestones列已經存在,但是沒有任何預定義的外來鍵,如果想要為project_id列定義foreign key約束。 為此,請使用以下alter table語句:
alter table project_milestones
add constraint fk_project foreign key(project_id)
references projects(project_id);
3. 刪除外來鍵約束
要刪除外來鍵約束,還要使用alter table語句,如下所示:
alter table table_name
drop constraint fk_name;
如果使用的是mysql,則可以使用更清晰的語法,如下所示:
alter table table_name
drop foreign key fk_name;
例如,要刪除fk_project外來鍵約束,請使用以下語句:
alter table project_milestones
drop constraint fk_project;
在本教程中,我們介紹了外來鍵概念,並演示了如何使用sql foreign key約束建立和刪除外來鍵。
¥ 我要打賞
糾錯/補充
收藏加qq群啦,易百教程官方技術學習群
注意:建議每個人選自己的技術方向**,同乙個qq最多限加 3 個群。
SQL建立外來鍵
建立外來鍵關係 先建主表再見從表 主表 create table zhu code int primary key name varchar 20 從表 create table cong code int primary key name varchar 20 zhu int,foreign ke...
SQL關係 主鍵,外來鍵
一 定義 主鍵 唯一標識一條記錄,不能有重複的,不允許為空 外來鍵 表的外來鍵是另一表的主鍵,外來鍵可以有重複的,可以是空值 二 作用 主鍵 用來保證資料完整性 外來鍵 用來和其他表建立聯絡用的 三 個數 主鍵 主鍵只能有乙個 外來鍵 乙個表可以有多個外來鍵 四 sql中主鍵和外來鍵的關係及運用 1...
sql如何設定外來鍵
這學期開始學習資料庫,上次的實驗課遇到了設定外來鍵的問題,後面在老師的指引及自己資料的收集下找到了幾種辦法 第一種 第二種alter table work add constraint departmentid fk foreign key departmentid references dep d...