mysql 动态 建表,mysql数据库动态创建表的实例分享

摘要 腾兴网为您分享:mysql数据库动态创建表的实例分享,易视云3,完美root,刷机大师,手游宝等软件知识,以及清仓兔,找明星,爱普生1500w,txt完结小说全本软件,windows自带画图软件,pdf目录生成,痛经的图片,就旅行,幼资源,爱漫网,加水印app,感恩贺卡简单又漂亮,背单词游戏,运营商logo,壹元等软件it资讯,欢迎关注腾兴网。本节内容: 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;

相关推荐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值