快捷导航

[其他教程] 在MySQL中使用序列的简单教程

[复制链接]
查看: 3373|回复: 16

3762

主题

9657

狗粮

6

精华

管理员

积分
27772

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

QQ
发表于 2015-9-17 17:20:15 | 显示全部楼层 |阅读模式
序列是一组整数1,2,3,...中生成的顺序。序列中经常使用的数据库,因为很多应用都需要一个表中的每一行包含一个独特的值和序列提供了一个简单的方法来产生。本章介绍如何使用MySQL中的序列。
使用自动递增列:
在MySQL中使用序列最简单的方法是定义一个AUTO_INCREMENT列,剩下的事情留给MySQL处理。
实例:
试试下面的例子。这将创建表之后,它会在此表中它不是必需的记录ID插入几行,因为它由MySQL自动递增。
[color=white !important][backcolor=rgb(108, 226, 108) !important]
[color=white !important]?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

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','2001-09-10','kitchen'),
  -> (NULL,'millipede','2001-09-10','driveway'),
  -> (NULL,'grasshopper','2001-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  | 2001-09-10 | kitchen  |
| 2 | millipede  | 2001-09-10 | driveway  |
| 3 | grasshopper | 2001-09-10 | front yard |
+----+-------------+------------+------------+
3 rows in set (0.00 sec)




获取AUTO_INCREMENT值:
LAST_INSERT_ID()是一个SQL的函数,可以用它在任何客户端来了解如何发出SQL语句。否则PERL和PHH的脚本提供了独特的功能来检索的最后一个记录的自动递增值。
PERL 例子:
使用mysql_insertid属性来获得查询产生的AUTO_INCREMENT值。此属性的访问是通过一个数据库句柄或语句句柄,这取决于如何发出查询。下面的示例引用,它通过数据库句柄:
[color=white !important][backcolor=rgb(108, 226, 108) !important]
[color=white !important]?

1

2

3

$dbh->do ("INSERT INTO insect (name,date,origin)
VALUES('moth','2001-09-14','windowsill')");
my $seq = $dbh->{mysql_insertid};




PHP 例子:
发出后产生一个AUTO_INCREMENT值的查询,检索的值调用mysql_insert_id():
[color=white !important][backcolor=rgb(108, 226, 108) !important]
[color=white !important]?

1

2

3

mysql_query ("INSERT INTO insect (name,date,origin)
VALUES('moth','2001-09-14','windowsill')", $conn_id);
$seq = mysql_insert_id ($conn_id);




重编为一个现有的序列:
有可能出现这样的情况:当记录从表中删除了一部分要重新排序的所有记录。这可以通过使用一个简单的技巧,但应该非常小心,如果表是参加与其他表。
如果确定是不可避免的重测序的AUTO_INCREMENT列的方式,这样做是从表中删除列,然后重新添加它。下面的例子演示了如何使用这种技术在BUG重新编号的id值:
[color=white !important][backcolor=rgb(108, 226, 108) !important]
[color=white !important]?

1

2

3

4

mysql> ALTER TABLE insect DROP id;
mysql> ALTER TABLE insect
  -> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST,
  -> ADD PRIMARY KEY (id);




启动序列在一个的特殊的值:
默认情况下,MySQL将开始顺序1,但在创建表的时候可以指定任何其他数字。下面的例子,MySQL将从100开始顺序。
[color=white !important][backcolor=rgb(108, 226, 108) !important]
[color=white !important]?

1

2

3

4

5

6

7

8

mysql> CREATE TABLE insect
  -> (
  -> id INT UNSIGNED NOT NULL AUTO_INCREMENT = 100,
  -> PRIMARY KEY (id),
  -> name VARCHAR(30) NOT NULL, # type of insect
  -> date DATE NOT NULL, # date collected
  -> origin VARCHAR(30) NOT NULL # where collected
);




或者也可以创建表,然后设置初始序列值ALTER TABLE。
[color=white !important][backcolor=rgb(108, 226, 108) !important]
[color=white !important]?

1

mysql> ALTER TABLE t AUTO_INCREMENT = 100;




温馨提示:
1、本站所有信息都来源于互联网有违法信息与本网站立场无关。
2、当有关部门,发现本论坛有违规,违法内容时,可联系站长删除,否则本站不承担任何责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
5、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
6、如果使用本帖附件,本站程序只提供学习使用,请24小时内删除!使用者搭建运营触犯法律,违法,违规,本站不承担任何责任。
我是一条可怜的土狗...

0

主题

55

狗粮

0

精华

注册会员

积分
84
发表于 2015-9-17 17:31:54 | 显示全部楼层
真心顶
我是一条可怜的土狗...

0

主题

55

狗粮

0

精华

注册会员

积分
84
发表于 2015-9-17 17:22:07 | 显示全部楼层
这个是好东西。
我是一条可怜的土狗...

0

主题

64

狗粮

0

精华

注册会员

积分
86
发表于 2015-9-17 17:14:31 | 显示全部楼层
我的啦嘿嘿
我是一条可怜的土狗...

0

主题

55

狗粮

0

精华

注册会员

积分
84
发表于 2015-9-17 17:31:49 | 显示全部楼层
谢谢楼主分享,学习了
我是一条可怜的土狗...

0

主题

60

狗粮

0

精华

注册会员

积分
95
发表于 2015-9-17 17:27:31 | 显示全部楼层
漂亮了啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦
我是一条可怜的土狗...

0

主题

56

狗粮

0

精华

注册会员

积分
87
发表于 2015-9-17 17:58:26 | 显示全部楼层
这个东西找了很久了多谢楼主!!
我是一条可怜的土狗...

0

主题

54

狗粮

0

精华

注册会员

积分
66
发表于 2015-9-17 17:22:14 | 显示全部楼层
谢谢老大分享
我是一条可怜的土狗...
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩推荐

体育赛事直播/斗球网页直播/篮球等体育游戏

2024-11-06 精品源码

仿火币模式交易所源码+VUE源码可二开 法币

2021-12-19 精品源码

【变色龙】app封装系统源码+某站在售上千的

2021-12-19 精品源码

BZZ分币系统/PHA分币系统/XCH/chia分币 奇

2021-12-19 精品源码

任务悬赏APP系统源码-活动营销三级分销返佣

2021-12-19 精品源码

最新升级版 云挖矿模式盗u源码 秒u源码-全

2022-01-04 精品源码

UI非常漂亮的数诚1对1直播+双端源码/带收徒

2021-12-19 精品源码

新版【士兵扫雷UI改版】12月未新增多页面新

2022-01-03 精品源码

让创业更简单

  • 反馈建议:xiaotuzi2018@foxmail.com
  • 客服电话:
  • 工作时间:周一到周六

云服务支持

精品资源,快速检索

关注我们

Copyright 小白源码网  Powered by©  技术支持: