知识库 知识库
首页
  • Hyperskill - Java

    • Java basic
    • Java OOP
    • 应知
    • 扩展
    • IO & Stream
    • Error & Exception
    • Algorithm & Data structure
    • Design pattern
    • Web
    • Spring boot
  • 练习题

    • 选择题 & 填空题
    • 代码题
  • Frank - Java与生活 (OOP)

    • 参考资料
    • Java基础
    • OOP上半部分
    • OOP下半部分
  • Frank - Java API进阶

    • Base API
    • Unit Test and main function
  • 学习笔记
  • 学习笔记

    • 数据库
  • Frank - MySQL删库跑路

    • 安装、连接、配置
    • 基本操作——数据库
    • 基本操作——表
    • 基本操作——数据
    • 数据类型
    • 列属性完整性
    • 数据库设计思维
    • 单表查询
    • 多表查询
  • 学习笔记

    • 其它
  • Frank - Linux现代方法

    • 必知
    • 命令
    • 技巧
  • 技术文档
  • Git
  • GitHub技巧
  • 前端
  • Khan Academy - 语法
  • Monthly
  • 阅读
  • Others
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
收藏
  • 标签
  • 归档
GitHub (opens new window)

Jim FuckPPT

Java小学生
首页
  • Hyperskill - Java

    • Java basic
    • Java OOP
    • 应知
    • 扩展
    • IO & Stream
    • Error & Exception
    • Algorithm & Data structure
    • Design pattern
    • Web
    • Spring boot
  • 练习题

    • 选择题 & 填空题
    • 代码题
  • Frank - Java与生活 (OOP)

    • 参考资料
    • Java基础
    • OOP上半部分
    • OOP下半部分
  • Frank - Java API进阶

    • Base API
    • Unit Test and main function
  • 学习笔记
  • 学习笔记

    • 数据库
  • Frank - MySQL删库跑路

    • 安装、连接、配置
    • 基本操作——数据库
    • 基本操作——表
    • 基本操作——数据
    • 数据类型
    • 列属性完整性
    • 数据库设计思维
    • 单表查询
    • 多表查询
  • 学习笔记

    • 其它
  • Frank - Linux现代方法

    • 必知
    • 命令
    • 技巧
  • 技术文档
  • Git
  • GitHub技巧
  • 前端
  • Khan Academy - 语法
  • Monthly
  • 阅读
  • Others
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
收藏
  • 标签
  • 归档
GitHub (opens new window)
  • 学习笔记

  • Frank - MySQL删库跑路

    • 安装连接以及配置

    • 基本操作——数据库

    • 基本操作——表

    • 基本操作——数据

    • 数据类型

    • 列属性完整性

      • 列属性问题
      • 主键 primary key
        • 作用
        • 要点
        • 主键的添加、删除
          • 添加主键
          • 复合主键
          • 删除主键
        • 选择主键
      • 唯一键 unique key
      • 外键 foreign key
      • 外键的三种操作
      • 外键的置空、级联操作
      • 数据库完整性
      • SQL内注释和代码注释
    • 数据库设计思维

    • 单表查询

    • 多表查询

  • MySQL
  • Frank - MySQL删库跑路
  • 列属性完整性
Jim
2022-04-15
目录

主键 primary key

# 主键 primary key

# 作用

  • 保证数据的完整性,没有纰漏

  • 加快查询数据的速度

# 要点

  1. 一个表里只能有一个主键,但一个主键可以由多个字段组成。
  2. 主键不仅仅局限在一张表里,它可能是其它表使用数据的依据。在其它表里它就不叫主键了。
  3. 每条记录的主键值是唯一的,不能重复
  4. 主键给谁一定要给清楚。
  5. 主键不能为 null 值,除非有 auto_increment 属性。

# 主键的添加、删除

# 添加主键

  • 创建表时添加

    创建表的时候,为避免混淆,建议直接将 primary key 写在字段后面。虽然也可以写在更后面,但不推荐。

    mysql> create table if not exists test(
    -> id int primary key,
    -> name varchar(30)
    -> );
    
    1
    2
    3
    4
    mysql> create table if not exists test(
        -> id int,
        -> name varchar(30),
        -> primary key (id)
        -> );
    
    1
    2
    3
    4
    5
    mysql> desc test;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id    | int(11)     | NO   | PRI | NULL    |       |
    | name  | varchar(30) | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    
    1
    2
    3
    4
    5
    6
    7
  • 后期添加主键

    创建表的时候没设置主键,后期也是可以调整的。

    alter table <TableName> add primary key (<FieldName>);
    
    1

    注意

    在实际开发过程中,要设计一个关系型数据库,首先会把百分之八九十的结构都设计好,后期改变结构的情况是少之又少的。结构这东西牵一发而动全身,很麻烦的。

# 复合主键

alter table <TableName> add primary key (<FieldName1>,<FieldName2>[,<FieldName3>...])
1

# 删除主键

alter table <TableName> drop primary key;
1

# 选择主键

组合键基本上作用不大,只要有像身份证号、学号这种唯一的数据,谁TM还用组合键?

最好不要选择字符串类型作为主键,不然很不好处理,通常都是选择数字类型字段作为主键。

组和键(复合主键)也不是一无是处,如,一个网站、论坛的用户的昵称不能重名就可以使用组合键,但这样的话扩展性就没有那么好啦。

编辑 (opens new window)
上次更新: 2022/09/26, 16:55:15
列属性问题
唯一键 unique key

← 列属性问题 唯一键 unique key→

最近更新
01
《挪威的森林》
04-14
02
青钢影
04-14
03
Processing strings
02-18
更多文章>
Theme by Vdoing | Copyright © 2022-2023 Jim Frank | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式