从mysql5.0转到mysql5.5只是因为分区表。
root用户登录后,
创建数据库,Create DATABASE IF NOT EXISTS sub_orcldefault charset utf8 COLLATE utf8_general_ci;
创建用户:GRANT ALL PRIVILEGES ON sub_orcl.* TO mobile@'%';
然后: msyql -umobile -pmobile ,登录失败,一顿谷歌度娘之后仍无结果。郁闷的认为mysql5.5不支持'%';无意中键入mysql -umobile 竟然能登录。。。
最后才发现创建用户时没指定密码,各种汗颜,好吧,都是粗心惹的祸。
重新创建用户 grant all privileges on sub_orcl.* to mobile@'%' identified by 'mobile';
想要使用分区表,首先查看当前版本是否支持分区表:
SHOW VARIABLES LIKE '%partition%';
查看编码
show variables like 'character%';
SHOW VARIABLES LIKE 'collation%';
查看版本
SELECT VERSION();
发现使用的5.0版本。MySQL 5.1 及更高版本支持分区表(partitioned table)。火速下载个5.5。
mysql对于分区表的索引有限制,要求必须包含于主键字段内。
CREATE TABLE test
(
id INT(38) NOT NULL primary key AUTO_INCREMENT,
ptnum INT(8),
NAI VARCHAR(256) NOT NULL
)
PARTITION BY RANGE (ptnum)(
PARTITION par1 VALUES LESS THAN(20120101),
PARTITION pmax VALUES LESS THAN MAXVALUE
)
;
这个注定要悲剧了。转而使用复合主键:
CREATE TABLE test
(
id INT(38) NOT NULL primary key AUTO_INCREMENT,
ptnum INT(8),
NAI VARCHAR(256) NOT NULL,
PRIMARY KEY (id,ptnum)
)
PARTITION BY RANGE (ptnum)(
PARTITION par1 VALUES LESS THAN(20120101),
PARTITION pmax VALUES LESS THAN MAXVALUE
)
;
这样就ok啦。
分区表的其他一些操作:
--add
alter table tablename add partition (partition partitionName values less than (20121212));
--del
aleter table tablename drop partition partitionName;
--meger
ALTER TABLE tablename
REORGANIZE PARTITION p201001,p201002,p201003,
p201004,p201005,p201006,
p201007,p201008,p201009 INTO
(
PARTITION p2010Q1 VALUES LESS THAN (201004),
PARTITION p2010Q2 VALUES LESS THAN (201007),
PARTITION p2010Q3 VALUES LESS THAN (201010)
);
--split
ALTER TABLE tablename REORGANIZE PARTITION p2010Q1 INTO (
PARTITION s2009 VALUES LESS THAN (201001),
PARTITION s2010 VALUES LESS THAN (201004)
);
使用expalin partitions 来查看查询语句是否使用分区过滤了数据:
EXPLAIN PARTITIONS SELECT * FROM test WHERE ptnum<20121212;
mysql的列操作
mysql修改表名,列名,列类型,添加表列,删除表列
alter table test rename test1; --修改表名
alter table test add column name varchar(10); --添加表列
alter table test drop column name; --删除表列
alter table test modify address char(10) --修改表列类型
这个貌似不成功:alter table test change address address char(40)
alter table test change column address address1 varchar(30)--修改表列名