热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL5.7学习指南:SQLyog中的主键、列属性和数据类型

本文介绍了MySQL5.7中主键(PrimaryKey)和自增(Auto-Increment)的概念,以及如何在SQLyog中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。

在 MySQL 5.7 中,主键(Primary Key)和自增(Auto-Increment)是数据库设计中非常重要的概念。本文将详细介绍这些概念,并结合 SQLyog 工具进行实际操作。

一、主键(Primary Key)与自增(Auto-Increment)

1. 什么是主键?

主键是一个表中的唯一标识符,用于确保每一行数据的唯一性。当创建一个表时,可以将某个字段设置为主键。例如,在学生表中,学号是每个学生的唯一标识,因此可以将学号设置为主键。

2. 主键的作用

主键的主要作用是保证数据的唯一性和完整性,使得我们可以安全地更改或删除表中指定的某一行。MySQL 会将主键单独存储为一个索引,以便于后续的高效查询。

3. 主键的设计原则

  • 唯一性:主键值必须唯一,不允许重复。
  • 引用性:主键可以被其他表作为外键引用。
  • 单一性:一个表中只能有一个主键。
  • 非空性:主键值不能为空。

4. 联合主键

联合主键是指由多个字段组合而成的主键。例如,在采购手机的表中,品牌商、版本和采购配置三个字段组合在一起可以唯一标识一个手机。

5. 自增(Auto-Increment)

自增是指当插入数据时,MySQL 自动生成一个唯一的 ID。通常情况下,我们会将主键字段设置为自增,以简化数据插入操作。自增的起点默认为 1,如果表中有数据,则从上一个最大值开始。过号作废,不会重复。

二、数据类型

在 MySQL 中,向表添加一列时,需要指定列的数据类型。MySQL 的数据类型大致可以分为以下几类:

分类 典型 更多
整数 int(4字节) tinyint,smallint,int,bigint,...
字符串 varchar(可变长度字符串,使用时指定最大长度,如:5,19,21,...) char(固定长度字符串32),varchar,...
浮点数 double(8字节) double,float(4字节),...
日期时间 datetime(日期时间,如:2018-6-7 14:07:54) date(日期),time(时间),datetime,timestamp,...
大块数据 text / blob(二进制大对象) tinytext,text(65KB),mediumtext(16MB),longtext(4GB),blob(存储大段字节数据),...
三、列的属性

1. 列名的命名规范

推荐的命名规范包括:

  • 不要使用 SQL 关键词,如:database,table,...
  • 使用有意义的单词或简写,如:realName,storePath,...
  • 第一个单词小写,与 Java 兼容,减少麻烦。

2. 列的属性

a. 长度(Length)

  • 对于 varchar / text 字段,需要设置最大长度。
  • 不区分中英文,按字符数统计。
  • 太长的字符串不适合用 varchar 存储(65K),varchar(512) 和 varchar(1024) 实质没有差别。
  • 对于其他类型,不需要设置长度(意义不大),例如,int(4) 表示最小显示宽度为 4,不足时凑空格或 0(需勾选 ZeroFill 属性)。

b. 非空(Not NULL)

  • 空值 NULL:指这一列的值尚未设置。
  • 当一列设置为“非空”时,表示该列不允许空值。

c. 默认值(Default Value)

默认值是指当添加一行时,若某列的值未设置,则自动填一个默认值。


推荐阅读
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 本文介绍了一个基于 Java SpringMVC 和 SSM 框架的综合系统,涵盖了操作日志记录、文件管理、头像编辑、权限控制、以及多种技术集成如 Shiro、Redis 等,旨在提供一个高效且功能丰富的开发平台。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 解决TensorFlow CPU版本安装中的依赖问题
    本文记录了在安装CPU版本的TensorFlow过程中遇到的依赖问题及解决方案,特别是numpy版本不匹配和动态链接库(DLL)错误。通过详细的步骤说明和专业建议,帮助读者顺利安装并使用TensorFlow。 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • 本文介绍了解决在Windows操作系统或SQL Server Management Studio (SSMS) 中遇到的“microsoft.ACE.oledb.12.0”提供程序未注册问题的方法,特别针对Access Database Engine组件的安装。 ... [详细]
  • 本文详细介绍了福昕软件公司开发的Foxit PDF SDK ActiveX控件(版本5.20),并提供了关于其在64位Windows 7系统和Visual Studio 2013环境下的使用方法。该控件文件名为FoxitPDFSDKActiveX520_Std_x64.ocx,适用于集成PDF功能到应用程序中。 ... [详细]
  • JavaScript 中创建对象的多种方法
    本文详细介绍了 JavaScript 中创建对象的几种常见方式,包括对象字面量、构造函数和 Object.create 方法,并提供了示例代码和属性描述符的解释。 ... [详细]
  • 本文详细介绍了如何使用 PHP 接收并处理微信支付的回调结果,确保支付通知能够被正确接收和响应。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 使用PHP实现网站访客计数器的完整指南
    本文详细介绍了如何利用PHP构建一个简易的网站访客统计系统。通过具体的代码示例和详细的解释,帮助开发者理解和实现这一功能,适用于初学者和有一定经验的开发人员。 ... [详细]
  • 离线安装Grafana Cloudera Manager插件并监控CDH集群
    本文详细介绍如何离线安装Cloudera Manager (CM) 插件,并通过Grafana监控CDH集群的健康状况和资源使用情况。该插件利用CM提供的API接口进行数据获取和展示。 ... [详细]
  • vivo Y5s配备了联发科Helio P65八核处理器,这款处理器采用12纳米工艺制造,具备两颗高性能Cortex-A75核心和六颗高效能Cortex-A55核心。此外,它还集成了先进的图像处理单元和语音唤醒功能,为用户提供卓越的性能体验。 ... [详细]
  • 深入理解Java多线程并发处理:基础与实践
    本文探讨了Java中的多线程并发处理机制,从基本概念到实际应用,帮助读者全面理解并掌握多线程编程技巧。通过实例解析和理论阐述,确保初学者也能轻松入门。 ... [详细]
author-avatar
北京超凡传媒
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有