相关SQL语句如下:
修改表名:EXECsp_rename'oldName','newName'
插入数据:insertintonewTable(column1,column2,.....)selectcolumn1,column2,.....fromoldTable
更多相关操作:
参考数据库、表、列的重命名
列出参考内容来方便查看
一、更改数据库名
代码如下:
sp_renamedb
更改数据库的名称。
语法
sp_renamedb[@dbname=]'old_name',
[@newname=]'new_name'
参数
[@dbname=]'old_name'
是数据库的当前名称。old_name为sysname类型,无默认值。
[@newname=]'new_name'
是数据库的新名称。new_name必须遵循标识符规则。new_name为sysname类型,无默认值。
返回代码值
0(成功)或非零数字(失败)
权限
只有sysadmin和dbcreator固定服务器角色的成员才能执行sp_renamedb。
示例
下例将数据库accounting改名为financial。
EXECsp_renamedb'accounting','financial'
二、更改表名或列名
代码如下:
sp_rename[@objname=]'object_name',
[@newname=]'new_name'
[,[@objtype=]'object_type']
/////////////////////////////////////////////
A.重命名表
下例将表customers重命名为custs。
EXECsp_rename'customers','custs'
B.重命名列
下例将表customers中的列contacttitle重命名为title。
EXECsp_rename'customers.[contacttitle]','title','COLUMN'
参考复制表结构和表数据的SQL语句
列出参考内容来方便查看
1.复制表结构及数据到新表
CREATETABLE新表SELECT*FROM旧表
2.只复制表结构到新表
CREATETABLE新表SELECT*FROM旧表WHERE1=2
即:让WHERE条件不成立.
方法二:(由tianshibao提供)
CREATETABLE新表LIKE旧表
3.复制旧表的数据到新表(假设两个表结构一样)
INSERTINTO新表SELECT*FROM旧表
4.复制旧表的数据到新表(假设两个表结构不一样)
INSERTINTO新表(字段1,字段2,.......)SELECT字段1,字段2,......FROM旧表
想到这,发现好像还少了点什么,呃,procedure和constraint,好吧,那我也先删除再添加
先查出来
selectnamefromsys.procedures
selectconstraint_name,table_namefrominformation_schema.table_constraints
再删除
dropprocedure[dbo].[procedure_name]
altertabletableNamedropCONSTRAINT[PK_|FK_|UK_|DF_|CK_]
这里再补充一些东西,关于约束前缀,参考SQL约束前缀
方便查看,再列出来
--主键
constraintPK_字段primarykey(字段),
--唯一约束
constraintUK_字段uniquekey(字段),
--默认约束
constrintDF_字段default('默认值')for字段,
--检查约束
constraintCK_字段check(约束。如:len(字段)>1),
--主外键关系
constraintFK_主表_从表foreign(外键字段)references主表(主表主键字段)
然后再从脚本中读取相应脚本文件并执行(加句废话:要执行多行脚本文件,CommandText里加'\n'就好了)。
解决方案三:思来想去,为什么非要导入数据,直接改表结构就好了呀。于是读取表中字段
selectcolumn_name,data_typefrominformation_schema.columnswheretable_name='tableName'
对于旧表中存在的字段
ALTERTABLE[tableName]ALTERCOLUMN[columnName][int]NOTNULL
对于旧表中不存在的字段
ALTERTABLE[tableName]ADDCOLUMN[columnName][int]NOTNULL
|