SQL语句改动表名和字段名
今天有个暂时任务,改动生产环境的数据库表名和字段名。曾经要改动表名字段名都是在开发环境。直接打开
SQL Server找到相应的表或字段重命名就OK啦,但是这是线上数据库,再想直接F2改动是不可能的啦。
怎么办?乖
乖写脚本呗。
上网了解了一些相关资料,结合我自己操作过程中出现的一些实际问题简单作个总结,再次加深下印
象。
SQL自带了一系列的系统存储过程。当中sp_rename就具有改动表名和列名的功能。对于sp_rename是这样定
义的:更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。
基本的语法
改动表名:EXEC sp_rename ‘[原有表名]’, '[新表名]';
改动列名:EXEC sp_rename ‘[原有列名]’, ‘[新列名]' , 'COLUMN';
百度百科链接
实例解说
现有数据库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>
keyword:数据库 改动表名 改动列名 改动属性类型
sp_rename
SQL语句改动表名和字段名的更多相关文章
- SQL语句 删除表user 中字段name 内容重复的记录,
public class T01 { public static void main(String[] args) { int j=4; j=j+=j-=j*=j; System.out.printl ...
- mysql sql语句为表批量增加字段
方法一 这里可以使用事务 bagin; //事务开始 alter table em_day_data add f_day_house7 int(11); alter table em_day_data ...
- SQL语句删除表中的字段只留下最新一行
方法一 DELETE FROM A WHERE `name` in ( SELECT a.name FROM( SELECT name FROM A a GROUP BY name HAVING CO ...
- SQL语句表名或者字段名和保留字冲突解决方法
最近开发遇到一个很奇葩的问题,简单做一下笔记 select * from Add ... 以上SQL语句会报错. 原因Add是表名,SQL语句保留字中又有Add 解决方法: select * from ...
- [转]关于oracle sql语句查询时表名和字段名要加双引号的问题
oracle初学者一般会遇到这个问题. 用navicat可视化创建了表,可是就是不能查到! 后来发现②语句可以查询到 ①select * from user; 但是,我们如果给user加上双引 ...
- postgresql 字段sql语句 更改表名
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/sq8706/article/detail ...
- MyBatis构建sql时动态传入表名以及字段名
今天项目需要用到动态表名,找到这一篇文章,亲测可用 用了mybatis很长一段时间了,但是感觉用的都是比较基本的功能,很多mybatis相对ibatis的新功能都没怎么用过.比如其内置的注解功能之类的 ...
- SQL Server 2008 R2——根据数据查找表名和字段名 根据脏数据定位表和字段
=================================版权声明================================= 版权声明:原创文章 谢绝转载 请通过右侧公告中的“联系邮 ...
- SQL 查询所有表名、字段名、类型、长度、存储过程、视图
-- 获得存储过程创建语句 select o.xtype,o.name,cm.text from syscomments cm inner join sysobjects o on o.id=cm.i ...
随机推荐
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理
SAS学习笔记之<SAS编程与数据挖掘商业案例>(3)变量操作.观测值操作.SAS数据集管理 1. SAS变量操作的常用语句 ASSIGNMENT 创建或修改变量 SUM 累加变量或表达式 ...
- html5——2D转换
transform 属性 1.向元素应用 2D 或 3D 转换 2.该属性允许我们对元素进行旋转.缩放.移动或倾斜. 缩放与位移 transform: scale(, 0.5);//水平缩放,垂直缩放 ...
- JS——正则案例
验证座机号码 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...
- C#——枚举格式转换与比较
定义一个枚举类型: public enum City { 北京, 上海, 广州 } 控制台判断: static void Main(string[] args) { Console.WriteLine ...
- RTL Compiler之synthesis steps
1 synthesis steps 1) Search Paths rc:/> set_attribute lib_search_path path / rc:/> set_attribu ...
- 您厉害您赚得多:聪明投资者的聊天记录,雪球CEO的21条投资理念
3星|<您厉害您赚得多>:雪球创始人的投资理念.原则.技巧,及其在雪球上跟一些用户的互动的内容 作者是雪球创始人.CEO,全书基本是作者的一些投资理念+作者在雪球上跟用户的互动的内容,还有 ...
- Vue动态创建组件方法
组件写好之后有的时候需要动态创建组件.例如: 编辑文章页面,正文是一个富文本编辑器,富文本编辑器是一个第三方的组件,点击添加章节的时候需要动态的创建一个富文本编辑器这个时候怎么处理呢. 富文本编辑器也 ...
- CentOS下修改root用户名
修改root登录用户名减少Linux云主机“被暴力破解”警告,登录云主机的时候就先显示登录失败多少次.其是公网有人在扫用弱密码破解登录. 所谓暴力破解,就是用“用户名“+”密码”穷举的方式进行远程登录 ...
- C# 泛基
1 你有时候希望在父类规定一些行为,让子类无法修改,但是这些实现是依赖一个子类才能获取的值,你又不可能知道所有的子类 ,没办法替它在父类里面初始化,这时候就需要在父类里面定义一个每个子类一个的,但又是 ...
- hdu 5182 PM2.5
问题描述 目前,我们用PM2.5的含量来描述空气质量的好坏.一个城市的PM2.5含量越低,它的空气质量就越好.所以我们经常按照PM2.5的含量从小到大对城市排序.一些时候某个城市的排名可能上升,但是他 ...