2015-02-11 122 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