日期:2014-05-16  浏览次数:20822 次

mysql自增列语法

Mysql:语法:自增列

参考了:http://www.cnblogs.com/jinzhenshui/archive/2009/06/13/1502431.html

  1. 属性:自增列不必是:唯一的、primary、正数、bigint
  2. 属性:auto_increment 是mysql在表列定义中的一个可选属性,和默认值属性冲突。
  3. 属性:必须定义在该列上的索引!
  4. 属性:应用于number类型的列:包括各种整数、浮点数、定点数
  5. 属性:自增列可以和普通的数字类型属性(unsigned、zerofill的)、约束(null、not null、[primary] key、unique [key]、check、foreign key)等组合
  6. 属性:表只能有一个自增列。该列必须具有索引。不能在该列定义defaut值。
  7. 语句影响:insert 对自增列可以显示的指定其值进行插入,如果插入的值>种子值,则种子值会自动更新为=该插入的值;即使你一次性插大批数据也是只返回该批次第一行自增后的值!
  8. 语句影响:delete、update 不会影响种子值
  9. 语句影响:truncate 重置种子值到“1”
  10. 语句影响:select * from table_name where auto_increment_col_name is NULL 获得最后插入的第一行数据;即使你一次性插大批数据也是只返回该批次第一行自增后的值!是ODBC兼容语法
  11. 当 向自增列插入NULL时,自增列自增;当 no_auto_value_on_zero=1(enable)时,可以通过向自增列赋值0来产生自增,不推荐!
  12. 插入值后可以通过 last_insert_id () 返回第一行自增后的值,记住:即使是一批插入多条数据,返回的仍然是第一行的值
  13. ?特殊的:对于myisam表,特殊的对于myisam引擎的表,你可以在一个多列索引上的第二列上定义自增列:他将在第一索引列上产生自增,可以理解为:在第一索引列上分组,计算该组上的最大值,+1。该形式下:(分组)自增列的种子值总是取该列上的分组 最大值——受delete、update、insert影响。最大的用途应该是分组排序吧
  14. INSERT INTO StuInfo(StuID,StuName) VALUES (NULL, `字符`)或者
    INSERT INTO StuInfo(StuName) VALUES (`字符`)