簡體   English   中英

SQL中兩個表的交集

[英]Intersection of Two Tables in SQL

基本上我需要創建一個新表,它使用來自其他兩個表的特定信息。

例如,我有一個名為 person 的表,其中包含元素 person_id、first_name、last_name、gender、age 和 fav_quote。 我有一個名為部門的第二個表,其中包含元素 dept_id、dept_name 和 building。 我現在需要創建包含 person_id 和 dept_id 元素的交集表。 並且兩者都必須是主鍵(我假設在我的源代碼中僅表示 PRIMARY KEY (person_id, dept_id) 命令)。

創建表人(

person_id INT(8) NOT NULL auto_increment,

first_name VARCHAR(25) 非空,

last_name VARCHAR(25) 非空,

性別 VARCHAR(1),

年齡 INT(8),

fav_quote 文本,

主鍵 (person_id)

);

創建表部門(

dept_id INT(8) NOT NULL auto_increment,

部門名稱 VARCHAR(25) 非空,

構建 VARCHAR(25) NOT NULL,

主鍵 (dept_id)

);

那是我最初的兩個表的代碼,我只是不確定如何創建交集,而且在回顧我的筆記后,我找不到有關如何編寫它的說明。

你的主鍵部分是對的。 我會將外鍵添加到您現有的表中,以防止與不存在的人員或部門創建交互:

CREATE TABLE person_department
    person_id INT(8) NOT NULL,
    dept_id INT(8) NOT NULL,
    PRIMARY KEY(person_id, dept_id),
    FOREIGN KEY(person_id) REFERENCES person(person_id),
    FOREIGN KEY(dept_id) REFERENCES department(dept_id)
)

你需要一個有 2 個字段的表格; person_id 和 dept_id。 該表將具有兩個表個人和部門主鍵的外鍵以及兩者的復合主鍵。

此外,僅當人員與部門之間存在一對多關系時,才需要此表。 否則只需親自添加 dept_id 作為外鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM