mysql建表里PRIMARY, AUTO_INCREMENT,UNSIGNED等等是什么意思?

mysql建表里PRIMARY, AUTO_INCREMENT,UNSIGNED等等是什么意思?,第1张

我举个小例子给你简单解释一下。

例:

CREATE TABLE TABLE_1

(

ID INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,

// ID列为无符号整型,该列值不可以为空,并不可以重复,而且自增。

NAME VARCHAR(5) NOT NULL

)

AUTO_INCREMENT = 100(ID列从100开始自增)

PRIMAPY是主键的意思,表示定义的该列值在表中是唯一的意思,不可以有重复。

UNSIGNED是无符号的意思,代表该字段没有正负。

AUTO_INCREMENT可以理解为自动递增的意思,每增加一条记录,值会自动加1。(例如在上面的例子中,ID列每增加一条记录,便会从100自增) 。

我想通过上面的例子,你应该可以理解一些了,不明白再问我。谢谢。

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中取得最后一条记录

integer类型能表达11位吗?

我觉得这种还是用字符型比较好.

自增问题,字符型可以这么解决:

rs.open "select max(id) from table_name where id like '" &format(date,"yyyymmdd") &","

if rs.eof then

m="000"

else

m=right(rs(0))

end if

a=format(date,"yyyymmdd")

m=format(cstr(val(m)+1),"000")

newid=a &m

newid就是在已有编号基础上+1的编号.


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

原文地址: http://outofmemory.cn/sjk/9994531.html

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

发表评论

登录后才能评论

评论列表(0条)

保存