我正在尝试将此数据插入SQL

时间:2010-06-25 04:46:33

标签: sql sql-server sql-server-2008

我正在尝试为我创建的表创建正确的值。这是代码:

INSERT DEPARTMENTS
(Department_Id,Department_Name,Manager_Id,Location_Id)
VALUES
('D0001,D0002,D0003','Think Tank,Creators,Marketers',NULL,'L0001,L0002,L0003')
GO
INSERT EMPLOYEES
(Employee_Id,First_Name,Last_Name,Email,PhoneNumber,Hire_Date,Manager_ID,Department_Id)
VALUES
('E0001,E0002,E0003,E0004,E0005,E0006,E0007','Joe,John,Sue,Tina,Ike,Big,Speedy','Blow,Doe,Happy,Turner,Turner,Bird,Gonzales',NULL,NULL,2010/06/25,2010/06/25,2010/06/25,2010/06/25,2010/06/25,2010/06/25,2010/06/25,NULL,NULL)
GO
INSERT LOCATIONS
(Location_ID,Postal_Code,City,State_Province,Country)
VALUES
('L0001,L0002','19121,08618','Philadelphia,Trenton','PA,NJ','USA,USA')

这是错误消息: Msg 8152,Level 16,State 14,Line 2 字符串或二进制数据将被截断。 该语句已终止。 消息110,第15级,状态1,第1行 INSERT语句中的列少于VALUES子句中指定的值。 VALUES子句中的值数必须与INSERT语句中指定的列数相匹配。 Msg 8152,Level 16,State 14,Line 1 字符串或二进制数据将被截断。 声明已经终止。

我想知道我做错了什么以及正确的代码。谁能帮我吗?感谢

2 个答案:

答案 0 :(得分:3)

INSERT EMPLOYEES在语句的VALUES部分有8列和WAY超过8个值。 我不认为您了解SQL的工作原理。

作为提示,这个:

INSERT LOCATIONS
(Location_ID,Postal_Code,City,State_Province,Country)
VALUES
('L0001,L0002','19121,08618','Philadelphia,Trenton','PA,NJ','USA,USA')

应如下所示:

INSERT LOCATIONS
(Location_ID,Postal_Code,City,State_Province,Country)
VALUES
('L0001','19121','Philadelphia','PA','USA');

INSERT LOCATIONS
(Location_ID,Postal_Code,City,State_Province,Country)
VALUES
('L0002','08618','Trenton','NJ','USA');

您要插入的每一行都需要一个插入语句。

DEPARTMENTSEMPLOYEES也是错误的。

在PLURAL中命名表也是不好的做法,它们应该是单数的。 DEPARTMENTEMPLOYEELOCATION,因为每一行代表一个实体。

答案 1 :(得分:2)

你可以做这样的多个插页,

  INSERT INTO LOCATIONS
  (Location_ID,Postal_Code,City,State_Province,Country)
   VALUES
     ('L0001','19121','Philadelphia','PA','USA'),
     ('L0002','08618','Trenton','NJ','USA');