mysql标识列

Posted java王子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql标识列相关的知识,希望对你有一定的参考价值。

#标识列
    /*
    又称为自增长列
    含义:可以不用手动的插入值,系统提供默认的序列值


    特点:
    1、标识列必须和主键搭配吗?不一定,但要求是一个key(也可以是unique)
    2、一个表可以有几个标识列?至多一个!
    3、标识列的类型只能是数值型
    4、标识列可以通过 SET auto_increment_increment=3;设置步长
    可以通过 手动插入值,设置起始值


    */

    #一、创建表时设置标识列
    DROP TABLE IF EXISTS tab_identity;
    CREATE TABLE tab_identity(
        id INT  PRIMARY KEY AUTO_INCREMENT,
        NAME FLOAT UNIQUE,
        seat INT 


    );

    DROP TABLE IF EXISTS tab_identity;
    CREATE TABLE tab_identity(
        id INT  ,
        NAME FLOAT UNIQUE AUTO_INCREMENT,
        seat INT 


    );
    TRUNCATE TABLE tab_identity;

    # 要么 带着所有的字段,插入时,自增长列对应插入null
    INSERT INTO tab_identity(id,NAME) VALUES(NULL,‘john‘);

    #要么 不带自增长列,插入时只插别的字段
    INSERT INTO tab_identity(NAME) VALUES(‘lucy‘);
    SELECT * FROM tab_identity;

    # 自增长列默认从1开始递增,步长为1
    SHOW VARIABLES LIKE ‘%auto_increment%‘; 
    # auto_increment_increment:步长
    # auto_increment_offset:起始位置(mysql中不能人为设置)


    SET auto_increment_increment=3; #  设置步长



    #如果想自己设置起始位置:10
    #先执行下一句通过 手动插入值,设置起始值
    INSERT INTO tab_identity(id,NAME) VALUES(10,‘john‘);
    #然后 和以前一样,插入多行下一句:
    INSERT INTO tab_identity(NAME) VALUES(‘lucy‘);

    #二、修改表时设置标识列

    DROP TABLE IF  EXISTS test;
    CREATE TABLE test(
        id INT PRIMARY KEY,
        NAME VARCHAR(20)
    );

    ALTER TABLE test MODIFY COLUMN id INT  AUTO_INCREMENT;

    INSERT INTO test VALUES (NULL,‘aaa‘);
    SELECT * FROM test;

    TRUNCATE TABLE test; #清空表,注意与DROP TABLE IF  EXISTS test; 的区别,一个是清空,另一个删除

    SHOW VARIABLES LIKE ‘%auto_increment%‘;
    SET auto_increment_increment = 2;

    INSERT INTO test VALUES(5,‘haha‘);
    INSERT INTO test VALUES(NULL,‘haha‘);#运行多次该句
    SELECT * FROM test; # 结果是 id = 5,7,9.... 

    DESC test;

    #二、修改表时删除标识列
    ALTER TABLE test MODIFY COLUMN id INT ;
    DESC test;

以上是关于mysql标识列的主要内容,如果未能解决你的问题,请参考以下文章

MySQL基础-18DDL语言(数据定义语言)-标识列(自增长列)

建表时,如何让mysql标识列ID从1开始自动增长

MySQL进阶14--标识列(自增序列/auto_increment)--设置/展示步长--设置/删除标示列

如何使用 Fluent-NHibernate 和 MySQL 指定自动递增 (int) 标识列

使用 json rereiver php mysql 在片段中填充列表视图

眼见为实,看看MySQL中的隐藏列!