为什么不显示表格视图?

时间:2019-05-19 08:23:40

标签: sql oracle

我是Oracle的新手Oracle live SQL的速记形式提供了有关部门和员工模型的现成代码。

尽管我编写了select语句,但我不理解为什么代码没有查看任何表。我不了解执行协议。

link

create table departments (

    name                           varchar2(255) not null,
    location                       varchar2(4000),
    country                        varchar2(4000)
)
;

create table employees (
    department_id                  number
                                   constraint employees_department_id_fk
                                   references departments on delete cascade,
    name                           varchar2(50) not null,
    email                          varchar2(255),
    cost_center                    number,
    date_hired                     date,
    job                            varchar2(255)
)
;


insert into departments (
    name,
    location,
    country
) values (
    'Security',
    'Tanquecitos',
    'United States'
);

insert into departments (
    name,
    location,
    country
) values (
    'Travel',
    'Sugarloaf',
    'United States'
);

insert into departments (
    name,
    location,
    country
) values (
    'Office of the CEO',
    'Dale City',
    'United States'
);

insert into departments (
    name,
    location,
    country
) values (
    'Security',
    'Grosvenor',
    'United States'
);

commit;
-- load data

insert into employees (
    department_id,
    name,
    email,
    cost_center,
    date_hired,
    job
) values (
    1,
    'Gricelda Luebbers',
    'gricelda.luebbers@aaab.com',
    20,
    sysdate - 94,
    'Systems Designer'
);

insert into employees (
    department_id,
    name,
    email,
    cost_center,
    date_hired,
    job
) values (
    1,
    'Dean Bollich',
    'dean.bollich@aaac.com',
    11,
    sysdate - 74,
    'Legal Assistant'
);

insert into employees (
    department_id,
    name,
    email,
    cost_center,
    date_hired,
    job
) values (
    1,
    'Milo Manoni',
    'milo.manoni@aaad.com',
    21,
    sysdate - 68,
    'Systems Designer'
);

insert into employees (
    department_id,
    name,
    email,
    cost_center,
    date_hired,
    job
) values (
    1,
    'Laurice Karl',
    'laurice.karl@aaae.com',
    78,
    sysdate - 73,
    'Programmer'
);

select
    departments.name                                   department_name,
    departments.location                               location,
    departments.country                                country,
    employees.name                                     employee_name,
    employees.email                                    email,
    employees.cost_center                              cost_center,
    employees.date_hired                               date_hired,
    employees.job                                      job
from
    departments,
    employees;

这是它们运行后显示的输出:

Table created.

ORA-02268: referenced table does not have a primary key

1 row(s) inserted.

1 row(s) inserted.

1 row(s) inserted.

1 row(s) inserted.

Statement processed.

ORA-00942: table or view does not exist

ORA-00942: table or view does not exist

ORA-00942: table or view does not exist

ORA-00942: table or view does not exist

ORA-00942: table or view does not exist

1 个答案:

答案 0 :(得分:3)

您的表部门没有主键,因此表 employees 中的约束会产生错误,而表 employees 则没有已创建。

您应该重构您的SQL代码,向所涉及的表中添加适当的主键并正确管理插入值:

 创建表部门(
id numeric(10)不为null
名称varchar2(255)不为null,
位置varchar2(4000),
国家varchar2(4000),
约束ID主键(id)
)
;