Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server中的MySQL INDEX()语法等效_Mysql_Sql_Sql Server_Indexing_Syntax - Fatal编程技术网

SQL Server中的MySQL INDEX()语法等效

SQL Server中的MySQL INDEX()语法等效,mysql,sql,sql-server,indexing,syntax,Mysql,Sql,Sql Server,Indexing,Syntax,我正在关注一个PHP工作簿,其中一个练习要求我使用以下MySQL代码创建一个包含列的表 CREATE TABLE messages ( message_id INT UNSIGNED NOT NULL AUTO_INCREMENT, parent_id INT UNSIGNED NOT NULL DEFAULT 0, forum_id TINYINT UNSIGNED NOT NULL, user_id MEDIUMINT UNSIGNED NOT NUL

我正在关注一个PHP工作簿,其中一个练习要求我使用以下MySQL代码创建一个包含列的表

CREATE TABLE messages ( 
    message_id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
    parent_id INT UNSIGNED NOT NULL DEFAULT 0, 
    forum_id TINYINT UNSIGNED NOT NULL, 
    user_id MEDIUMINT UNSIGNED NOT NULL, 
    subject VARCHAR(100) NOT NULL,
    body LONGTEXT NOT NULL, 
    date_entered DATETIME NOT NULL, 
    PRIMARY KEY (message_id), 
    INDEX (parent_id), 
    INDEX (forum_id),
    INDEX (user_id),
    INDEX (date_entered) 
);
问题是在我工作的地方,他们使用Microsoft SQL Server,因此语法不同


我可以使用的等效SQL Server语法是什么

INDEX (parent_id), 
INDEX (forum_id),
INDEX (user_id),
INDEX (date_entered)

我可以使用的等效SQL Server语法是什么

 INDEX (parent_id), 
 INDEX (forum_id),
 INDEX (user_id),
 INDEX (date_entered)
我注意到了BNF表格

<column_index> ::=   
 INDEX index_name [ CLUSTERED | NONCLUSTERED ]  
    [ WITH ( <index_option> [ ,... n ] ) ]  
    [ ON { partition_scheme_name (column_name )   
         | filegroup_name  
         | default   
         }  
    ]   
    [ FILESTREAM_ON { filestream_filegroup_name | partition_scheme_name | "NULL" } ]  
但是还有其他错误,比如数据类型或关键字

SQL server的正确SQL代码为

CREATE TABLE messages ( 
 message_id INT identity(1, 1), 
 parent_id INT NOT NULL DEFAULT 0, 
 forum_id TINYINT NOT NULL, 
 user_id INT NOT NULL, 
 subject VARCHAR(100) NOT NULL,
 body TEXT NOT NULL, 
 date_entered DATETIME NOT NULL, 
 PRIMARY KEY (message_id), 
 INDEX parent_id (parent_id), 
 INDEX forum_id (forum_id),
 INDEX user_id (user_id),
 INDEX date_entered (date_entered) 
);

您可以使用在任何SQL引擎中都可以使用的语法,例如

CREATE TABLE messages ( 
    message_id INT, 
    parent_id INT NOT NULL DEFAULT 0, 
    forum_id TINYINT NOT NULL, 
    user_id INT NOT NULL, 
    subject VARCHAR(100) NOT NULL,
    body TEXT NOT NULL, 
    date_entered DATETIME NOT NULL, 
    PRIMARY KEY (message_id)
)
然后分别创建其他索引:

CREATE INDEX parent_id_idx ON messages (parent_id))
等等


所有SQL引擎都应该支持此语法。

您有错误吗?显示确切的错误消息是,我在“索引”附近得到了错误的语法。如果这是作为表提示的一部分,那么现在需要一个WITH关键字和括号。有关正确的语法,请参阅SQL Server联机丛书。当RDBMS供应商之间出现不一致时,您遇到了冰山一角。仍然需要消息的标识直到需要消息的标识确实@JoelCoehoorn谢谢忘记那个标识。
CREATE INDEX parent_id_idx ON messages (parent_id))