这个 INSERT 语句会起作用吗?教科书上的勘误?

Sal*_*us2 2 sql-server errors

我正在参加 Microsoft 认证 70-461 的模拟测试,并想确认我所看到的是否是错误(这是来自 Microsoft Press 的官方书籍,第九次印刷。我在现有勘误表中没有看到这一点)。

题:

您正在向Hovercraft数据库添加表。您可以使用以下语句创建表:

  Create Table Hovercraft.Testing
  ( TestIdentifier uniqueidentifier
  DEFAULT NEWSEQUENTIALID() PRIMARY KEY,
  HullId tinyint NOT NULL,
  TestDate date NOT NULL,
  Registration nvarchar(8) NOT NULL,
  Notes nvarchar(max)
  )
Run Code Online (Sandbox Code Playgroud)

您可以使用以下哪个语句向该表中插入数据?(每个正确答案都提供一个完整的解决方案。选择两个。)

选择是:

  1. INSERT INTO Hovercraft.Testing (Notes, HullID, TestDate, Registration,) VALUES (N'Hovercraft requires maintenance.', 142, '20120715', N'AAA320')

  2. INSERT INTO Hovercraft.Testing (HullID, TestDate, Registration, Notes) VALUES (124, '20120722', N'AAA321', N'Hovercraft in good condition. Next service in six months' time')

  3. INSERT INTO Hovercraft.Testing (HullID, TestDate, Registration, Notes) VALUES (247, '20120722', N'ABCD54321', N'Hovercraft in good condition. Next service in three months' time')

  4. INSERT INTO Hovercraft.Testing (Notes, HullID, TestDate, Registration,) VALUES (N'Hovercraft requires maintenance.', 842, '20120709', N'AAB121')

答案关键声称前两个是正确的。但是,“月”一词中的附加撇号不应该会导致语句错误吗?

如果这不是确认这一点的正确论坛,我提前道歉。

Nic*_*Nic 6

你是对的,第二个会由于额外的报价而失败。这可能只是由于过于激进的语法检查器造成的印刷错误,或者实际上它可能是撇号而不是引号,并且字体轮廓难以确定。

  • 第一个会成功。
  • 由于单引号,第二个会失败(如果是引号)
  • 由于注册长度超过 8 个字符,第三个将失败(如果是引号,则为引号)
  • 第四个会失败,因为HullId超出了范围tinyint

旁注:他们为什么要将 aHovercraft schema放入Hovercraft数据库超出了我的理解,这是荒谬设计的一个很好的例子。