MySQL数据库8(九)列属性之主键、自增长

 

主键

顾名思义,主要的键,primary key,在一张表中,有且只有一个字段,里面的值具有唯一性

创建主键

随表创建

系统提供了两种增加主键的方式:

1、直接在需要当做主键的字段之后,增加primary key属性来确定主键

2、在所有字段之后增加primary key选项:primary key(字段信息)

 MySQL数据库8(九)列属性之主键、自增长_第1张图片

 

表后增加

基本语法:alter table 表名 add primary key(字段);

 MySQL数据库8(九)列属性之主键、自增长_第2张图片

 

查看主键

方案1: 查看表结构

 MySQL数据库8(九)列属性之主键、自增长_第3张图片

 

方案2:查看表的创建语句

 MySQL数据库8(九)列属性之主键、自增长_第4张图片

 

删除主键

基本语法:alter table 表名 drop primary key;

 MySQL数据库8(九)列属性之主键、自增长_第5张图片

复合主键

 MySQL数据库8(九)列属性之主键、自增长_第6张图片

 

主键约束

主键一旦增加,那么对对应的字段数据有要求:

1、当前字段对应的数据不能为空。

2、当前字段对应的数据不能有任何重复

 MySQL数据库8(九)列属性之主键、自增长_第7张图片

主键分类

主键分类采用的是主键所对应的字段的业务意义分类:

业务主键:主键所在的字段,具有业务意义(学生ID,课程ID)

逻辑主键:自然增长的整型(应用广泛)

 

自增长

自动增长:auto increment,当给定某个字段的属性之后,该列的数据在没有提供确定数据的时候,系统会根据之前已经存在的数据进行自动增加后,填充数据

 

通常自动增长用于逻辑主键

原理

自动增长的原理:

1、在系统中有维护一组数据,用来保存当前使用了自动增长属性的字段,记住当前对应的数据值,在给定一个指定的步长。

2、当用户进行数据插入的时候,如果没有给定值,系统在原始值上加上步长变成新的数据

3、自动增长的触发:给定属性的字段没有提供值

4、自动增长只适用于数值

 

使用自动增长

基本语法:在字段之后增加一个属性 auto_increment;

 MySQL数据库8(九)列属性之主键、自增长_第8张图片

 

插入数据:触发自动增长,不能给定具体值(可以给null)

 MySQL数据库8(九)列属性之主键、自增长_第9张图片

 

修改自动增长

1、查看自增长:自增长一旦触发使用后,会自动地在表选项中增加一个选项(一张表最多只能拥有一个自增长)

 MySQL数据库8(九)列属性之主键、自增长_第10张图片

 

2、表选项可以通过修改表结构来实现

基本语法:alter table 表名 auto_increment = 值;

 MySQL数据库8(九)列属性之主键、自增长_第11张图片

 

删除和增加自动增长

删除自增长:就是在字段属性之后不再保留auto_increment,当用户修改自增长所在字段时,如果没有看到auto_increment属性,系统会自动清除该自增长。

删除自增长:alter table my_auto modify id int;

增加自增长:alter table my_auto modify id int auto_increment;

 MySQL数据库8(九)列属性之主键、自增长_第12张图片

 

 

初始设置

在系统中,有一组变量用来维护自增长的初始值和步长

查看:show variables like ‘auto_increment%’;

 MySQL数据库8(九)列属性之主键、自增长_第13张图片

 

修改自增长步长和初始值:

set auto_increment_increment = 值;

set auto_increment_offset = 值;

 MySQL数据库8(九)列属性之主键、自增长_第14张图片

 

细节问题

1、一张表中只有一个自增长,:自增长会上升到表选项中。

2、如果数据插入中没有触发自增长(给定了数据),那么自增长不会表现,用户指定数据之后,自增长不参与,但是自增长默默根据当前用户设定的值初始化下一个值。

3、自增长在修改的时候,值可以较大,但是不能比当前已有的自增长字段的值小。

 

你可能感兴趣的:(MySQL,MySQL基础)