>>与软件开发有关的知识:操作系统,数据库,网络通信等 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 26059 个阅读者 刷新本主题
 * 贴子主题:  MySQL 序列使用 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2019-08-19 19:14:55     消息  查看  搜索  好友  邮件  复制  引用

  

MySQL 序列使用

     MySQL 序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键,

如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现。

     本文我们将介绍如何使用MySQL的序列。            

使用 AUTO_INCREMENT

     MySQL 中最简单使用序列的方法就是使用 MySQL AUTO_INCREMENT 来定义列。    

范例

     以下范例中创建了数据表 insect,

     insect 表中 id 无需指定值可实现自动增长。

     mysql> CREATE TABLE insect

    -> (

    -> id INT UNSIGNED NOT NULL AUTO_INCREMENT,

    -> PRIMARY KEY (id),

    -> name VARCHAR(30) NOT NULL, # type of insect

    -> date DATE NOT NULL, # date collected

    -> origin VARCHAR(30) NOT NULL # where collected

);

Query OK, 0 rows affected (0.02 sec)

mysql> INSERT INTO insect (id,name,date,origin) VALUES

    -> (NULL,'housefly','2019-09-10','kitchen'),

    -> (NULL,'millipede','2019-09-10','driveway'),

    -> (NULL,'grasshopper','2019-09-10','front yard');

Query OK, 3 rows affected (0.02 sec)

Records: 3  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM insect ORDER BY id;

+----+-------------+------------+------------+

| id | name        | date       | origin     |

+----+-------------+------------+------------+

|  1 | housefly    | 2019-09-10 | kitchen    |

|  2 | millipede   | 2019-09-10 | driveway   |

|  3 | grasshopper | 2019-09-10 | front yard |

+----+-------------+------------+------------+

3 rows in set (0.00 sec)                  

获取AUTO_INCREMENT值

     在MySQL的客户端中你可以使用SQL中的LAST_INSERT_ID( ) 函数来获取最后的插入表中的自增列的值。    

重置序列

     如果你删除了数据表中的多条记录,并希望对剩下数据的AUTO_INCREMENT列进行重新排列,那么你可以通过删除自增的列,然后重新添加来实现。

不过该操作要非常小心,如果在删除的同时又有新记录添加,有可能会出现数据混乱。操作如下所示:

       mysql> ALTER TABLE insect DROP id;

      mysql> ALTER TABLE insect

     -> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST,

     -> ADD PRIMARY KEY (id);                  

设置序列的开始值

     一般情况下序列的开始值为1,但如果你需要指定一个开始值100,那我们可以通过以下语句来实现:

    mysql> CREATE TABLE insect

    -> (

    -> id INT UNSIGNED NOT NULL AUTO_INCREMENT,

    -> PRIMARY KEY (id),

    -> name VARCHAR(30) NOT NULL,

    -> date DATE NOT NULL,

    -> origin VARCHAR(30) NOT NULL

       )engine=innodb auto_increment=100 charset=utf8;

      或者你也可以在表创建成功后,通过以下语句来实现:

       mysql> ALTER TABLE t AUTO_INCREMENT = 100;







程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-02-11 10:55:39 重新编辑]
  Java面向对象编程-->内部类
  JavaWeb开发-->Servlet技术详解(Ⅱ)
  JSP与Hibernate开发-->使用JPA和注解
  Java网络编程-->对象的序列化与反序列化
  精通Spring-->
  Vue3开发-->绑定表单
  Https的1.0、2.0协议及长短链接区别
  如何成为写SQL高手
  mysql 表分区、按时间函数分区、删除分区、自动添加表分区
  MySQL全面优化实战总结!
  构建高大上的MySQL监控平台
  Mysql启报错报的解决办法:The server quit without updatin...
  XML的DTD定义
  SQL查询语句的分组和排序
  网络运维 - 你与真相就差一层窗户纸
  管理密码策略
  从十年运维看“云”维趋势
  连接数据库发现大量的TIME_WAIT解决办法
  mysql主从复制的步骤
  分布式架构的那点事
  开发好几年,你真的懂MQ嘛(RabbitMQ为例)?看完别说难搞哦
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。