MySQL——指“MySQL”的含义;主键“&引用;“唯一键”;及;“关键”;在创建表时一起使用时
如果将MySQL——指“MySQL”的含义;主键“&引用;“唯一键”;及;“关键”;在创建表时一起使用时,mysql,sql-server,primary-key,unique-key,Mysql,Sql Server,Primary Key,Unique Key,如果将主键、唯一键和键放在MySQL中的单个创建表语句中,有人能解释一下它们的用途吗 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),
主键
、唯一键
和键
放在MySQL中的单个创建表
语句中,有人能解释一下它们的用途吗
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唯一和主键用于标识行。表中只能有一个主键,但有一个或多个唯一键。关键是索引 有关更多详细信息,请查看
要将mysql转换为mssql,请尝试此操作,并查看一个键只是一个普通索引。一种超越简化的方法是把它想象成图书馆的卡片目录。它为MySQL指明了正确的方向 唯一键也用于提高搜索速度,但它有一个约束,即不能有重复项(没有两个x和y,其中x不是y,x==y) 委员会解释如下: 唯一索引创建一个约束,使索引中的所有值 必须是不同的。如果您尝试添加带有 与现有行匹配的键值。此约束不适用 设置为除BDB存储引擎以外的空值。对于其他发动机,a “唯一索引”允许可以包含多个空值的列 无效的如果为唯一索引中的列指定前缀值, 列值在前缀中必须是唯一的 主键是“特殊”唯一键。它基本上是一个唯一的键,只是用来识别某些东西 本手册解释了索引的一般使用方法: 在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了,显然我忘记了很多:)。为了补充其他答案,给出了以下解释:
通常是键
的同义词。键属性索引
主键可以 当在列定义中给出时,也可以指定为仅
。这 为与其他数据库系统兼容而实现键
索引创建一个约束,使索引中的所有值 必须是不同的。如果您尝试添加带有 与现有行匹配的键值。对于所有发动机,aUNIQUE
索引允许对可以包含唯一
的列使用多个NULL
值NULL
- 主键是唯一的索引,必须在其中定义所有键列
as
。如果它们没有显式声明为不为空
,则MySQL 隐式地(无声地)声明它们。一张桌子只能有一张桌子notnull
。主键
的名称始终是主键
,因此 不能用作任何其他类型索引的名称主键
相关:基本上,
键
与索引
同义@Paul Bellora,你的解释比我的更清楚。很好,我只是引用了文档,没有看到第二部分关于转换的内容。我认为科尔宾的回答很好地概括了这一点。很好的解释!代码也运行良好。非常感谢你!没问题。很高兴我能帮忙:)。谢谢你给我指出手册中正确的位置!伟大的这个链接将引用主键中MySQL和SQL的类型。与其他数据库系统的兼容性?还有哪些数据库管理系统使用“键”这个词来表示根本不是键的东西(索引)?我一直认为这只是MySQL的一点奇怪之处——MySQL的作者实际上不知道键是什么:)每个后续定义是否包含前一个定义的所有属性。“唯一的钥匙”也是“钥匙”吗?