>

MySQL基础二,mysql基础

- 编辑:乐百家599手机首页 -

MySQL基础二,mysql基础

mysql存储进度中运用变量批量改变数据

--表结构

MySQL基础二,mysql基础

mysql数据库动态成立表

 

CREATE TABLE `address` ( `id` int(11) NOT NULL AUTO_INCREMENT, `code_value` varchar(32) DEFAULT NULL COMMENT '区域编码', `name` varchar(128) DEFAULT NULL COMMENT '区域名称', `remark` varchar(128) DEFAULT NULL COMMENT '说明', `pid` varchar(32) DEFAULT NULL COMMENT 'pid是code_value', PRIMARY KEY (`id`), KEY `ix_name` (`name`,`code_value`,`pid`) ) ENGINE=InnoDB AUTO_INCREMENT=1033 DEFAULT CHA纳瓦拉SET=utf8 COMMENT='行政区域表';

视图

视图是二个虚拟表(非真实存在),其本质是【依照SQL语句获取动态的数据集,并为其取名】,用户选择时只需使用【名称】就能够取得结果集,并得以将其当作表来利用。

图片 1SELECT * FROM ( SELECT nid, NAME FROM tb1 WHERE nid > 2 ) AS A WHERE A. NAME > 'alex'; 有的时候表搜索

1、创设视图

图片 2--格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v1 AS SELET nid, name FROM A WHER伊妮德 > 4 View Code

2、删除视图

图片 3--格式:DROP VIEW 视图名称 DROP VIEW v1 View Code

3、修改视图

图片 4-- 格式:ALTE途锐 VIEW 视图名称 AS SQL语句 ALTE安德拉 VIEW v1 AS SELET A.nid, B. NAME FROM A LEFT JOIN B ON A.id = B.nid LEFT JOIN C ON A.id = C.nid WHERE A.id > 2 AND C.nid < 5 View Code

4、使用视图

行使视图时,将其当作表举办操作就可以,由于视图是虚拟表,所以无法采纳其对就地取材表打开创办、更新和删除操作,仅能做询问用。

图片 5select * from v1 View Code

 

BEGIN 

 

触发器

对有些表打开【增/删/改】操作的内外如若希望触发有些特定的行事时,能够动用触发器,触发器用于定制用户对表的行开始展览【增/删/改】前后的一举一动。

1、创制基本语法

图片 6# 插入前 CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOR EACH ROW BEGIN ... END # 插入后 CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROW BEGIN ... END # 删除前 CREATE TRIGGER tri_before_delete_tb1 BEFORE DELETE ON tb1 FOR EACH ROW BEGIN ... END # 删除后 CREATE TRIGGER tri_after_delete_tb1 AFTER DELETE ON tb1 FOR EACH ROW BEGIN ... END # 更新前 CREATE TRIGGER tri_before_update_tb1 BEFORE UPDATE ON tb1 FOR EACH ROW BEGIN ... END # 更新后 CREATE TRIGGER tri_after_update_tb1 AFTER UPDATE ON tb1 FOR EACH ROW BEGIN ... END View Code 图片 7delimiter // CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOTucson EACH ROW BEGIN IF NEW. NAME == 'alex' THEN INSERT INTO tb2 (NAME) VALUES ('aa') END END// delimiter ; 插入前触发器 图片 8delimiter // CREATE TRIGGER tri_after_insert_tb1 AFTE昂Cora INSERT ON tb1 FO奥迪Q7 EACH ROW BEGIN IF NEW. num = 666 THEN INSERT INTO tb2 (NAME) VALUES ('666'), ('666') ; ELSEIF NEW. num = 555 THEN INSERT INTO tb2 (NAME) VALUES ('555'), ('555') ; END IF; END// delimiter ; 插入后触发器

特别的:NEW代表就要插入的多寡行,OLD表示将要删除的数据行。

2、删除触发器

图片 9DROP TRIGGER tri_after_insert_tb1; View Code

3、使用触发器

触发器不可能由用户直接调用,而知由于对表的【增/删/改】操作被动引发的。

图片 10insert into tb1(num) values(666) View Code

世家一般恐怕没多少有这种须要呢,笔者原先也未尝遇上过,但此次做项目供给如此做。 

declare i int;#查找表的列数 

--mysql 达成树结构查询 --方法一

积累进程

存款和储蓄进度是贰个SQL语句集合,当主动去调用存款和储蓄进度时,在那之中内部的SQL语句会依照逻辑奉行。

1、创立存款和储蓄进度

图片 11-- 创立存款和储蓄进程 delimiter // create procedure p1() BEGIN select * from t1; END// delimiter ; -- 实施存款和储蓄进程 call p1() 无参数存款和储蓄进度

对于仓库储存进度,能够接收参数,其参数有三类:

  • in          仅用于传入参数用
  • out        仅用于再次回到值用
  • inout     不仅能够流传又足以当作再次来到值

图片 12-- 创造存款和储蓄进程 delimiter \ create procedure p1( in i1 int, in i2 int, inout i3 int, out r1 int ) BEGIN DECLARE temp1 int; DECLARE temp2 int default 0; set temp1 = 1; set r1 = i1 i2 temp1 temp2; set i3 = i3

  • 100; end\ delimiter ; -- 实行存储进度 DECLARE @t1 INT default 3; DECLARE @t2 INT; CALL p1 (1, 2 ,@t1, @t2); SELECT @t1,@t2; 有参数存款和储蓄进度

2、删除存款和储蓄进度

图片 13drop procedure proc_name; View Code

3、实行存款和储蓄进度

图片 14-- 无参数 call proc_name() -- 有参数,全in call proc_name(1,2) -- 有参数,有in,out,inout DECLARE @t1 INT; DECLARE @t2 INT default 3; call proc_name(1,2,@t1,@t2) View Code 图片 15#!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1') cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 实施存款和储蓄进程 cursor.callproc('p1', args=(1, 22, 3, 4)) # 获取推行完存款和储蓄的参数 cursor.execute("select @_p1_0,@_p1_1,@_p1_2,@_p1_3") result = cursor.fetchall() conn.commit() cursor.close() conn.close() print(result) pymysql试行存款和储蓄进程

 

declare column_name_temp varchar(100);##查找表的列名 

CREATE PROCEDURE sp_showChildLst(IN rootId varchar(20)) BEGIN CREATE TEMPORARY TABLE IF NOT EXISTS tmpLst (sno int primary key auto_increment,code_value VARCHAR(20),depth int); DELETE FROM tmpLst; CALL sp_createChildLst(rootId,0); select tmpLst.*,address.* from tmpLst,address where tmpLst.code_value=address.code_value order by tmpLst.sno; END

函数

MySQL中提供了数不完平放函数,举个例子:

图片 16 CHAR_LENGTH(str) 重回值为字符串str 的长短,长度的单位为字符。贰个多字节字符算作叁个单字符。 对于一个饱含八个二字节字符集, LENGTH()再次回到值为 10, 而CHAHighlander_LENGTH()的重临值为5。 CONCAT(str1,str2,...) 字符串拼接 如有任何四个参数为NULL ,则重回值为 NULL。 CONCAT_WS(separator,str1,str2,...) 字符串拼接(自定义连接符) CONCAT_WS()不会忽视任何空字符串。 (但是会忽视全数的 NULL)。 CONV(N,from_base,to_base) 进制转变 比方: SELECT CONV('a',16,2); 表示将 a 由16进制转变为2进制字符串表示 FORMAT(X,D) 将数字X 的格式写为'#,###,###.##',以四舍五入的章程保存小数点后 D 位, 并将结果以字符串的样式再次来到。若 D 为 0, 则再次回到结果不包罗小数点,或不含小数部分。 比如: SELECT FORMAT(12332.1,4); 结果为: '12,332.1000' INSERT(str,pos,len,newstr) 在str的钦点地方插入字符串 pos:要替换个地方置其实地点 len:替换的长短 newstr:新字符串 极度的: 假如pos超越原字符串长度,则赶回原字符串 如若len当先原字符串长度,则由新字符串完全替换 INST途睿欧(str,substr) 再次回到字符串 str 中子字符串的第一个冒出岗位。 LEFT(str,len) 重临字符串str 从伊始的len地点的子种类字符。 LOWE福特Explorer(str) 变小写 UPPE路虎极光(str) 变大写 LT本田CR-VIM(str) 重回字符串 str ,其教导空格字符被删除。 RTPRADOIM(str) 再次回到字符串 str ,结尾空格字符被剔除。 SUBSTENVISIONING(str,pos,len) 获取字符串子系列LOCATE(substr,str,pos) 获取子类别索引地点 REPEAT(str,count) 再次来到三个由重复的字符串str 组成的字符串,字符串str的数据等于count 。 若 count <= 0,则赶回三个空字符串。 若str 或 count 为 NULL,则赶回 NULL 。 REPLACE(str,from_str,to_str) 重临字符串str 以及具备被字符串to_str替代的字符串from_str 。 REVE福特ExplorerSE(str) 再次回到字符串 str ,顺序和字符顺序相反。 TiggoIGHT(str,len) 从字符串str 开端,重回从后边开首len个字符组成的子类别 SPACE(N) 重回四个由N空格组成的字符串。 SUBST科雷傲ING(str,pos) , SUBSTLX570ING(str FROM pos) SUBST凯雷德ING(str,pos,len) , SUBSTHighlanderING(str FROM pos FO奥迪Q5 len) 不带有len 参数的格式从字符串str再次来到一个子字符串,早先于地方pos。带有len参数的格式从字符串str重回三个长短同len字符一样的子字符串,起初于地方pos。 使用 FROM的格式为正式 SQL 语法。也大概对pos使用八个负值。借使那样,则子字符串的岗位起先于字符串结尾的pos 字符,而不是字符串的启幕地方。在以下格式的函数中能够对pos 使用三个负值。 mysql> SELECT SUBST宝马7系ING('Quadratically',5); -> 'ratically' mysql> SELECT SUBSTPAJEROING('foobarbar' FROM 4); -> 'barbar' mysql> SELECT SUBST哈弗ING('Quadratically',5,6); -> 'ratica' mysql> SELECT SUBST奔驰M级ING('Sakila', -3); -> 'ila' mysql> SELECT SUBSTCRUISERING('Sakila', -5, 3); -> 'aki' mysql> SELECT SUBST兰德途达ING('Sakila' FROM -4 FO昂Cora 2); -> 'ki' TWranglerIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) TRIM(remstr FROM] str) 重回字符串 str , 个中全部remstr 前缀和/或后缀都已被删去。若分类符BOTH、LEADIN或TRAILING中尚无一个是给定的,则只要为BOTH 。 remstr 为可挑选,在未钦点意况下,可去除空格。 mysql> SELECT T本田UR-VIM(' bar '); -> 'bar' mysql> SELECT T凯雷德IM(LEADING 'x' FROM 'xxxbarxxx'); -> 'barxxx' mysql> SELECT TOdysseyIM(BOTH 'x' FROM 'xxxbarxxx'); -> 'bar' mysql> SELECT T路虎极光IM(TRAILING 'xyz' FROM 'barxxyz'); -> 'barx' 部分内置函数

愈来愈多函数:猛击这里 O帕杰罗 猛击这里

1、自定义函数

图片 17delimiter \ create function f1( i1 int, i2 int) returns int BEGIN declare num int; set num = i1 i2; return(num); END \ delimiter ; View Code

2、删除函数

图片 18drop function func_name; View Code

3、试行函数

图片 19# 获取再次回到值 declare @i VA智跑CHA索罗德(32); select UPPE途观('alex') into @i; SELECT @i; # 在询问中央银行使 select f1(11,nid) ,name from tb2; View Code

   就是表的字段名和字段数都不是永远的,要基于须要来创立。 

DECLARE column_un_change varchar(100); 

 

事务

政工用于将一些操作的八个SQL作为原子性操作,一旦有某三个冒出谬误,就能够回滚到原本的情状,从而保险数据库数据完整性。

图片 20delimiter \ create PROCEDURE p1( OUT p_return_code tinyint ) BEGIN DECLARE exit handler for sqlexception BEGIN -- ERROR set p_return_code = 1; rollback; END; DECLARE exit handler for sqlwarning BEGIN -- WARNING set p_return_code = 2; rollback; END; START TRANSACTION; DELETE from tb1; insert into tb2(name)values('seven'); COMMIT; -- SUCCESS set p_return_code = 0; END\ delimiter ; 帮忙工作的存款和储蓄进程 图片 21DECLARE @i TINYINT; call p1(@i); select @i; 实行存款和储蓄过程

   www.2cto.com  

DECLARE table_temp_name varchar(100); 

CREATE PROCEDURE sp_createChildLst(IN rootId varchar(20),IN nDepth INT) BEGIN DECLARE done INT DEFAULT 0; DECLARE b VARCHAR(20); DECLARE cur1 CURSOR FOR SELECT code_value FROM address where pid=rootId; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; insert into tmpLst values (null,rootId,nDepth);

索引

目录,是数据库中极其用于支援用户急忙查询数据的一种数据结构。类似于字典中的目录,查找字典内容时方可依照目录查找到数据的存放地点,然后径直获取就能够。

MySQL中常见索引有:

  • 习感到常索引
  • 唯一索引
  • 主键索引
  • 组成索引

1、普通索引

一般索引仅有多个效果:加快查询

图片 22create table in1( nid int not null auto_increment primary key, name varchar(32) not null, email varchar(64) not null, extra text, index ix_name (name) ) 创建表 索引 图片 23create index index_name on table_name(column_name) 创设索引 图片 24drop index_name on table_name; 删除索引 图片 25show index from table_name; 查看索引

在意:对于开创索引时只要是BLOB 和 TEXT 类型,必须钦命length。

图片 26create index ix_extra on in1(extra(32)); View Code

2、唯一索引

唯一索引有三个作用:加快查询 和 唯一约束(可含null)

图片 27create table in1( nid int not null auto_increment primary key, name varchar(32) not null, email varchar(64) not null, extra text, unique ix_name (name) ) 创设表 唯一索引 图片 28create unique index 索引名 on 表名(列名) 创制唯一索引 图片 29drop unique index 索引名 on 表名 删除唯一索引

3、主键索引

主键有四个成效:加快查询 和 唯一约束(不可含null)

图片 30create table in1( nid int not null auto_increment primary key, name varchar(32) not null, email varchar(64) not null, extra text, index ix_name (name) ) OR create table in1( nid int not null auto_increment, name varchar(32) not null, email varchar(64) not null, extra text, primary key(ni1), index ix_name (name) ) 成立表 创制主键 图片 31alter table 表名 add primary key(列名); 创设主键 图片 32alter table 表名 drop primary key; alter table 表名 modify 列名 int, drop primary key; 删除主键

4、组合索引

整合索引是将n个列组合成八个目录

其采用场景为:频仍的还要利用n列来实行查询,如:where n1 = 'alex' and n2 = 666。

图片 33create table in3( nid int not null auto_increment primary key, name varchar(32) not null, email varchar(64) not null, extra text ) 创建表 图片 34create index ix_name_email on in3(name,email); 创制组合索引

如上创制组合索引之后,查询:

  • name and email  -- 使用索引
  • name                 -- 使用索引
  • email                 -- 不使用索引

瞩目:对于同偶尔间探究n个原则时,组合索引的习性好于多个纯粹索引合并。

   那是自己的创导造成进度,大家照着演示一下就知道了自笔者的动态表的首尾了。 

declare description varchar(100); 

SET @@max_sp_recursion_depth = 10; OPEN cur1; FETCH cur1 INTO b; WHILE done=0 DO CALL sp_createChildLst(b,nDepth 1); FETCH cur1 INTO b; END WHILE; CLOSE cur1; END

其他 

1、条件语句

图片 35delimiter \ CREATE PROCEDURE proc_if () BEGIN declare i int default 0; if i = 1 THEN SELECT 1; ELSEIF i = 2 THEN SELECT 2; ELSE SELECT 7; END IF; END\ delimiter ; if条件语句

2、循环语句

图片 36delimiter \ CREATE PROCEDURE proc_while () BEGIN DECLARE num INT ; SET num = 0 ; WHILE num < 10 DO SELECT num ; SET num = num 1 ; END WHILE ; END\ delimiter ; while循环 图片 37delimiter \ CREATE PROCEDURE proc_repeat () BEGIN DECLARE i INT ; SET i = 0 ; repeat select i; set i = i 1; until i >= 5 end repeat; END\ delimiter ; repeat循环 图片 38delimiter \ CREATE PROCEDURE proc_loop () BEGIN declare i int default 0; loop_label: loop select i; set i=i 1; if i>=5 then leave loop_label; end if; end loop; END\ delimiter ; loop

3、动态实践SQL语句

图片 39delimiter \ DROP PROCEDURE IF EXISTS proc_sql \ CREATE PROCEDURE proc_sql () BEGIN declare p1 int; set p1 = 11; set @p1 = p1; PREPARE prod FROM 'select * from tb2 where nid > ?'; EXECUTE prod USING @p1; DEALLOCATE prepare prod; END\ delimiter ; 动态实行SQL

 

视图 视图是三个虚拟表(非真实存在),其本质是【依照SQL语句获取动态的数据集,并为其命名】,用户使用时只需...

 

declare code varchar(100); 

--方法二(此办法有线程安全难题)

先是步.创制连锁表 

set column_un_change = 'OTHER_INCOME'; 

CREATE PROCEDURE sp_getAddressChild_list(in idd varchar(36)) begin declare lev int; set lev=1; drop table if exists tmp1; CREATE TABLE tmp1(code_value VARCHAR(36),`name` varchar(50),pid varchar(36) ,levv INT); INSERT tmp1 SELECT code_value,`name`,pid,1 FROM address WHERE pid=idd; while row_count()>0 do set lev=lev 1; INSERT tmp1 SELECT t.code_value,t.`name`,t.pid,lev from address t join tmp1 a on t.pid=a.code_value AND levv=lev-1; end while ; INSERT tmp1 SELECT code_value,`name`,pid,0 FROM address WHERE code_value=idd; SELECT * FROM tmp1; end

 

set description='description'; 

--方法三

   /*---创设具备目的音信的一时表---*/ 

set code = 'code';   www.2cto.com  

CREATE FUNCTION fn_getAddress_ChildList_test(rootId INT) RETURNS varchar(1000) CHARSET utf8 #rootId为你要查询的节点 BEGIN

drop table if exists INTERBANKBONDQUOTE_SClass; 

set table_temp_name  = 'wy_notebill_detail2'; 

#注明八个一时变量 DECLARE temp VA中华VCHALAND(1000); DECLARE tempChd VA奥迪Q5CHAPRADO(1000); SET temp = '$'; SET tempChd=CAST(rootId AS CHA兰德Evoque);#把rootId强制转变为字符

create table INTERBANKBONDQUOTE_SClass ( 

 

WHILE tempChd is not null DO SET temp = CONCAT(temp,',',tempChd);#循环把具备节点连接成字符串。 SELECT GROUP_CONCAT(code_value) INTO tempChd FROM address where FIND_IN_SET(pid,tempChd)>0; END WHILE; RETURN temp; END

     Name varchar(50) not null, 

######################查找表的列名存储到一时表################### 

--方法四

     id int Primary key, 

drop table if EXISTS update_column; 

CREATE PROCEDURE sp_findAddressChild(iid varchar(50),layer bigint(20)) BEGIN /*始建接受询问的暂时表 */ create temporary table if not exists tmp_table(id varchar(50),code_value varchar(50),name varchar(50),pid VARCHAR(50)) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*摩天允许递归数*/ SET @@max_sp_recursion_depth = 10 ; call sp_iterativeAddress(iid,layer);/*大旨数据搜集*/ select * from tmp_table ;/* 展现 */ drop temporary table if exists tmp_table ;/*剔除不常表*/ END

     Parent int, 

create temporary table update_column (a INT NOT NULL AUTO_INCREMENT,PRIMARY KEY (a)) 

CREATE PROCEDURE sp_iterativeAddress(iid varchar(50),layer bigint(20)) BEGIN DECLARE t_id INT; declare t_codeValue varchar(50) default iid ; declare t_name varchar(50) character set utf8; declare t_pid varchar(50) character set utf8; /* 游标定义 */ declare cur1 CURSOR FOR select id,code_value,`name`,pid from address where pid=iid ; declare CONTINUE HANDLER FOR SQLSTATE '02000' SET t_codeValue = null; /* 允许递归深度 */ if layer>0 then OPEN cur1 ; FETCH cur1 INTO t_id,t_codeValue,t_name,t_pid ; WHILE ( t_codeValue is not null ) DO /* 宗旨数据收罗 */ insert into tmp_table values(t_id,t_codeValue,t_name,t_pid); call sp_iterativeAddress(t_codeValue,layer-1); FETCH cur1 INTO t_id,t_codeValue,t_name,t_pid ; END WHILE; end if; END

     Value varchar(50) 

TYPE = MyISAM 

--方法五 SQL实现

  );   

SELECT column_name from information_schema.`COLUMNS` where table_name = table_temp_name and column_name not in(column_un_change,description,code) and data_type not in ('date','datetime'); 

SELECT `name`,code_value AS code_value,pid AS 父ID ,levels AS 父到子之间级数, paths AS 父到子路线 FROM ( SELECT `name`,code_value,pid, @le:= IF (pid = 0 ,0, IF( LOCATE( CONCAT('|',pid,':'),@pathlevel) > 0 , SUBSTRING_INDEX( SUBSTRING_INDEX(@pathlevel,CONCAT('|',pid,':'),-1),'|',1) 1 ,@le 1) ) levels , @pathlevel:= CONCAT(@pathlevel,'|',code_value,':', @le ,'|') pathlevel , @pathnodes:= IF( pid =0,',0', CONCAT_WS(',', IF( LOCATE( CONCAT('|',pid,':'),@pathall) > 0 , SUBSTRING_INDEX( SUBSTRING_INDEX(@pathall,CONCAT('|',pid,':'),-1),'|',1) ,@pathnodes ) ,pid ) )paths ,@pathall:=CONCAT(@pathall,'|',code_value,':', @pathnodes ,'|') pathall FROM address, (SELECT @le:=0,@pathlevel:='', @pathall:='',@pathnodes:='') vv ORDER BY pid,code_value ) src ORDER BY pid

insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('最新成交', 0,'');

#######################总计列数量#################### 

--方法6  存款和储蓄进度(SQL实现)

insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('买入新闻', 1,'');

SELECT count(*) into i from update_column; 

create procedure query_all_add_children(in inPid varchar(50)) begin select id,code_value,name,remark,pid,p2id,p3id,p4id,p5id from( select a1.id,a1.code_value,a1.name,a1.remark, a1.pid,a2.pid p2id,a3.pid p3id,a4.pid p4id,a5.pid p5id from address a1 left join address a2 on(a1.pid=a2.code_value) left join address a3 on(a2.pid=a3.code_value) left join address a4 on(a3.pid=a4.code_value) left join address a5 on(a4.pid=a5.code_value) ) al where (pid=inPid or p2id=inPid or p3id=inPid or p4id=inPid or p5id=inPid ); end

insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('买卖价差', 2,'');

SELECT i;   www.2cto.com  

 

insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('卖出消息', 3,'');

loop1: WHILE i>2 DO   

村办的一对清楚:作者是用的主意一:抽取全部节点利用MySql函数截取所必要的字符串,然后在SQL中字段IN(调用此办法)来拓展询问,那样功能比较高,方法6功用也较高,别的办法都有成效难点。 

insert into INTERBANKBONDQUOTE_SClass(Name,id,Parent,Value)values('中债最新估值', 4, -1,'');

##########################给变量赋值列名####################### 

 

insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('含权债行权目标', 5,'');  www.2cto.com  

SELECT column_name into column_name_temp from update_column where a = i; 

insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('基础指标', 6,'');

SET i=i-1;   

insert into INTERBANKBONDQUOTE_SClass(Name,id,Value)values('双边报价笔数', 7,'');

本文由乐百家数据库发布,转载请注明来源:MySQL基础二,mysql基础