我正在尝试为我创建的表创建正确的值。这是代码:
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 字符串或二进制数据将被截断。 声明已经终止。
我想知道我做错了什么以及正确的代码。谁能帮我吗?感谢
答案 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');
您要插入的每一行都需要一个插入语句。
DEPARTMENTS
和EMPLOYEES
也是错误的。
在PLURAL中命名表也是不好的做法,它们应该是单数的。
DEPARTMENT
,EMPLOYEE
,LOCATION
,因为每一行代表一个实体。
答案 1 :(得分:2)
你可以做这样的多个插页,
INSERT INTO LOCATIONS
(Location_ID,Postal_Code,City,State_Province,Country)
VALUES
('L0001','19121','Philadelphia','PA','USA'),
('L0002','08618','Trenton','NJ','USA');