【问题标题】:SQL Beginner trying to insert data on tablesSQL初学者试图在表上插入数据
【发布时间】:2019-11-13 20:42:08
【问题描述】:

我已经开始了学习 SQL 的旅程,但是我在创建数据并将数据插入表中时遇到了麻烦。这是我尝试过的代码,我收到一条错误消息,指出没有足够的值。我正在使用 Oracle。

Create table project
(
    proj_id number(10),
    medic_name varchar2(10),
    purpose varchar2(12),
    start_date date,
    end_date date,
    pi_id null,

    CONSTRAINT pkprojid primary key (proj_id),
    CONSTRAINT fkproject foreign key (pi_id) references researcher
);

alter session set nls_date_format = 'mm/dd/yyyy';

Insert into project values (PR001, 'Medic1', 'heart', '09/01/2017', '07/31/2019'); 
Insert into project values (PR002, 'Medic1', 'diabetes', '10/01/2016', '07/31/2020);
Insert into project values (PR003, 'Medic3', 'lung', '11/1/2014', '12/31/2020');
Insert into project values (PR004, 'Medic3', 'blood', '01/10/2017', '07/31/2019');
Insert into project values (PR005, 'Medic5', 'blood', '07/10/2018', '01/31/2020');

alter session set nls_date_format = 'mm/dd/yyyy';

【问题讨论】:

  • PRxxx 不是数字。 2020 年后第 2 行缺少单引号

标签: sql oracle insert


【解决方案1】:

插入项目值(PR001、'Medic1'、'heart'、'09/01/2017'、'07/31/2019');

问题:

  • 您的表有 6 列,您只传递了 5 列进行插入;似乎您缺少最后一列 (pi_id),因此您收到了错误消息。如果你想跳过最后一列(这是可能的,因为它被声明为可以为空),你可以在插入时明确列出该列

  • 第一列 (proj_id) 是 number 数据类型; PR001 不是数字(也不是字符串,因为它没有被引用:这是一个语法错误);你的意思是1 吗?或者,如果要插入字符串值,则需要将列proj_id 的数据类型更改为varchar(N)N 为字符串的最大长度,以字节为单位)。

这是一个insert 语句,应该适用于您当前的表定义:

insert into project(proj_id, medic_name, purpose, start_date, end_date) 
values (1, 'Medic1', 'heart', '09/01/2017', '07/31/2019'); 

注意:第二个insert 语句的日期末尾缺少引号;我认为这是一个错字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 2017-08-20
    • 2011-06-10
    • 2011-12-12
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    相关资源
    最近更新 更多