下面是几种不同数据库的升级脚本比较,实际上是对不同数据库版本的ALTER命令用法的比较
约定:[]内的内容可有可无
1,修改字段类型[关键字:modify&alter]
mysql:
ALTER TABLE 表名 MODIFY [COLUMN] 字段名 字段类型定义;
sqlserver:
ALTER TABLE 表名 ALTER COLUMN 字段名 字段类型定义;
[这里在修改约束的时候需要用到专门的关键字CONSTRAINT]
oracle:
ALTER TABLE 表名 MODIFY ( 字段名 字段类型定义);
[Oracle,修改类型时所改字段的数据必须为空:]
2,增加和删除字段
增加字段
ALTER TABLE 表名 ADD 字段名 字段类型定义;
删除字段
mysql:
ALTER TABLE 表名 DROP[COLUMN] 字段名
sqlserver:
ALTER TABLE 表名 DROP COLUMN 字段名
3,修改列名
mysql:
可以用CHANGE同时修改列名和列类型,如:
ALTER TABLE table CHANGE column newcolumn BIT NOT NULL
这里column和newcolumn可以相同,
也就是说,CHANGE可以取代MODIFY了,可以用来单纯修改列类型或者列名
sqlserver:
暂时只能调用存储过程
EXEC SP_RENAME table.column','newcolumn','COLUMN'
oracle:
在817版本以上支持RENAME了,没有具体测试过,9i以上版本比较保险
ALTER TABLE table RENAME COLUMN column TO newcolumn;
以下是mysql的
1.增加一个字段(一列)
alter table table_name add column column_name type default value; type指该字段的类型,value指该字段的默认值
例如:alter table mybook add column publish_house varchar(10) default '';
刪除一個字段
alter table drop column xxx ---> xxx为列名
2.更改一个字段名字(也可以改变类型和默认值)
alter table table_name change sorce_col_name dest_col_name type default value; source_col_name指原来的字段名称,dest_col_name指改后的字段名称
例如:alter table Board_Info change IsMobile IsTelphone int(3) unsigned default 1;
3.改变一个字段的默认值
alter table table_name alter column_name set default value;
例如:alter table book alter flag set default '0';
4.改变一个字段的数据类型
alter table table_name change column column_name column_name type;
例如:alter table userinfo change column username username varchar(20);
5.向一个表中增加一个列做为主键
alter table table_name add column column_name type auto_increment PRIMARY KEY;
例如:alter table book add column id int(10) auto_increment PRIMARY KEY;
6.数据库某表的备份,在命令行中输入:
mysqldump -u root -p database_name table_name > bak_file_name
例如:mysqldump -u root -p f_info user_info > user_info.dat
7.导出数据
select_statment into outfile"dest_file";
例如:select cooperatecode,createtime from publish limit 10 into outfile"/home/mzc/temp/tempbad.txt";
8.导入数据
load data infile"file_name" into table table_name;
例如:load data infile"/home/mzc/temp/tempbad.txt" into table pad;
9.将两个表里的数据拼接后插入到另一个表里。下面的例子说明将t1表中的com2和t2表中的com1字段的值拼接后插入到tx表对应的字段里。
例如:insert into tx select t1.com1,concat(t1.com2,t2.com1) from t1,t2;
约定:[]内的内容可有可无
1,修改字段类型[关键字:modify&alter]
mysql:
ALTER TABLE 表名 MODIFY [COLUMN] 字段名 字段类型定义;
sqlserver:
ALTER TABLE 表名 ALTER COLUMN 字段名 字段类型定义;
[这里在修改约束的时候需要用到专门的关键字CONSTRAINT]
oracle:
ALTER TABLE 表名 MODIFY ( 字段名 字段类型定义);
[Oracle,修改类型时所改字段的数据必须为空:]
2,增加和删除字段
增加字段
ALTER TABLE 表名 ADD 字段名 字段类型定义;
删除字段
mysql:
ALTER TABLE 表名 DROP[COLUMN] 字段名
sqlserver:
ALTER TABLE 表名 DROP COLUMN 字段名
3,修改列名
mysql:
可以用CHANGE同时修改列名和列类型,如:
ALTER TABLE table CHANGE column newcolumn BIT NOT NULL
这里column和newcolumn可以相同,
也就是说,CHANGE可以取代MODIFY了,可以用来单纯修改列类型或者列名
sqlserver:
暂时只能调用存储过程
EXEC SP_RENAME table.column','newcolumn','COLUMN'
oracle:
在817版本以上支持RENAME了,没有具体测试过,9i以上版本比较保险
ALTER TABLE table RENAME COLUMN column TO newcolumn;
以下是mysql的
1.增加一个字段(一列)
alter table table_name add column column_name type default value; type指该字段的类型,value指该字段的默认值
例如:alter table mybook add column publish_house varchar(10) default '';
刪除一個字段
alter table drop column xxx ---> xxx为列名
2.更改一个字段名字(也可以改变类型和默认值)
alter table table_name change sorce_col_name dest_col_name type default value; source_col_name指原来的字段名称,dest_col_name指改后的字段名称
例如:alter table Board_Info change IsMobile IsTelphone int(3) unsigned default 1;
3.改变一个字段的默认值
alter table table_name alter column_name set default value;
例如:alter table book alter flag set default '0';
4.改变一个字段的数据类型
alter table table_name change column column_name column_name type;
例如:alter table userinfo change column username username varchar(20);
5.向一个表中增加一个列做为主键
alter table table_name add column column_name type auto_increment PRIMARY KEY;
例如:alter table book add column id int(10) auto_increment PRIMARY KEY;
6.数据库某表的备份,在命令行中输入:
mysqldump -u root -p database_name table_name > bak_file_name
例如:mysqldump -u root -p f_info user_info > user_info.dat
7.导出数据
select_statment into outfile"dest_file";
例如:select cooperatecode,createtime from publish limit 10 into outfile"/home/mzc/temp/tempbad.txt";
8.导入数据
load data infile"file_name" into table table_name;
例如:load data infile"/home/mzc/temp/tempbad.txt" into table pad;
9.将两个表里的数据拼接后插入到另一个表里。下面的例子说明将t1表中的com2和t2表中的com1字段的值拼接后插入到tx表对应的字段里。
例如:insert into tx select t1.com1,concat(t1.com2,t2.com1) from t1,t2;