重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这段时间要弄财务报表,遇到了一个动态行转列的问题,数据库用的是mysql的。感觉mysql实现动态行转列比mssql复杂多了。网上的都是处理的一个表(比较简单),而我要处理的数据来自于多个表,对于行转列的行也要进行一定的过滤处理,最后在自己的努力下,总算出来啦,附件是完整代码。这两个存储过程都是带输入参数的,一个对要转的行有处理,一个没有处理,两个例子,都放出来,希望可以给遇到同样问题的朋友一些帮助。
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站建设、网站设计、聂荣网络推广、重庆小程序开发、聂荣网络营销、聂荣企业策划、聂荣品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供聂荣建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
在MySQL数据库修改字段名方法:
1、语句:alter table student change physics physisc char(10) not null。
2、其中char(10) not null是你physisc字段的create_definition。
SQL的要点是中抽象应用程序以避免数据存储格式。你应该总是以你想要检索数据的意愿指定顺序。例如:
SELECT col_name1, col_name2, col_name3 FROM tbl_name;
将以col_name1、col_name2、col_name3的顺序返回列,而:
SELECT col_name1, col_name3, col_name2 FROM tbl_name;
将以col_name1、col_name3、col_name2的顺序返回列。
在一个应用程序中,你应该决不基于他们的位置使用SELECT * 检索列,因为被返回的列的顺序永远不能保证;对你的数据库的一个简单改变可能导致你的应用程序相当有戏剧性地失败。
不管怎样,如果你想要改变列的顺序,你可以这样做:
以正确的列顺序创建一张新表。
执行INSERT INTO new_table SELECT fields-in-new_table-order FROM old_table.
删除或改名old_table。
ALTER TABLE new_table RENAME old_table。
下面列出:
1.增加一个字段
alter table user add COLUMN new1 VARCHAR(20) DEFAULT NULL; //增加一个字段,默认为空
alter table user add COLUMN new2 VARCHAR(20) NOT NULL; //增加一个字段,默认不能为空
2.删除一个字段
alter table user DROP COLUMN new2; //删除一个字段
3.修改一个字段
alter table user MODIFY new1 VARCHAR(10); //修改一个字段的类型
alter table user CHANGE new1 new4 int; //修改一个字段的名称,此时一定要重新
//主键
alter table tabelname add new_field_id int(5) unsigned default 0 not null auto_increment ,add primary key (new_field_id);
//增加一个新列
alter table t2 add d timestamp;
alter table infos add ex tinyint not null default ‘0′;
//删除列
alter table t2 drop column c;
//重命名列
alter table t1 change a b integer;
//改变列的类型
alter table t1 change b b bigint not null;
alter table infos change list list tinyint not null default ‘0′;
//重命名表
alter table t1 rename t2;
加索引
mysql alter table tablename change depno depno int(5) not null;
mysql alter table tablename add index 索引名 (字段名1[,字段名2 …]);
mysql alter table tablename add index emp_name (name);
加主关键字的索引
mysql alter table tablename add primary key(id);
加唯一限制条件的索引
mysql alter table tablename add unique emp_name2(cardnumber);
删除某个索引
mysqlalter table tablename drop index emp_name;
增加字段:
mysql ALTER TABLE table_name ADD field_name field_type;
修改原字段名称及类型:
mysql ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;
删除字段:
mysql ALTER TABLE table_name DROP field_name;
mysql修改字段长度
alter table 表名 modify column 字段名 类型;
例如
数据库中user表 name字段是varchar(30)
可以用
alter table user modify column name varchar(50) ;
你可以试试这样
update 表名 set 列名=修改后的值 ORDER BY id limit 50;
这里的order by 没指明就是默认升序,如是order by 列名 desc即为降序排列,使用时需清楚你要修改哪一部分
不知道有没有用,不过你还是试一试吧
表table1:A列数据,开头都有0,用什么语句可以把0都统一去掉。B列数据,要在数据中倒数第三个字符前加A。
update tablename set id2=id1 where id2 is null
如果考虑空字符串也在范围内,那么就用这个。
update tablename set id2=id1 where id2 is null or id2 = ''