我创建了两个表EMP和DEPT; 现在我想把这两个表联系起来。 也就是说,一个表的数据将来到另一个表。 怎么可能?
答案 0 :(得分:3)
一个部门可以有很多员工;这是一种经典的一对多关系。
两个表都应该有主键;在员工表中放置一个FOREIGN KEY指向其部门。
答案 1 :(得分:3)
经典地,DEPT表将具有主键列,例如DeptNum。 EMP表还将包含与DEPT.DeptNum相同类型的列DeptNum。将记录插入EMP时,可确保DeptNum值与DEPT中的正确部门匹配。
您有DBMS通过声明EMP.DeptNum是引用DEPT.DeptNum的外键来强制执行此操作。那么DBMS将
答案 2 :(得分:0)
duffymo和Jonathan Leffler为您提供了解决方案。
另外,如果你想看到完成的工作,你可以看看“HR模式”。安装oracle时,通常会安装HR模式(人力资源),并且您可以根据需要使用EMP表和DEPT表。
答案 3 :(得分:0)
创建表时创建外键约束
CREATE TABLE table_name
(column1 datatype null/not null,
column2 datatype null/not null,
...
CONSTRAINT fk_column
FOREIGN KEY (column1, column2, ... column_n)
REFERENCES parent_table (column1, column2, ... column_n)
);
或使用ALTER TABLE语句
e.g。
ALTER TABLE table_name
add CONSTRAINT constraint_name
FOREIGN KEY (column1, column2, ... column_n)
REFERENCES parent_table (column1, column2, ... column_n);
例如:
ALTER TABLE EMP
add CONSTRAINT fk_dept
FOREIGN KEY (dept_id)
REFERENCES dept(dept_id);
我假设你已经用Oracle标记了这个问题,你想要Oracle的答案。 其他DB可能会有所不同。
再次阅读您的问题时,您是否也想知道如何在SQL查询中将它们链接在一起?如果是这样,你需要的就是加入。
e.g。如果emp和dept表都有一个名称和id列,那么这个 将加入他们
select emp.name, dept.name from emp inner join dept where emp.id = dept.id
这就是你要追求的吗?