约的目的谁能解释PRIMARY KEY,UNIQUE KEY并且KEY,如果是在一个单一的放在一起CREATE TABLE在MySQL的声明?
PRIMARY KEY
UNIQUE KEY
KEY
CREATE TABLE
CREATE TABLE IF NOT EXISTS `tmp` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uid` varchar(255) NOT NULL, `name` varchar(255) NOT NULL, `tag` int(1) NOT NULL DEFAULT '0', `description` varchar(255), PRIMARY KEY (`id`), UNIQUE KEY `uid` (`uid`), KEY `name` (`name`), KEY `tag` (`tag`) ) ENGINE=InnoDB AUTO_INCREMENT=1 ;
如何将此查询转换为MSSQL?
密钥只是普通索引。一种简化的方法是将其视为图书馆中的卡片目录。它为MySQL指明了正确的方向。
唯一键还用于提高搜索速度,但是它具有以下约束:不能有重复项(不存在两个x和y,其中x不是y且x == y)。
该手册对它的解释如下:
UNIQUE索引会创建约束,以使索引中的所有值都必须不同。如果您尝试添加键值与现有行匹配的新行,则会发生错误。除BDB存储引擎外,此约束不适用于NULL值。对于其他引擎,UNIQUE索引允许可以包含NULL的列使用多个NULL值。如果为UNIQUE索引中的列指定前缀值,则列值在前缀中必须唯一。
主键是“特殊”唯一键。它基本上是唯一的密钥,除了用于识别某些东西。
该手册说明了一般如何使用索引:此处。
在MSSQL中,概念相似。有索引,唯一约束和主键。
未经测试,但我相信等效的MSSQL是:
CREATE TABLE tmp ( id int NOT NULL PRIMARY KEY IDENTITY, uid varchar(255) NOT NULL CONSTRAINT uid_unique UNIQUE, name varchar(255) NOT NULL, tag int NOT NULL DEFAULT 0, description varchar(255), ); CREATE INDEX idx_name ON tmp (name); CREATE INDEX idx_tag ON tmp (tag);
编辑:上面的代码经过测试是正确的;但是,我怀疑这样做有更好的语法。自从我使用SQL Server以来已有一段时间了,显然我已经忘记了很多:)。