sql外來鍵需要輸入嗎 SQL外來鍵

2021-10-13 14:15:03 字數 2619 閱讀 5646

在本教程中,將學習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...