发布网友 发布时间:2022-04-23 02:04
共9个回答
懂视网 时间:2022-04-30 10:24
今天有个临时任务,修改生产环境的数据库表名和字段名。以前要修改表名字段名都是在开发环境,直接打开
SQL Server找到对应的表或字段重命名就OK啦,可是这是线上数据库,再想直接F2修改是不可能的啦。怎么办?乖
乖写脚本呗。上网了解了一些相关资料,结合我自己操作过程中出现的一些实际问题简单作个总结,再次加深下印
象。
SQL自带了一系列的系统存储过程。其中sp_rename就具有修改表名和列名的功能。对于sp_rename是这样定
义的:更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。
基本语法
修改表名:EXEC sp_rename ‘[原有表名]’, ‘[新表名]‘;
修改列名:EXEC sp_rename ‘[原有列名]’, ‘[新列名]‘ , ‘COLUMN‘;
百度百科链接
http://baike.baidu.com/link?url=62aL-_e-KkdpZjw-dx_uAnOu8xEs9nuLd0TPn-ESZZy_hw2ahMYtjUVZyWToQn6w9r7lB_H_5qLmF4aj5Njq
实例讲解
现有数据库testDB,框架体dbo,dbo下有三张表分别为animal(code,name),bird(code,name,animalCode‘),cat(code,name,animalCode‘)
接下来我对这三张表进行如下操作:
修改表名、修改列名、修改属性类型、添加属性
<span style="font-family:Verdana;font-size:18px;">USE testDB GO --将animal表名更改为animalCategory EXEC sp_rename '[dbo].[animal]','animalCategory'; --将bird表中的外键animalCode更改为animalCategoryCode EXEC sp_rename '[dbo].[bird].animalCode','animalCategoryCode','COLUMN'; --将bird表中属性name的类型修改为VARCHAR ALTER TABLE [dbo].[bird] ALTER COLUMN name VARCHAR(20) --向bird表中添加颜色外键 ALTER TABLE [dbo].[bird] ADD colorCode INT NULL GO</span>
注意下面一段脚本执行后抛出异常:
消息 15248,级别 11,状态 1,过程 sp_rename,第 238 行
参数 @objname 不明确或所声明的 @objtype (COLUMN)有误。
<span style="font-family:Verdana;font-size:18px;">USE testDB GO --将cat表名更改为petCat EXEC sp_rename 'cat','petCat'; --将bird表中的外键animalCode更改为animalCategoryCode EXEC sp_rename 'cat.animalCode','animalCategoryCode','COLUMN'; GO</span>
这样看,也没有什么错呀,修改表名、修改列名。再仔细看你就会发现:执行完第一句SQL后cat表已经被重命
名为petCat,所以再次执行第二句SQL的时候就找不到表cat了。
因此如果同时修改表名和字段名要注意修改的先后顺序或者直接记住:先改列后改表
另外还有一点需要注意
我的这一段脚本没有给框架体,即表的限定条件dbo。当不给表限定条件的时候默认为dbo,所以我这里没有报
错。假如现在cat表的限定条件为tmp.cat,那么这段脚本会抛出异常,因为在默认的dbo下找不到cat表。
因此在对表进行操作的时候要养成一个好习惯:随时都带有框架体。
感受
知识点不多,但也是今天的收获,滴水石川。
相比较第一点,这一点收获更重要:清楚的思维逻辑和好的编程习惯!
在执行的SQL语句中还应用到了另外一个存储过程sys.sp_addextendedproperty,作个简单示例。感兴趣的话
可以上网查查。
<span style="font-family:Verdana;font-size:18px;">============================================================= -- 作 者:wyq -- 功 能:学生信息表添加是否是教师子女属性 -- 日 期:2015-7-28 -- 说 明: --学生信息表添加是否是教师子女属性 =============================================================BEGIN TRAN USE BasicService ALTER TABLE dbo.StudentInfo ADD IsToTeacher BIT NULL EXEC sys.sp_addextendedproperty @name = N'MS_Description', @value = N'是否是教师子女', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'StudentInfo', @level2type = N'COLUMN', @level2name = N'IsToTeacher' --COMMIT TRAN</span>
关键字:数据库 修改表名 修改列名 修改属性类型
sp_rename
版权声明:本文为博主原创文章,未经博主允许不得转载。
SQL语句修改表名和字段名
标签:
热心网友 时间:2022-04-30 07:32
SQL Server中修改字段名的语句是:sp_rename '表名.旧字段名','新字段名'
字段名name改为Snam的语句如下:sp_rename 'test.name','sname'
一、语法定义
sp_rename指更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。
二、语法介绍
sp_rename [ @objname = ] 'object_name' ,
[ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
三、参数说明
1、[@objname =] 'object_name'—是用户对象(表、视图、列、存储过程、触发器、默认值、数据库、对象或规则)或数据类型的当前名称。如果要重命名的对象是表中的一列,那么 object_name 必须为 table.column 形式。如果要重命名的是索引,那么 object_name 必须为 table.index 形式。object_name 为 nvarchar(776) 类型,无默认值。
2、[@newname =] 'new_name'—是指定对象的新名称。new_name 必须是名称的一部分,并且要遵循标识符的规则。newname 是 sysname 类型,无默认值。
3、[@objtype =] 'object_type' —是要重命名的对象的类型。object_type 为 varchar(13) 类型,其默认值为 NULL,可取下列值。
热心网友 时间:2022-04-30 08:50
SQL Server中修改字段名的语句是:
sp_rename '表名.旧字段名','新字段名'如,有test表如下,其中包含id和name字段,现在要将name字段改名为snmae。
语句如下:
再看test表结构,修改成功。
注意: 更改对象名的任一部分都可能会破坏脚本和存储过程。
热心网友 时间:2022-04-30 10:25
alter table 表名 alter column name sname
这句没错哦
热心网友 时间:2022-04-30 12:16
alter table 表 drop column [name] alter table 表 add [Sname] 列类型
热心网友 时间:2022-04-30 14:24
alter table [tablename] rename name to Sname
试试
热心网友 时间:2022-04-30 16:49
alart table
热心网友 时间:2022-04-30 19:30
修改字段名称时要重新指定该字段的类型;
alter table 表名 CHANGE 旧名称 新名称 变量类型,比如
ALTER TABLE `table_name` CHANGE old_column_name new_column_name VARCHAR(20);类似的,在修改字段类型时也要指定字段类型;
alter table 表名 MODIFY 要修改字段的名称 变量类型,比如
热心网友 时间:2022-04-30 22:28
sp_rename 是系统存储过程
所以 语句应该这么写
exec sp_rename '表名.旧字段名','新字段名'