>>与软件开发有关的知识:操作系统,数据库,网络通信等 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 20539 个阅读者 刷新本主题
 * 贴子主题:  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面向对象编程-->Java语言的基本语法和规范
  JavaWeb开发-->Web运作原理(Ⅲ)
  JSP与Hibernate开发-->映射组成关系
  Java网络编程-->Java网络编程入门
  精通Spring-->通过Vuex进行状态管理
  Vue3开发-->Vue指令
  Linux系统的五种IO模型
  MySQL千万级别大表,盘点优化技巧
  数据库建立索引的原则
  服务器排障 之 nginx 499 错误的解决
  MySQL的所有函数的用法
  MySQL的UPDATE更新语句的用法
  SQL ROUND() 函数
  SQL AVG() 函数的用法
  管理密码策略
  从十年运维看“云”维趋势
  解决电脑网络受限制或无连接造成无法上网的方法
  程序员必须掌握的核心算法有哪些?
  一次给朋友转账引发我对分布式事务的思考
  深入认识二进制序列化--记一次生产事故的思考
  MySQL核心技术点——史上最全的select加锁分析
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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