加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql必读mysql数据库动态创建表的实例分享

发布时间:2020-12-12 02:25:38 所属栏目:MySql教程 来源:网络整理
导读:《Mysql必读mysql数据库动态创建表的实例分享》要点: 本文介绍了Mysql必读mysql数据库动态创建表的实例分享,希望对您有用。如果有疑问,可以联系我们。 导读:本节内容:mysql数据库动态创立表所谓动态创立表:即表的字段名和字段数均不固定,根据需求来创

《Mysql必读mysql数据库动态创建表的实例分享》要点:
本文介绍了Mysql必读mysql数据库动态创建表的实例分享,希望对您有用。如果有疑问,可以联系我们。

导读:本节内容:mysql数据库动态创立表所谓动态创立表:即表的字段名和字段数均不固定,根据需求来创立.第一步.创立相关表 /*---建立所有指标...

MYSQL入门本节内容:
mysql数据库动态创立表

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,Value)values('买入信息',?1,Value)values('买卖价差',?2,Value)values('卖出信息',?3,Parent,Value)values('中债最新估值',?4,?-1,Value)values('含权债行权指标',?5,Value)values('基础指标',?6,Value)values('双边报价笔数',?7,Value)values('报价方',?8,?'col4');
insert into INTERBANKBONDQUOTE_SClass(Name,Value)values('报价方会员号',?9,?'col5');
insert into INTERBANKBONDQUOTE_SClass(Name,Value)values('报价时间',?10,?'col6');
insert into INTERBANKBONDQUOTE_SClass(Name,Value)values('匿名',?11,?'col7');

MYSQL入门第二步:
?

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

MYSQL入门第三步:

MYSQL入门因为在mysql中,这时的变量长度受到了限制,本来应该longtext足够长的,可实际只返回了限制长度的.
如果字段太多了,就要用第二种办法.

MYSQL入门存储过程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;

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

MYSQL入门DROP PROCEDURE IF EXISTS INTERBANKBONDQUOTE_TSP_Title;
drop table if EXISTS Title;

MYSQL入门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;

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

MYSQL入门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,' ');

MYSQL入门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_value,' where mid=100');

MYSQL入门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;

MYSQL入门//挪用存储过程
call INTERBANKBONDQUOTE_TSP_Title;

欢迎参与《Mysql必读mysql数据库动态创建表的实例分享》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读