mysql 中 AUTO_INCREMENT 是什么意思为什么必须和主键搭配

mysql 中 AUTO_INCREMENT 是什么意思为什么必须和主键搭配,第1张

AUTO_INCREMENT的是随着你数据库里面数据项的增加而自动增加值的一个属性,一般在像MYSQL这种数据库里,主键一般都是用ID号,比如学生的学号,公民的身份z号等,这种ID号是唯一的,是可以唯一标识数据库里面的一项数据的,而这种ID号并不需要自己动手去一个个输入,直接通过设置AUTO_INCREMENT就可以从小到大自动生成了。

扩展资料:

如果希望在每次插入新记录时,自动地创建主键字段的值。可以在表中创建一个 auto-increment 字段。MySQL 使用 AUTO_INCREMENT 关键字来执行 auto-increment 任务。默认地AUTO_INCREMENT 的开始值是 1,每条新记录递增 1。

主键又称主关键字,主关键字(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。在两个表的关系中,主关键字用来在一个表中引用来自于另一个表中的特定记录。主关键字是一种唯一关键字,表定义的一部分。一个表的主键可以由多个关键字共同组成,并且主关键字的列不能包含空值。主关键字是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义。

MySQL的中AUTO_INCREMENT类型的属性用于为一个表中记录自动生成ID功能.

可在一定程度上代替Oracle,PostgreSQL等数据库中的sequence。

在数据库应用,我们经常要用到唯一编号,以标识记录。在MySQL中可通过数据列的AUTO_INCREMENT属性来自动生成。

可在建表时可用“AUTO_INCREMENT=n”选项来指定一个自增的初始值。

可用alter table table_name AUTO_INCREMENT=n命令来重设自增的起始值。

当插入记录时,如果为AUTO_INCREMENT数据列明确指定了一个数值,则会出现两种情况,

情况一,如果插入的值与已有的编号重复,则会出现出错信息,因为AUTO_INCREMENT数据列的值必须是唯一的;

情况二,如果插入的值大于已编号的值,则会把该插入到数据列中,并使在下一个编号将从这个新值开始递增。也就是说,可以跳过一些编号。

如果自增序列的最大值被删除了,则在插入新记录时,该值被重用。

如果用UPDATE命令更新自增列,如果列值与已有的值重复,则会出错。如果大于已有值,则下一个编号从该值开始递增。

扩展资料

在使用AUTO_INCREMENT时,应注意以下几点:

1、AUTO_INCREMENT是数据列的一种属性,只适用于整数类型数据列。

2、设置AUTO_INCREMENT属性的数据列应该是一个正数序列,所以应该把该数据列声明为UNSIGNED,这样序列的编号个可增加一倍。

3、AUTO_INCREMENT数据列必须有唯一索引,以避免序号重复(即是主键或者主键的一部分)。

4、AUTO_INCREMENT数据列必须具备NOT NULL属性。

5、AUTO_INCREMENT数据列序号的最大值受该列的数据类型约束,如TINYINT数据列的最大编号是127,如加上UNSIGNED,则最大为255。

一旦达到上限,AUTO_INCREMENT就会失效。

6、当进行全表删除时,MySQL AUTO_INCREMENT会从1重新开始编号。

这是因为进行全表 *** 作时,MySQL(和PHP搭配之最佳组合)实际是做了这样的优化 *** 作:先把数据表里的所有数据和索引删除,然后重建数据表。

7、如果想删除所有的数据行又想保留序列编号信息,可这样用一个带where的delete命令以抑制MySQL(和PHP搭配之最佳组合)的优化:delete from table_name where 1。

也可以用last_insert_id()获取刚刚自增过的值。

参考资料:IT专家网-MYSQL中取得最后一条记录

1、创建表格时添加: create table table1(id int auto_increment primary key,…)

2、创建表格后添加: alter table table1 add id int auto_increment primary key 自增字段,一定要设置为primary key.

附:mysql 中的alter table mysql>alter table employee change depno depno int(5) not null

加索引 mysql>alter table 表名 add index 索引名 (字段名1[,字段名2 …])

例子: mysql>alter table employee add index emp_name (name)

加主关键字的索引 mysql>alter table 表名 add primary key (字段名)

例子: mysql>alter table employee add primary key(id)

加唯一限制条件的索引 mysql>alter table 表名 add unique 索引名 (字段名)

例子: mysql>alter table employee add unique emp_name2(cardnumber)

查看某个表的索引 mysql>show index from 表名例子: mysql>show index from employee

删除某个索引 mysql>alter table 表名 drop index 索引名例子: mysql>alter table employee drop index emp_name

修改表:增加字段:mysql>ALTER TABLE table_name ADD field_name field_type

查看表:mysql>SELECT * FROM table_name

修改原字段名称及类型:mysql>ALTER TABLE table_name CHANGE old_field_name new_field_name field_type

删除字段:ALTER TABLE table_name DROP field_name


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7188621.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存