MySQL的INDEX()语法相当于在SQL Server

问题描述 投票:0回答:2

我下面一个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)
mysql sql sql-server indexing syntax
2个回答
1
投票

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

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

展望在manual我注意到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的2008+还应该支持INDEX关键字在CREATE TABLE声明..

但对于INDEX关键字的有效语法使用

CREATE TABLE test ( 
   id INT
 , INDEX index_name (id)
);

但也有其他事情错像数据类型或关键字..

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) 
);

0
投票

您可以使用语法应在任何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引擎的支持。

© www.soinside.com 2019 - 2024. All rights reserved.