SQL数据库查询以插入多个列值

时间:2015-02-11 08:41:54

标签: sql oracle10g

如何在SQL的单个表中添加多个值?我的表看起来像这样:

Create table emp
(
     id number(5),
     name varchar(25),
     phone varchar(25)
); 

现在我想在手机栏中添加值和多部手机。怎么做?我尝试使用

insert into emp values (id, name, phone) 
values (1, lee, (23455, 67543)); 

但这不起作用

2 个答案:

答案 0 :(得分:1)

使用两个insert语句

insert into emp values (id, name,phone) values (1,'lee','23455'); 
insert into emp values (id, name,phone) values (1,'lee','67543'); 

或如果您想将这两个值存储在单行

insert into emp values (id, name,phone) values (1,'lee','23455,67543'); 

此表不是normalised。您需要将电话号码信息存储在单独的表中,或者在同一个表中使用两个不同的列。

尝试改变你的表设计。

EMP表格

CREATE TABLE emp
  (
     emp_id INT IDENTITY(1, 1) PRIMARY KEY,
     name   VARCHAR(25)
  );

电话号码表

CREATE TABLE PhoneNumber
  (
     phoneno_id INT IDENTITY(1, 1),
     emp_id     INT,
     Phone_Number int,
     Cell_Number Int,
     FOREIGN KEY (emp_id) REFERENCES emp(emp_id)
  ) 

注意: Auto increment语法可能因您使用的数据库而异。

答案 1 :(得分:0)

正确并且在关系设置中只有真正精心设计的方法是为您的手机使用单独的表(这是在SQL中特定于服务器的语法 - 可能略有不同,具体取决于您使用的具体数据库系统):

Create table emp
(
     id INT PRIMARY KEY,
     name varchar(25)
)

create table phone
(
     phoneId INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
     empid INT NOT NULL,
     phone varchar(25) NOT NULL,

     CONSTRAINT FK_Phone_Emp
       FOREIGN KEY(empid) REFERENCES dbo.emp(id)
); 

然后将员工数据插入emp

insert into emp(id, name) 
values (1, lee);

和手机进入phone

insert into phone(empid, phone) values(1, 23455);
insert into phone(empid, phone) values(1, 67543);

通过此设置,您可以对数据库进行适当的规范化,并且可以为每位员工存储任意数量的电话。