>>与软件开发有关的知识:操作系统,数据库,网络通信等 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 27136 个阅读者 刷新本主题
 * 贴子主题:  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开发-->JSP中使用JavaBean(Ⅰ)
  JSP与Hibernate开发-->数据库事务的并发问题的解决方案
  Java网络编程-->用Axis发布Web服务
  精通Spring-->CSS过渡和动画
  Vue3开发-->虚拟DOM和render()函数
  神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程
  SaltStack 自动化运维实战
  DNS原理及其解析过程
  Linux下网络流量实时监控工具大全
  mysql启动报错的解决:Starting MySQL... ERROR! The server...
  MySQL 处理重复数据
  SQL Server 和 MySQL 中的 Date 函数
  SQL AUTO INCREMENT 字段
  比较XML的子元素和属性
  SQL查询语句的分组和排序
  MySQL5.7慢查询日志时间与系统时间差8小时原因
  程序员必须掌握的核心算法有哪些?
  数据库设计(一)——数据库设计-生命不息,奋斗不止
  TCP三次握手和四次挥手以及11种状态
  MySQL核心技术点——史上最全的select加锁分析
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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