有刚进公司不久小火办问我:数据库中一个表因为各种原因,需要重命名,怎么操作?急,在线等
我说,你先用ssms右键操作重命名一下吧。
他说,这不能体现出一个程序员的尊严。
我又继续追问后得知,他是一个很(会)聪(偷)明(懒)的程序员,他自己做了一个日志跟踪程序来跟踪老系统的数据库操作来获得业务知识。每次都会用一张表来保存各种操作,然后写了一个界面去读,然后每次在界面里面都会默认去读一个表名规则符合他的日志表名的表,但是又想默认读最后一次保存日志的那个表(你咋这么懒呢,连点鼠标都不想点了),然后每次就需要清空掉最后那张表,把数据迁移到日志备份表中。好纠结的需求啊。
工具/原料
- ms sqlserver
方法/步骤
- 1
第1招(rename)、很简单,在ssms(sql server management studio)左侧树上,找到表,右键重命名(或者定位(鼠标或者上下左右键)到这张表按F2),输入表的新名字,回车。
还是截个图吧。
- 2
第2招(insert into select from )、通过写程序,创建一张新表,表名为你的表新名,比如这位小兄弟想把Arizhi命名为Arizhi20151030,则建一张表,表名为材付这个,字段描述等均与第一张表相同,为了达到这个效果,在表Arizhi上右键-->编写表脚本为-->Create到-->新查询编辑器窗口
- 3
第二招续1,修改脚本中的名字为新表的名字,运行之(鼠标点红色叹号按钮,或者直接按F5快捷键)
- 4
第二招续2,将原表中的数据插入新表中,然后删除原表中的数据,就可以了
INSERT INTO Arizhi20151030 SELECT * FROM dbo.Arizhi;TRUNCATE TABLE dbo.Arizhi;
- 5
第3招(Select into from ),简化第二招的操作,但是不会有主键什么的带进去,适合这种临时的日志表,随往排没有主键的情况。
SELECT * INTO Arizhibakat20151029 FROM dbo.Arizhi;
truncate table Arizhi;
- 6
第四招(sp_rename),终极大招,适合在程序中调用(个人觉得程序员要掌握的方法,就是要熟悉各种数据库的系统函数和方法,并加以权衡运用到程序开发中,才是一个想偷懒,能够偷懒,老板还喜欢你偷懒的程序员英敏)。
EXEC sp_rename 'Arizhi','Arizhi201510301106';
END
注意事项
- rename方法适合于小白
- insert into select from方法适合于各种数据库,不只是mssql server,但是在这个场景下不是最优
- Select into from 丢掉了主键信息,不是最优,但是适合于备份临时的数据
- sp_rename这个方法建议各位sql server dba和程序员们广泛使用
- 若觉得这篇经验写的好或者还凑合的话,记得点击页面右上角的“大拇指”或者“五角星”,谢谢了。仅供参考哦!如果有任何意见,请留言,或者私信我