作者:北京超凡传媒 | 来源:互联网 | 2024-11-12 15:57
本文介绍了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)
默认值是指当添加一行时,若某列的值未设置,则自动填一个默认值。