SQL语句修改表名和字段名
来源:互联网 发布:手机淘宝宝贝无线连接 编辑:程序博客网 时间:2024/05/17 23:14
今天有个临时任务,修改生产环境的数据库表名和字段名。以前要修改表名字段名都是在开发环境,直接打开
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_5qLmF4aj645Njq
实例讲解
现有数据库testDB,框架体dbo,dbo下有三张表分别为animal(code,name),bird(code,name,animalCode'),cat(code,name,animalCode')
接下来我对这三张表进行如下操作:
修改表名、修改列名、修改属性类型、添加属性
<span style="font-family:Verdana;font-size:18px;">USE testDBGO--将animal表名更改为animalCategoryEXEC sp_rename '[dbo].[animal]','animalCategory';--将bird表中的外键animalCode更改为animalCategoryCodeEXEC sp_rename '[dbo].[bird].animalCode','animalCategoryCode','COLUMN';--将bird表中属性name的类型修改为VARCHARALTER TABLE [dbo].[bird] ALTER COLUMN name VARCHAR(20)--向bird表中添加颜色外键ALTER TABLE [dbo].[bird] ADD colorCode INT NULLGO</span>
注意下面一段脚本执行后抛出异常:
消息 15248,级别 11,状态 1,过程 sp_rename,第 238 行
参数 @objname 不明确或所声明的 @objtype (COLUMN)有误。
<span style="font-family:Verdana;font-size:18px;">USE testDBGO--将cat表名更改为petCatEXEC sp_rename 'cat','petCat';--将bird表中的外键animalCode更改为animalCategoryCodeEXEC 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 BasicServiceALTER TABLE dbo.StudentInfo ADDIsToTeacher BIT NULLEXEC 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语句修改表名和字段名
- SQL角脚本语句修改表名及字段名
- SQL Server修改表名,字段名,索引名
- Oracle:SQL语句--对表的操作——修改列名(即修改字段名)
- Sql语句修改表名
- sql语句修改数据库名,表名,列名
- sql增加字段、修改字段名、删除字段、修改表名、改存储过程名!!
- Oracle 修改表名 列名 字段类型 语句
- Oracles数据库 修改表名 列名 字段类型 语句
- sql语句查询:sql server和access 数据库里的所有表名,字段名
- sql语句查询表的字段名
- sql语句查询表的字段名
- sql语句查询表的字段名
- postgresql 字段sql语句 更改表名
- SQL不能修改字段名
- sql语句修改Mysql的表名
- mysql修改表名的SQL语句
- Oracle批量修改表名和字段名
- Android 构建系统概览
- http://acm.hdu.edu.cn/showproblem.php?pid=1203(背包问题)
- 优酷旋转菜单(RotateAnimation,Relativelayout知识点学习)
- 用递归求数组最大值的位置
- AngularJS 资源和开发教程
- SQL语句修改表名和字段名
- 关于System V 消息队列介绍
- 神经网络及BP网络matlab+C#实现
- Android模拟器的sdcard操作技巧整理
- C语言之函数调用14—递归法打印勒让德多项式前N项
- Android SharedPreferences保存和读取对象
- [心情]大作业的第一天
- 基于网络爬虫的全国气温排行程序/c++
- 黑马程序员——高新技术---Java基础-多线程1