【问题标题】:creating primary keys with constraints or not in mysql在mysql中创建带约束或不带约束的主键
【发布时间】:2016-12-01 03:50:40
【问题描述】:

在 mysql 中,说我有:

create table users(
id not null
)

假设我需要将 id 作为主键。有什么区别:

create table users(
id primary key not null
)

create table users(
id not null
primary key (id))

create table users(
id not null
constraint pk primary key (id))

在这种情况下,我一直在寻找约束的含义,但我只找到了如何使用它们,而不是它实际上是什么。

【问题讨论】:

    标签: mysql constraints primary-key


    【解决方案1】:

    主键是not nullunique。所以,这与主键非常非常相似:

    create table users (
        id int not null unique
    )
    

    主键的一个附加特性是它通常也是表的聚集索引。

    主键声明一个约束。它具有以下属性:

    • 列是not null
    • 列是唯一的。
    • 每个表只允许声明一个主键(尽管主键中可以有多个列)。

    此外,主键列通常形成聚集索引。

    除了第三个条件,可以使用多个约束声明来声明这些。

    【讨论】:

    • 那么“约束”有什么用呢?抱歉,我对 sql 语句了解不多。但似乎我可以使用主键而不必使用“约束名称主键(列)”语法
    • 约束可以是外键、检查、主键、唯一或非空约束。使用这些是为了使数据库可以在数据上强制执行此类声明的属性。 (注意 MySQL 不强制检查约束。)
    • 这是否意味着“约束名称主键(列)”只是列主键的语法糖不为空?
    • @morbidCode 。 . .差不多,但不完全。 “主键”几乎是“唯一非空”的语法糖。但是,表中可以有多个“唯一非空”列,但只有一个“主键”。
    猜你喜欢
    • 2015-10-22
    • 1970-01-01
    • 2015-12-10
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    相关资源
    最近更新 更多