SQL中两个表的交集

时间:2018-11-06 06:58:05

标签: mysql sql primary-key ddl create-table

基本上,我需要创建一个新表,该表使用其他两个表中的特定信息。

例如,我有一个名为person的表,其元素为person_id,first_name,last_name,性别,年龄和fav_quote。我还有一个名为Department的第二张表,其中包含元素dept_id,dept_name和建筑物。现在,我需要创建一个包含person_id和dept_id元素的交集表。两者都必须是主键(我认为这只是我的源中的PRIMARY KEY(person_id,dept_id)命令)。

  

创建表的人(

     

person_id INT(8)NOT NULL auto_increment,

     

first_name VARCHAR(25)NOT NULL,

     

last_name VARCHAR(25)NOT NULL,

     

性别VARCHAR(1)

     

年龄INT(8),

     

fav_quote TEXT

     

主键(person_id)

     

);

     

CREATE TABLE部门(

     

dept_id INT(8)NOT NULL auto_increment,

     

dept_name VARCHAR(25)NOT NULL,

     

构建VARCHAR(25)NOT NULL,

     

主键(dept_id)

     

);

那是我为最初的两个表提供的代码,我不确定如何创建一个交集,并且在回顾笔记之后,我找不到有关如何编写交集的说明。

2 个答案:

答案 0 :(得分:1)

您正确掌握了主键部分。我会将外键添加到现有表中,以防止与不存在的人员或部门进行交互:

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)
)

答案 1 :(得分:0)

您需要一个包含2个字段的表格; person_id和dept_id。该表将具有指向两个表的人员和部门主键的外键,以及两者的复合主键。

此外,仅当人与部门之间存在一对多关系时,才需要此表。否则,只需亲自将dept_id添加为外键。