精选文章 MYSQL使用存储过程为数据库下所有表添加相同字段

MYSQL使用存储过程为数据库下所有表添加相同字段

作者:MastyJay 时间: 2020-07-28 11:44:34
MastyJay 2020-07-28 11:44:34

目录

一、实现

二、扩展

三、参考与鸣谢


 


一、实现

需求:为数据库中所有表添加相同的字段。

步骤:获取数据库表名列表,定义结束条件,打开列表,执行循环,关闭列表。

CREATE DEFINER=`myuser`@`%` PROCEDURE `alertDBtables`()
BEGIN
	
DECLARE s_tablename VARCHAR(100);# 定义循环的表名变量

DECLARE tablenames CURSOR FOR SELECT table_name FROM information_schema.`TABLES` WHERE table_schema='my_db_name' Order by table_name;# 获取所有表名,并赋值给定义的变量

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s_tablename  = NULL;# 02000:当游标移动到最后一行时,设置 s_tablename=NULL

OPEN tablenames;

FETCH tablenames INTO s_tablename;

WHILE  (s_tablename IS NOT NULL) DO

	SET @_sql = CONCAT(
	'ALTER TABLE ',
	s_tablename,
	" ADD (
	`CreationTime` DateTime NULL COMMENT '创建时间',
	`CreatorId` BIGINT(20) NULL COMMENT '创建人编号',
	`LastModificationTime` DateTime NULL COMMENT '最后修改时间',
	`LastModifierId` BIGINT(20) NULL COMMENT '最后修改人编号',
	`IsDeleted` TINYINT(1) NOT NUll DEFAULT 0 COMMENT '是否删除'
	)"
	);# 拼接SQL语句
	
	PREPARE ex_sql FROM @_sql;# 预定义SQL
	
	EXECUTE ex_sql;# 执行SQL
	
	DEALLOCATE PREPARE ex_sql;# 释放连接
	
	FETCH tablenames INTO s_tablename;
END WHILE;

CLOSE tablenames;

END

二、扩展

1.数据库中某些表:

SELECT table_name FROM information_schema.`TABLES` WHERE table_schema='my_db_name' Order by table_name

按需修改获取表名的SQL语句即可。

2.循环语句体还可以使用repeat、loop

3.数据名使用参数传入,修改部分如下

CREATE DEFINER=`myuser`@`%` PROCEDURE `alertDBtables`(IN `db_name` varchar(20))

...

SELECT table_name FROM information_schema.`TABLES` WHERE table_schema=`db_name` Order by table_name

...

#调用
CALL alertDBtables('数据库名')

三、参考与鸣谢

https://blog.csdn.net/showchi/article/details/100051625

https://www.cnblogs.com/Moming0/p/11821965.html

勿删,copyright占位
分享文章到微博
分享文章到朋友圈

上一篇:weex编译运行

下一篇:linux 快速查看磁盘空间

您可能感兴趣

  • 有关string stringbuff stringbuild 的区别

    string stringbuff stringbuild的执行效率: stringbuild>stringbuff>string String类是不可变类,任何对String的改变都会引发新的String对象的生成; StringBuffer是可变类,任何对它所指代的字符串的改变都不会产生新的对象,线程安全的。 StringBuilder是可变类,线性不安全的,不支持并发操作,不适合多线程...

  • Java异常面试题(2020最新版)

    文章目录 Java异常架构与异常关键字 Java异常简介 Java异常架构 1. Throwable 2. Error(错误) 3. Exception(异常) 运行时异常 编译时异常 4. 受检异常与非受检异常 受检异常 非受检异常 Java异常关键字 Java异常处理 声明异常 抛出异常 捕获异常 如何选择异常类型 常见异常处理方式 直接抛出异常 封装异常再抛出 捕获异常 自定义异常 t...

  • 手写mybatis框架(一)通过动态代理简单实现查询功能

    git地址:点我 在手写mybatis简化版框架先了解一下mybatis框架的执行流程。 一、Mybatis框架执行流程 1.配置文件有两种,一个为主配置文件,一个为映射文件。 主配置文件:配置了jdbc等环境信息。 映射文件:配置了接口对应的sql语句映射。 这两个配置文件会被封装到Configuration中。 2.通过mybatis配置文件得到SqlSessionFactory。 3....

  • Webview.apk —— Google 官方的私有插件化方案

    简介: 在 Android 跨入 5.0 版本之后,我们在使用 Android 手机的过程中,可能会发现一个奇特的现象,就是手机里的 WebView 是可以在应用商店升级,而不需要跟随系统. 在 Android 跨入 5.0 版本之后,我们在使用 Android 手机的过程中,可能会发现一个奇特的现象,就是手机里的 WebView 是可以在应用商店升级,而不需要跟随系统的。 这一点在 iOS...

  • java基础学习笔记(七)-反射--注解

    反射机制介绍 _Class 对象获取 反射机制是 Java 的动态性之一 动态语言 : 在程序运行时,可以改变程序的结构或变量的类型。 典型的动态语言 ”Python 、 ruby 、 JavaScripC,C++, Java 不是动态语言,但具有一定的动态性,可以称为” 准动态语言 ”, 具备类似动态语言的特性。传一块代码来动态的执行,动态的处理,Java 也能做,可以利用反射来实现类似的...

  • 前端实习生面试题分析(一)

    最近面试拿了很多公司的实习offer,只要是面试的都通过了。 接下来就分析下面试题,也能给自己一个提升吧,以便后续的面试更轻车熟路些,题目没什么顺序,想起什么写什么,还有我面试过程中的一些小套路。 估计要写好多,每天写几道题,而且有些经验性的东西也不容易写出来 这篇写的都是类似一些概念性的理论东西。 1.JS防抖和节流 先说为什么要做防抖和节流,针对一些会频繁触发的事件,像scroll、re...

  • windows环境安装MySQL

    windows环境安装MySQL 本篇主要介绍如何在windows中,安装社区版MySQL(ZIP包形式)。 说明: 貌似从8.0版本以后,MySQL的安装包主要是ZIP形式,且只适用64位的windows; 8.0版本以前的提供ZIP Archive、MSI Installer两种安装包; 使用ZIP包安装,需要手动去配置,包也大些;使用MSI包安装,提供安装向导,包相对小些。 步骤1: ...

  • 爱了,3174页实战pdf集锦:Redis+多线程+Dubbo+JVM+kafka+MySQL

    写在前面 作为一名Java开发者,在现在这个信息化时代很快的时代,很少会有人停下脚步去思考以及去总结,忽略了很重要的一个步骤,没有反思和总结,只会用原来固有的想法去做事情,所以还是需要隔一段时间去总结。LZ今天总结了自己在平时会用到的一些: 01—Redis实战 在Redis诞生数年之后的今天,这个项目已经发生了显著的变化:我们现在拥有了一个更为健壮的系统,并且随着Redis 2.6的发布,...

华为云40多款云服务产品0元试用活动

免费套餐,马上领取!
CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。