2015-02-11 86 views
0

如何在SQL的表中的单列中添加多个值?我的表看起来像这样:SQL datable查询插入多个列值

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

现在我想添加在手机列值和多部手机。怎么做?我试着用

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

,但是这是不工作

+3

这不是SQL的工作原理。每列只能有一个条目。请先参加基本教程。 – 2015-02-11 08:43:25

+0

然后设计不当。从emp表中分离出电话号码。 – SMA 2015-02-11 08:43:57

+0

要么有两个电话没有列(工作单元格),要么只有另一个电话号码表。 – jarlh 2015-02-11 08:44:16

回答

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语法可以根据你所使用的数据库的不同而不同。

+0

您忘了提及一个正确的主键,您不能为用户存储两行。 – jarlh 2015-02-11 08:54:41

+0

这意味着我需要首先对表格进行标准化?我怎么做 ??帮助我 – Lee 2015-02-11 08:59:06

+1

请不要提倡在单个列中使用**逗号分隔的**值!这是一团糟 - 它会回来并困扰着你 - 比早些时候更早.....如果你需要多个值 - 把它们放在单独的链接表中的行中 - 这是做它的关系方式! – 2015-02-11 09:00:30

0

适当,只有真正的精心设计方式在关系设置要做到这一点是使用单独表为您的手机(这是SQL Server特定的语法 - 它可能会略有不同,这取决于在其具体的数据库系统,您正在使用):

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); 

有了这个设置,您可以为数据库正确的正常化,并可以存储多达电话,你需要为每个员工。

+0

不要忘记emp表的主键,而不是名称和phoneno列的null。 phoneid声明不符合ANSI SQL标准。 (没有指定dbms。)在(empid,phone)上添加唯一约束。 – jarlh 2015-02-11 09:10:56

+0

@jarlh:对不起,是的,我在这里使用了SQL Server语法(因为这就是我每天都在使用的,并且很清楚)。 – 2015-02-11 09:11:49

+0

非常感谢:)我会试试这个:) – Lee 2015-02-11 09:16:08