• Mysql 主键


    【1】主键

    主键(PRIMARY KEY),也称“主键约束”。

    MySQL主键约束是一个列或者多个列的组合,其值能唯一地标识表中的每一行。

    这样的一列或多列称为表的主键,通过它可以强制表的实体完整性。

    【2】选取设置主键约束的字段

    主键约束即在表中定义一个主键来唯一确定表中每一行数据的标识符。

    主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。

    【3】主键规则

    (1)每个表有且仅有一个主键。

    如下示例:

    (a)创建表

    # 创建表
    DROP TABLE IF EXISTS students;
    CREATE TABLE `students` (
      `sId` INT(20) UNSIGNED NOT NULL,
      `sName` VARCHAR(100) NOT NULL,
      `sAge` INT(10) NOT NULL,
      `sAddr` VARCHAR(200) DEFAULT NULL,
      `sGrade` INT(10) DEFAULT NULL,
      `sStuId` VARCHAR(20) DEFAULT NULL,
      `sSex` INT(10) UNSIGNED DEFAULT NULL
    ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4

    执行,创建表成功。

    (b)创建主键1

    # 创建主键1
    ALTER TABLE students ADD PRIMARY KEY (sId, sStuId);

    执行,创建主键1成功。

    (c)创建主键2

    # 创建主键2
    ALTER TABLE students ADD PRIMARY KEY (sId, sName);

    执行,创建主键2失败,错误提示

    查询:ALTER TABLE students ADD PRIMARY KEY (sId, sName)错误代码: 1068
    Multiple primary key defined

    (2)唯一性原则。主键值必须唯一地标识表中的每一行,且不能为NULL,即表中不可能存在两行数据有相同的主键值。

    上一步,我们已经为表建立了主键,查询主键建立结果:

    # 查询索引
    SHOW INDEX FROM students;

    查询主键结果:

    现在,我们向表中添加数据1:

    # 添加数据1
    INSERT INTO students(sId, sNAME, sAge, sAddr, sGrade, sStuId, sSex)
    VALUES (1, 'wangjun', 22, 'weinan', NULL, 6, 1)

    如上,数据1添加成功。再添加数据2:

    # 添加数据2
    INSERT INTO students(sId, sNAME, sAge, sAddr, sGrade, sStuId, sSex)
    VALUES (2, 'liujie', 20, 'xian', 8, NULL, 0)

    执行失败,提示如下:

    Column 'sStuId' cannot be null

    说明:即使是复合主键,主键的所有列值均不能为NULL。

    (3)一个列名只能在复合主键列表中出现一次。

    删除上表的主键,重新创建主键,执行SQL如下:

    # 删除主键
    ALTER TABLE students DROP PRIMARY KEY;
    # 创建主键sStuId
    ALTER TABLE students ADD PRIMARY KEY (sId, sStuId, sStuId);

    执行错误,错误提示:

    查询:ALTER TABLE students ADD PRIMARY KEY (sId, sStuId, sStuId)错误代码: 1060
    DUPLICATE COLUMN NAME 'sStuId'

    如下,说明复合主键的列只能出现一次。

    (4)最小化原则。复合主键不能包含不必要的多余列。即当把复合主键的某一列删除后,如果剩下的列构成的主键仍然满足唯一性原则,那么这个复合主键是不正确的。

    Good Good Study, Day Day Up.

    顺序 选择 循环 总结

  • 相关阅读:
    ubuntu11.04更改默认JDK
    10个实用的jQuery交互/通信插件和教程
    jquery 使用方法
    在没有安装 ASP.NET MVC3 的服务器上运行 MVC3
    固定 vs. 流动 vs. 弹性:哪种布局更适合你?[SM]
    提升设计品质的8种布局方案[SM]
    Ubuntu 手动安装JDK
    十个简单好用的设计技巧[SM]
    jQuery VSDoc下载地址
    Ubuntu 配置Apache+PHP+MySQL
  • 原文地址:https://www.cnblogs.com/Braveliu/p/10892392.html
Copyright © 2020-2023  润新知