>>与软件开发有关的知识:操作系统,数据库,网络通信等 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 28127 个阅读者 刷新本主题
 * 贴子主题:  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开发-->JavaWeb应用入门(Ⅱ)
  JSP与Hibernate开发-->映射对象标识符
  Java网络编程-->非阻塞通信
  精通Spring-->计算属性和数据监听
  Vue3开发-->Vue CLI脚手架工具
  一文读懂非关系型数据库(NoSQL)
  关于Mongodb的全面总结
  MySQL索引原理 - 秋慕云
  如何成为写SQL高手
  Mysql--所有版本安装以及完全卸载
  PostgreSQL pg_rewind实例--could not find previous WA
  MySQL ALTER命令
  SQL AVG() 函数的用法
  SQL的创建表(CREATE TABLE) 语句的用法
  SQL FULL OUTER JOIN 关键字
  管理密码策略
  解决电脑网络受限制或无连接造成无法上网的方法
  Mysql并发保证数据一致性——实例
  mysql主从复制的步骤
  开发好几年,你真的懂MQ嘛(RabbitMQ为例)?看完别说难搞哦
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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