【问题标题】:What to use for SQL Server instead of "Key"?SQL Server 用什么代替“密钥”?
【发布时间】:2010-09-29 03:31:16
【问题描述】:

我有一个我使用的 MySQL 查询脚本,它可以工作。

我正在尝试在 Microsoft SQL Server 中执行相同的查询,但有一件事我不明白。

MySql 使用“key”来定义一个由不同字段组成的键。

在 SQL Server 中做同样事情的方法是什么?

谢谢!

-阿迪娜

【问题讨论】:

    标签: sql mysql sql-server


    【解决方案1】:

    在 MySQL 中,关键字 KEY 只是 INDEX 的同义词。以下两个是等价的:

    CREATE TABLE foo (
      id     SERIAL PRIMARY KEY,
      ctime  DATETIME,
      KEY ctkey (ctime)
    );
    
    CREATE TABLE foo (
      id     SERIAL PRIMARY KEY,
      ctime  DATETIME,
      INDEX ctidx (ctime)
    );
    

    在 Microsoft SQL Server 中,最接近的等价物是 INDEX。据我所知,要在 Microsoft SQL Server 中的列上创建索引,您可以使用 CREATE INDEX。您还可以创建约束来构建索引作为CREATE TABLE 语句的一部分,但如果您只需要索引,请使用CREATE INDEX

    CREATE TABLE foo (
      id     BIGINT IDENTITY PRIMARY KEY,
      ctime  DATETIME
    );
    
    CREATE INDEX ctidx ON foo(ctime);
    

    另请参阅CREATE INDEX 上的文档。

    【讨论】:

      【解决方案2】:

      您可以在 TSQL(SQL 服务器的查询语言)中声明由多列组成的主键

      ALTER TABLE product
          ADD CONSTRAINT prim_prod PRIMARY KEY(product_foo, product_bar)
      

      如果你使用SQL Server Management studio,也可以通过“修改表”来实现。

      【讨论】:

      • 嗯...我以为只能有一个主键?
      • 主键只有一个,但可以由多列组成。这样 product_foo 和 product_bar 本身不必是唯一的,但一起考虑它们必须是唯一的。我总是更喜欢单字段主键,但这是可能的。
      • 是的,只允许一个主键。但是您可以从没有主键的表开始。
      • 这种类型的主键称为复合键,这是一篇很好的博客文章,描述了您可以实现的各种类型的 PK。 weblogs.sqlteam.com/jeffs/archive/2007/08/23/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-12
      • 2011-06-26
      • 2019-06-15
      • 1970-01-01
      相关资源
      最近更新 更多