oracle SQL实时初学者

fruv7luv  于 2023-03-07  发布在  Oracle
关注(0)|答案(1)|浏览(119)

第一次学习SQL Live的学生-我尝试创建表,但问题是收到以下错误代码:ORA-00942:表或视图不存在。不确定我做错了什么。
下面是我的代码:

CREATE TABLE Emp 
(
    Empno INT PRIMARY KEY,
    Ename VARCHAR(50) NOT NULL,
    DNO INT,
    BirthDate DATE,
    Sal DECIMAL(10,2) CHECK (Sal BETWEEN 1000 AND 10000),
    CONSTRAINT fk_Dept_Emp FOREIGN KEY (DNO) REFERENCES Dept(Deptno)
);

CREATE TABLE Dept 
(
    Deptno INT PRIMARY KEY,
    Dname VARCHAR(50) UNIQUE NOT NULL,
    Mgr INT,
    CONSTRAINT fk_Emp_Dept FOREIGN KEY (Mgr) REFERENCES Emp(Empno)
);

我的指示如下:
使用SQL Live创建两个表:

  • 员工(员工编号、姓名、DNO、出生日期、销售额)
  • 部门(部门编号、姓名、经理)

为每列选择适当的数据类型。
对于Emp表,添加以下约束:Empno是主键,Ename不能为空,DNO是FK引用部门(Deptno),Sal应该在1000和10000之间
对于Dept表,添加以下约束:部门号为主键,部门名称为唯一,经理为FK参考员工(员工号)。

jq6vz3qz

jq6vz3qz1#

你的代码的问题是你试图创建相互依赖的外键,无论你尝试什么顺序,它们给予出错,因为一个外键不会出现在另一个外键之前。
要解决此问题,请尝试创建一个不带外键的表。然后创建另一个表,并通过ALTER TABLE命令在第一个表中添加外键-

CREATE TABLE Emp 
(
    Empno INT PRIMARY KEY,
    Ename VARCHAR(50) NOT NULL,
    DNO INT,
    BirthDate DATE,
    Sal DECIMAL(10,2) CHECK (Sal BETWEEN 1000 AND 10000)
);

CREATE TABLE Dept 
(
    Deptno INT PRIMARY KEY,
    Dname VARCHAR(50) UNIQUE NOT NULL,
    Mgr INT,
    CONSTRAINT fk_Emp_Dept FOREIGN KEY (Mgr) REFERENCES Emp(Empno)
);

ALTER TABLE Emp ADD CONSTRAINT fk_Dept_Emp FOREIGN KEY (DNO) REFERENCES Dept(Deptno);

Demo.

相关问题