zoukankan      html  css  js  c++  java
  • 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.

    顺序 选择 循环 总结

  • 相关阅读:
    C++指针使用方法解惑
    2007中国手机网络游戏TOP10和2006中国手机网络游戏回顾
    美丽的诗
    三分钟就知道谁是你最爱的人
    基于先进思想指导的信息化
    Nginx 常见应用技术指南
    Web开发与设计之Google兵器谱Web开发与设计利器
    openssl建立证书,非常详细配置ssl+apache
    Nginx 二级子域名完美方案
    正则表达式30分钟入门教程
  • 原文地址:https://www.cnblogs.com/Braveliu/p/10892392.html
Copyright © 2011-2022 走看看