`

mysql数据库动态创建表

 
阅读更多
mysql数据库动态创建表

  大家一般可能很少有这种需求吧,我以前也没有遇到过,但这次做项目需要这么做。

   就是表的字段名和字段数都不是固定的,要根据需要来创建。

   这是我的创建形成过程,大家照着演示一下就知道了我的动态表的来龙去脉了。

第一步.创建相关表


   /*---建立所有指标信息的临时表---*/
drop table if exists INTERBANKBONDQUOTE_SClass;
create table INTERBANKBONDQUOTE_SClass (
     Name varchar(50) not null,
     id int Primary key,
     Parent int,
     Value varchar(50)
  );
insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('最新成交', 0,'');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('买入信息', 1,'');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('买卖价差', 2,'');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('卖出信息', 3,'');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Parent,Value)values('中债最新估值', 4, -1,'');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('含权债行权指标', 5,'');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('基础指标', 6,'');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('双边报价笔数', 7,'');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Parent,Value)values('报价方', 8, 1, 'col4');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Parent,Value)values('报价方会员号', 9, 1, 'col5');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Parent,Value)values('报价时间', 10, 1, 'col6');
insert into INTERBANKBONDQUOTE_SClass(Name,id,Parent,Value)values('匿名', 11, 1, 'col7');

第二步:/*---建立显示数据表格标题的表---*/
drop table if exists INTERBANKBONDQUOTE_T;
create table INTERBANKBONDQUOTE_T as select concat('\'',a.Name,',',b.Name,'\' __TITLE__',b.Value);

第三步:  这里有两种实现方法。因为在mysql中,这时的变量长度受到了限制 ,本来应该longtext足够长的,可实际只返回了限制长度的。如果字段太多了,就要用第二种方法。

存储过程A: 这里变量返回值长度受限,字段不多时可以。

DELIMITER $$
DROP PROCEDURE IF EXISTS `dzhappdb_bond`.`INTERBANKBONDQUOTE_TSP`$$
CREATE PROCEDURE INTERBANKBONDQUOTE_TSP ()
BEGIN
DECLARE objs1 TEXT;
DECLARE objs TEXT;
SELECT GROUP_CONCAT(col1) INTO objs1 FROM T;
SET objs  =CONCAT('CREATE TABLE Title AS SELECT ',objs1);
SET @sql_txt = objs;
PREPARE stmt FROM @sql_txt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END$$
call INTERBANKBONDQUOTE_TSP;

存储过程B:这样不管字段多少,只要数据库支持就可以创建成功。但不如第一个方法简洁。

DROP PROCEDURE IF EXISTS INTERBANKBONDQUOTE_TSP_Title;
drop table if EXISTS Title;

CREATE PROCEDURE INTERBANKBONDQUOTE_TSP_Title()
proc:begin
DECLARE add_sql LONGTEXT;
DECLARE insert_sql LONGTEXT;
DECLARE nhh_sql varchar(200);
DECLARE column_name varchar(100);
DECLARE column_value varchar(100);
DECLARE mycount int;
DECLARE len int;
DECLARE strlen int;
DECLARE cursor_Title CURSOR for select col1 from INTERBANKBONDQUOTE_T;

create table Title(mid int);
insert into Title values (100);
select count(col1) into @mycount from INTERBANKBONDQUOTE_T;

OPEN cursor_Title;
REPEAT
FETCH cursor_Title INTO nhh_sql;
begin
set @mycount=@mycount-1;
set @strlen=CHARACTER_LENGTH(nhh_sql);
set @len=INSTR(nhh_sql,' ');

set @column_name=RIGHT(nhh_sql,@strlen-@len);
set @column_value=LEFT(nhh_sql,@len);
set @add_sql=CONCAT('ALTER table Title add COLUMN ',@column_name,' varchar(100)');
set @insert_sql=CONCAT('update Title set ',@column_name,'=',@column_value,' where mid=100');

PREPARE stmt1 FROM @add_sql;
  EXECUTE stmt1;
PREPARE stmt2 FROM @insert_sql;
  EXECUTE stmt2;
DEALLOCATE PREPARE stmt1;
DEALLOCATE PREPARE stmt2;
end;
until @mycount<=0
END REPEAT;
CLOSE cursor_Title;
ALTER table Title drop column mid;
end proc;


call INTERBANKBONDQUOTE_TSP_Title;
分享到:
评论

相关推荐

    C#操作Mysql创建数据库,数据表,增、删、改数据

    这个库允许我们通过ADO.NET接口与Mysql数据库进行通信。在Visual Studio 2008中,可以通过NuGet包管理器来安装这个库,或者手动下载并添加到项目的引用中。 创建数据库的过程通常涉及到建立一个连接字符串,连接到...

    MySQL数据库基础与实例教程所有资源

    在创建表时,合理地为常用查询字段添加索引,能显著提升数据库的响应速度。 事务处理是关系数据库的重要特性,确保了数据的一致性和完整性。MySQL支持两种事务隔离级别:读未提交(READ UNCOMMITTED)和可重复读...

    mysql动态创建数据库

    mysql动态创建数据库

    WPF+C#实现为MySQL数据库中的表添加新的一列

    本文将深入探讨如何使用C#编程语言与Windows操作系统中的CMD.exe(命令提示符)结合,来实现为MySQL数据库中的表添加新的一列,并设定默认值。这种方法在数据库结构需要动态调整或者在应用程序中进行自动化数据库...

    jsp中使用动态数据进行mySQL数据库的两种操作方法

    jsp 中使用动态数据进行 MySQL 数据库的两种操作方法 在 JSP 中,使用动态数据进行 MySQL 数据库的操作是非常重要的。通常,我们需要使用 JSP 页面来获取用户输入的数据,并将其存储到 MySQL 数据库中。在本文中,...

    Mysql数据库中英对照表[借鉴].pdf

    MySQL 数据库中英对照表 MySQL 是一种广泛使用的关系型数据库管理系统,提供了强大的数据存储和管理功能。本文总结了 MySQL 数据库中常用的 SQL 语句和操作,涵盖了数据操作、数据定义、数据控制、事务控制、程序化...

    _PHP技术与MYSQL数据库技术的Web动态网页设计.pdf

    通过SQL语言,我们可以轻松创建数据表、定义数据以及进行数据操作。MySQL作为一个开源软件,其成本效益明显,能够提供高性能的数据服务,因而在动态网页设计中得到了广泛的应用。 在动态网页的设计中,PHP与MySQL...

    Java自动生成Mysql数据库结构

    "Java自动生成Mysql数据库结构"这个主题,就是关于如何利用编程语言自动化处理数据库设计的一部分。这个功能可以帮助开发者快速地创建数据库文档,减少手动编写SQL脚本和设计模式的时间。 首先,我们要理解这个代码...

    java备份mysql数据库

    标题“Java备份MySQL数据库”指的是使用Java编程语言来创建一个程序,该程序能够对MySQL数据库进行备份操作。这种备份通常涉及导出数据库的结构和数据,以便在需要时可以恢复到某个特定时间点的状态。在Java中实现这...

    javaweb+mysql数据库实现注册登录程序

    本项目"javaweb+mysql数据库实现注册登录程序"旨在教你如何使用Java Web技术和MySQL数据库来创建这样一个系统。以下是这个项目涉及到的关键知识点: 1. **Java Web基础**:Java Web开发主要涉及Servlet、JSP(Java...

    web端显示MySQL数据库中内容

    总结来说,"web端显示MySQL数据库中内容"是通过JSP和MySQL数据库相结合,实现动态生成Web页面,展示数据库中的信息。项目不仅关注功能实现,还注重用户界面的美化,通过背景显示提升了整体的视觉效果。这样的技术...

    MySql数据库CodeSmith模板

    MySQL数据库CodeSmith模板是一种高效的代码生成工具,它利用CodeSmith的强大功能,自动化地根据MySQL数据库中的表结构生成相应的代码,从而极大地提高了开发效率。CodeSmith是一款流行的数据驱动的代码生成器,它...

    jsp连接MySQL数据库

    在IT领域,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而MySQL则是一种广泛使用的开源关系型数据库管理系统。当我们需要在Web应用中存储、检索或处理数据时,通常会将JSP与MySQL结合起来使用。本文将...

    mysql数据库实现分页

    在MySQL数据库中,分页是处理大量数据查询时不可或缺的一种技术。它允许用户按需加载数据,而不是一次性获取所有记录,从而提高了用户体验并降低了服务器负载。以下是对分页实现的详细说明: 一、基础概念 分页是将...

    jsp操作mysql数据库的blob字段

    在这个场景中,我们关注的是如何使用Java Server Pages(JSP)来操作MySQL数据库中的Blob(Binary Large Object)字段,这是一个用于存储大容量二进制数据如图片、文档或音频文件的特殊字段类型。以下是关于这个主题...

    PHP中基于MYSQLI类操作MYSQL数据库的实现.pdf

    创建 MYSQLI 对象是使用 MYSQLI 类操作 MYSQL 数据库的第一步。开发者可以使用 new 关键字创建 MYSQLI 对象,并指定 MYSQL 数据库的连接参数。 6. 执行 SQL 语句 执行 SQL 语句是使用 MYSQLI 类操作 MYSQL 数据库的...

    C#连接Mysql数据库的DLL

    在C#中连接MySQL数据库通常需要一个特定的驱动程序,这个驱动程序以DLL(动态链接库)的形式存在,允许C#代码与MySQL服务器进行通信。在本案例中,提供的压缩包包含了用于C#连接MySQL数据库的DLL文件。 1. **MySQL ...

    西安电子科技大学MySQL数据库上机2答案

    西安电子科技大学的MySQL数据库上机任务旨在让学生深入理解数据库管理和SQL语言的核心概念。在这个任务中,学生需要完成以下几个关键知识点: 1. **视图的创建**: 视图是数据库中的虚拟表,它根据用户定义的SQL...

    c++封装MYSQL数据库连接代码

    在C++编程中,与MySQL数据库进行交互是常见的任务,特别是在开发需要持久化存储的应用程序时。本程序通过封装MYSQL数据库的库函数和头文件,实现了数据库的连接以及执行相关操作的功能。以下是对这一主题的详细说明...

Global site tag (gtag.js) - Google Analytics