MySQL中序列的作用_MySql中序列的应用和总结

Mysql中的序列主要用于主键,主键是递增的字段,不可重复。

Mysql与Oracle不同的是,它不支持原生态的sequence,需要用表和函数的组合来实现类似序列的功能。

1.首先创建序列的主表

/*

Navicat Premium Data Transfer

Source Server : MySql_192.168.10.7

Source Server Type : MySQL

Source Server Version : 100113

Source Host : 192.168.10.7:3306

Source Schema : config_fao_atp

Target Server Type : MySQL

Target Server Version : 100113

File Encoding : 65001

Date: 17/04/2020 17:38:44

*/

SET NAMES utf8mb4;

SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------

-- Table structure for sequence

-- ----------------------------

DROP TABLE IF EXISTS `sequence`;

CREATE TABLE `sequence` (

`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,

`current_value` int(11) NOT NULL,

`increment` int(11) NOT NULL DEFAULT 1,

PRIMARY KEY (`name`) USING BTREE

) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------

-- Records of sequence

-- ----------------------------

INSERT INTO `sequence` VALUES ('artableSeq', 10021776, 1);

SET FOREIGN_KEY_CHECKS = 1;

其次创建如下三个函数,它们的功能分别是:查询当前序列值、查询下一个序列值、设置序列的起始值。

/*

Navicat Premium Data Transfer

Source Server : MySql_192.168.10.7

Source Server Type : MySQL

Source Server Version : 100113

Source Host : 192.168.10.7:3306

Source Schema : config_fao_atp

Target Server Type : MySQL

Target Server Version : 100113

File Encoding : 65001

Date: 17/04/2020 17:38:44

*/

-- ----------------------------

-- Function structure for currval

-- ----------------------------

DROP FUNCTION IF EXISTS `currval`;

DELIMITER ;;

CREATE DEFINER=`root`@`%` FUNCTION `currval`(seq_name VARCHAR(50)) RETURNS int(11)

DETERMINISTIC

BEGIN

DECLARE value INTEGER;

SET value = 0;

SELECT current_value INTO value

FROM sequence

WHERE name = seq_name;

RETURN value;

END

;;

DELIMITER ;

-- ----------------------------

-- Function structure for nextval

-- ----------------------------

DROP FUNCTION IF EXISTS `nextval`;

DELIMITER ;;

CREATE DEFINER=`root`@`%` FUNCTION `nextval`(seq_name VARCHAR(50)) RETURNS int(11)

DETERMINISTIC

BEGIN

UPDATE sequence

SET current_value = current_value + increment

WHERE name = seq_name;

RETURN currval(seq_name);

END

;;

DELIMITER ;

-- ----------------------------

-- Function structure for setval

-- ----------------------------

DROP FUNCTION IF EXISTS `setval`;

DELIMITER ;;

CREATE DEFINER=`root`@`%` FUNCTION `setval`(seq_name VARCHAR(50), value INTEGER) RETURNS int(11)

DETERMINISTIC

BEGIN

UPDATE sequence

SET current_value = value

WHERE name = seq_name;

RETURN currval(seq_name);

END

;;

DELIMITER ;

3.最后初始化序列数据,测试序列功能。

----添加一个sequence名称和初始值,以及自增幅度 添加一个名为filegenSeq 的自增序列

INSERT INTO sequence VALUES ('filegenSeq', 10000000, 1);

---设置指定sequence的初始值 这里设置filegenSeq 的初始值为10

SELECT SETVAL('filegenSeq', 10000000);

--查询指定sequence的当前值 这里是获取filegenSeq当前值

SELECT CURRVAL('filegenSeq');

--查询指定sequence的下一个值 这里是获取filegenSeq下一个值

SELECT NEXTVAL('filegenSeq');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527413.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python内置模块重要程度排名_python常用内置模块

#持续更新#在使用内置模块的时候需要导入,例如import abc,则导入abc模块,当然模块也可以自己写,相当于一个类,后面放到类里说,这个因为环境闲置,有些无法执行,只能理解了#os系统操作…

路由器装上去没有网络_5G网络那么快,今后路由器没有存在的价值了?

从一些宣传来看,即将商用的5G网速确实很快,号称10Gbps,比有线宽带还要快。既然5G网速那么快了,还有必要装宽带和路由器吗?先来纠正一个误区,5G网络的理论速度与实际速度是有很大差别的!!目前很多宣传中所说的5G网速最…

python爬取新闻网站内容findall函数爬取_Python爬取新闻网标题、日期、点击量

最近接触Python爬虫,以爬取学校新闻网新闻标题、日期、点击量为例,记录一下工作进度目前,感觉Python爬虫的过程无非两步:Step1.获取网页url(利用Python库函数import urllib2)Step2.利用正则表达式对html中的字符串进行匹配、查找等…

python token发送请求_python发送requests请求时,使用登录的token值,作为下一个接口的请求头信息...

python发送requests请求时,使用登录的token值,作为下一个接口的请求头信息登录接口代码:在这里插入图片描述登陆后返回的结果是:在这里插入图片描述新增渠道接口:新增渠道接口需要在headers中添加登陆后返回的token才可…

python绘制散点图的步骤_python如何绘制散点图?

饼图:饼图显示静态数字以及类别如何表示整体构成的一部分。饼图以百分比表示数字,所有段的总和需要等于100%。plt.pie(df[Age], labels {"A", "B", "C","D", "E", "F","G…

numpy支持比python更多的数据类型_NumPy数据类型

NumPy - 数据类型NumPy 支持比 Python 更多种类的数值类型。 下表显示了 NumPy 中定义的不同标量数据类型。序号数据类型及描述1.bool_存储为一个字节的布尔值(真或假)2.int_默认整数,相当于 C 的long,通常为int32或int643.intc相当于 C 的int&#xff0…

suse11安装python_suse linux 安装python Eric4

1. Install Qt42. Build and install sip3. Build and install QScintilla24. Build and install PyQt45. Build and install QScintilla2 Python bindings6. Install eric4这个文件在eric4-4.4.9/README1.安装python2.62.安装qt4解压 qt-everywhere-opensource-src-4.7.1./con…

coap python3_node-coap入门(三)——Observe

示例调用v0.12.0版本的node-coap,目前只能在server端通过res.end()触发finish事件,client端目前还没实现响应API。但火狐copper插件取消订阅时,server端可以触发finish事件。发现client取消订阅API的读者若能与我交流分享,不甚感激…

怎么把程序内部坐标转为屏幕坐标_经纬度坐标转换成屏幕坐标

地理坐标定义规则:X轴(代表经度)向右递增,Y轴(纬度)向上递增,就好比小学学过的平面坐标。向左、向下的规则。 屏幕坐标定义规则:X轴向右递增,Y轴向下递增。可以看出,地理坐标和屏幕坐标的区别仅仅只是在于Y…

kmeans python_k-means python实践

#codingutf-8import numpy as npimport matplotlib.pyplot as pltfrom sklearn.cluster import KMeansimport sklearn.datasets as dsimport matplotlibmatplotlib.rcParams[font.sans-serif] [uSimHei]matplotlib.rcParams[axes.unicode_minus] False#生成测试数据#生成维度…

mysql max 命令大全_MySQL常用命令,34道练习题(持续更新中)。

1、使用SHOW语句找出在服务器上当前存在什么数据库:mysql> SHOW DATABASES;2、创建一个数据库MYSQLDATAmysql> CREATE DATABASE MYSQLDATA;3、选择你所创建的数据库mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)4、查…

python深度优先_python数据结构之图深度优先和广度优先实例详解

本文实例讲述了python数据结构之图深度优先和广度优先用法。分享给大家供大家参考。具体如下:首先有一个概念:回溯回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先…

mysql sum id 5_mysql怎么使用sum()求id字段的和?

mysql使用sum()求id字段的和的方法:利用“SELECT SUM(id) FROM 数据表名;”来求id字段的和,返回id字段值的总和;SUM()函数在计算时,忽略列值为NULL的行。(推荐教程:mysql视频教程)SUM() 函数返回数值列的总数。SQL SUM…

python问卷调查系统设计案例_从设计到施工,全面剖析超级玻璃屋面系统案例!...

【设计师的材料清单】戳图即可购买《设计师的材料清单》实体书或获取高清电子书转载整理自:弗思特(ID:FFTCCL)各位设计师大家好!随着人们对建筑外观及内部环境要求的不断提高具有大面积采光且轻盈的玻璃屋面系统在大型公共建筑设计中被广泛使…

mysql如何建外建_mysql如何建立外键

mysql如何建立外键一个主表blog博客表,DROP TABLE IF EXISTS blog;CREATE TABLE blog (id int(11) NOT NULL auto_increment,title varchar(11) default NULL,content varchar(11) default NULL,PRIMARY KEY (id)) ENGINEInnoDB DEFAULT CHARSETgb2312;另一个表comment,评论表…

二叉树的建立与遍历完整代码_腾讯面试官这样问我二叉树,我刚好都会

前记上周我投递出了简历,岗位是后端开发工程师。这周腾讯面试官给我进行了视频面试。面试过程中他问了二叉树的问题。二叉树相关算法题,在面试中出现的次数非常非常多,所以我面试之前也有所准备。今天结合面试问题详细讲一讲二叉树&#xff0…

python教程程序_Python如何发布程序的详细教程

如何发布一个Python程序:1.安装一个pyInstaller在pycharm里点 file —–>setting—–>Project workspace——>Interpreter——>点pip右边的+号,进入下面这个界面:搜索pyInstaller, 点击左下方Iinstall package安装(出…

创建mysql数据库图解_mysql数据库怎么创建外键?(图文+视频)

本篇文章主要给大家介绍mysql数据库怎么创建外键。关于mysql数据库外键的基础介绍,我们在这篇文章【Mysql外键是什么?有哪些用处?】中,已经给大家介绍过了,需要的朋友可以选择参考。了解了外键的基础定义,那…

redis 管理工具_Redis桌面管理工具Redis Desktop Manager 2019.2发布

简介Redis桌面管理器(又名RDM) - 是适用于Windows,Linux和MacOS的快速开源Redis数据库管理应用程序。该工具为您提供了一个易于使用的GUI,可以访问您的Redis数据库并执行一些基本操作:将键视为树,CRUD键,通过shell执行…

如何保护python代码_如何在发布之前保护我的Python代码?

由于Python是一种按设计进行解释的语言,而且它将代码编译为字节码(这无助于隐藏它,因为字节码更容易反转),因此没有真正安全的方法来隐藏源代码,因为它是不可恢复的,任何编程语言都是如此。在一开始,如果你…