SQL 中两个表的交集
Intersection of Two Tables in SQL
基本上我需要创建一个新的 table,它使用来自另外两个 table 的特定信息。
例如,我有一个名为 table 的人,其元素为 person_id、first_name、last_name、性别、年龄和 fav_quote。我有一个名为 department 的第二个 table,包含 dept_id、dept_name 和 building 元素。我现在需要创建 table 并与包含的 person_id 和 dept_id 元素相交。并且两者都必须是主键(我假设这只是我源代码中的 PRIMARY KEY (person_id, dept_id) 命令)。
CREATE TABLE person (
person_id INT(8) NOT NULL auto_increment,
first_name VARCHAR(25) NOT NULL,
last_name VARCHAR(25) NOT NULL,
gender VARCHAR(1),
age INT(8),
fav_quote TEXT,
PRIMARY KEY (person_id)
);
CREATE TABLE department (
dept_id INT(8) NOT NULL auto_increment,
dept_name VARCHAR(25) NOT NULL,
building VARCHAR(25) NOT NULL,
PRIMARY KEY (dept_id)
);
这是我为前两个 table 编写的代码我只是不确定如何创建一个交叉点,而且在回顾我的笔记后,我找不到关于如何创建交叉点的说明写它。
您需要一个包含 2 个字段的 table; person_id 和 dept_id。 table 将具有两个 table 人员和部门主键的外键以及两者的复合主键。
此外,只有在人员与部门之间存在一对多关系时才需要此 table。否则只需亲自添加 dept_id 作为外键即可。
你答对了主键部分。我会向您现有的 table 添加外键,以防止与不存在的人员或部门进行交互:
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)
)
基本上我需要创建一个新的 table,它使用来自另外两个 table 的特定信息。
例如,我有一个名为 table 的人,其元素为 person_id、first_name、last_name、性别、年龄和 fav_quote。我有一个名为 department 的第二个 table,包含 dept_id、dept_name 和 building 元素。我现在需要创建 table 并与包含的 person_id 和 dept_id 元素相交。并且两者都必须是主键(我假设这只是我源代码中的 PRIMARY KEY (person_id, dept_id) 命令)。
CREATE TABLE person (
person_id INT(8) NOT NULL auto_increment,
first_name VARCHAR(25) NOT NULL,
last_name VARCHAR(25) NOT NULL,
gender VARCHAR(1),
age INT(8),
fav_quote TEXT,
PRIMARY KEY (person_id)
);
CREATE TABLE department (
dept_id INT(8) NOT NULL auto_increment,
dept_name VARCHAR(25) NOT NULL,
building VARCHAR(25) NOT NULL,
PRIMARY KEY (dept_id)
);
这是我为前两个 table 编写的代码我只是不确定如何创建一个交叉点,而且在回顾我的笔记后,我找不到关于如何创建交叉点的说明写它。
您需要一个包含 2 个字段的 table; person_id 和 dept_id。 table 将具有两个 table 人员和部门主键的外键以及两者的复合主键。
此外,只有在人员与部门之间存在一对多关系时才需要此 table。否则只需亲自添加 dept_id 作为外键即可。
你答对了主键部分。我会向您现有的 table 添加外键,以防止与不存在的人员或部门进行交互:
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)
)