在SQL Server Management Studio中执行查询

时间:2014-07-19 05:17:16

标签: sql sql-server ssms

这个非常简单的查询我试图在SQL Server Management Studio中执行。但它给出了错误:

CREATE TABLE `contact` (
  `contact_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(45) NOT NULL,
  `email` varchar(45) NOT NULL,
  `address` varchar(45) NOT NULL,
  `telephone` varchar(45) NOT NULL,
  PRIMARY KEY (`contact_id`)
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8

错误是:

  

Msg 102,Level 15,State 1,Line 3
  '''附近的语法不正确。

我也试过替换 with'`但仍然没有帮助

3 个答案:

答案 0 :(得分:4)

反引号(`)字符仅用于MySql。这不标准。 Sql Server是一个完全不同的动物。您需要使用方括号([] - 也不是标准的)来使用Sql Server封装表名和列名。 Sql Server还支持双引号("),它们是SQL标准的一部分,但由于某些原因不太常见。

当我在它时,ENGINE和AUTO_INCREMENT以及CHARSET子句也是特定于MySql的。

试试这个:

CREATE TABLE contact (
  contact_id int IDENTITY(25,1) NOT NULL PRIMARY KEY,
  [name] varchar(45) NOT NULL,
  email varchar(45) NOT NULL,
  "address" varchar(45) NOT NULL,
  telephone varchar(45) NOT NULL
)

答案 1 :(得分:1)

在tsql中

CREATE TABLE contact (
  contact_id int identity(0,25) NOT NULL,
  name nvarchar(45) NOT NULL,
  email nvarchar(45) NOT NULL,
  address nvarchar(45) NOT NULL,
  telephone nvarchar(45) NOT NULL

  CONSTRAINT contact_PK PRIMARY KEY (contact_id)
)

您无法指定引擎。

identity(0,25)表示初始值= 0,增量= 25

您没有为表格指定字符集,您可以将各列声明为varchar或nvcarchar - n代表unicode。您还可以为每列指定归类序列。

如果您想要一个不规则的列名(关键字,嵌入空格等),请将列名引用为[列名] - 如果您有选择,请不要使用不规则的列名,它只是让事情变得痛苦。

答案 2 :(得分:0)

试试这样:

CREATE TABLE contact (
  contact_id[int] IDENTITY(1,1) NOT NULL,
  name varchar(45) NOT NULL,
  email varchar(45) NOT NULL,
  address varchar(45) NOT NULL,
  telephone varchar(45) NOT NULL,
  PRIMARY KEY (contact_id)
) 

希望这可以帮助你。