MSSQL工作中常用的小技巧
大概看了一下有接近二十天自己没有写博客了,一来是因为国庆之前公司工作总会比较繁杂一点,国庆自己也需要休息,二来是因为学习一些新的东西,公司写了一天SQL回家看了看以前的笔记,感觉还挺不错,贴出来供大家参考一下:
1.同一服务器不同数据库之间数据的导入
这个事属于数据导入方面的只是,如果经常操作数据库应该是会用到比较多的,业务场景为将FlyElephant中的DataSourceType中的数据导入到新数据库中的DataSoureType表中:
1 2 3 4 5 | set identity_insert DataSourceType on insert into DataSourceType(OID , DataSourceName, OptimisticLockField, GCRecord) select OID, DataSourceName, OptimisticLockField , GCRecord from FlyElephant.dbo. DataSourceType a where not exists( select DataSourceType. OID from DataSourceType where a.OID= DataSourceType.OID ) set identity_insert DataSourceType off |
2.不同服务器之间不同数据库之间数据的导入
首先来看一个SQL语句
1 | select * from sysobjects where name= 'sp_addlinkedserver' |
首先使用这个存储过程建立一个链接:
1 | EXEC sp_addlinkedserver 'FlyElephantLink' , '' , 'SQLOLEDB' , '192.168.0.9' |
建立连接之后创建登录信息,有两种登录方式,一种是window验证登录,一种是SQL认证的方式登录:
1 | EXEC sp_addlinkedsrvlogin 'FlyElephantLink' <br>EXEC sp_addlinkedsrvlogin 'FlyElephantLink' , 'false' , null , 'sa' , '123456' |
直接查询数据
1 | SELECT * FROM FlyElephantLink.TestDB.dbo.TestTable |
数据插入的请参考上一条,调用远程数据库的时候只需要加入你的连接的名称即可.
3.数据库简单的连表更新
业务场景:当某张表需要加一个字段,需要将另外一张表中的数据导入进来的时候这么操作过,具体请参考个人业务需求
1 | update [User] set [User].Age= People.Age from [User] inner join People on [User].ID= People.UserID |
4.查询表中的字段
这个用的比较少,当时自己操作的一张表中有一百多个字段,老板想问下表中有多少字段存储了数据,我懒得一个个数,搜索之后记录了一下:
1 | select name from syscolumns where id=( select id from sysobjects where xtype= 'u' and name= '表名' ) |
其中sysobjects为系统表,主要储存系统中存在的表、触发器、存储过程等;syscolumns也为系统表,主要用于存储表的字段列;在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在sysobjects表中占一行。tempdb中只有临时对象才在该表中占一行。
5.删除有外键约束的表
数据库中有的设计的存在问题,发现原先的表设计的是有关联,这个时候你去直接Drop是会报错的,比如说有两张表,一张是Person(ID,Name),一张是User(ID,PersonID,UserName),User表中存有Person表的数据,直接Drop表Person的时候是会提示,无法删除对象 'Person',因为该对象正由一个 FOREIGN KEY 约束引用。
查出外建名:
1 2 3 4 5 | select a.name,a.object_id,OBJECT_NAME(a.parent_object_id) as referenceTableName from sys.foreign_keys as a join sys.objects as o on a.referenced_object_id=o.object_id where o.name= 'Person' |
删除外键(表是上面referenceTableName,外键就是上面的name字段)
1 | alter table dbo.[User] drop constraint FK_User_Person |
也没有什么太高深的东西,就是以前工作中遇到了,今天总结了一下,如果对你有所帮助,顺手给个推荐吧,么么哒~
出处:http://www.cnblogs.com/xiaofeixiang
说明:博客经个人辛苦努力所得,如有转载会特别申明,博客不求技惊四座,但求与有缘人分享个人学习知识,生活学习提高之用,博客所有权归本人和博客园所有,如有转载请在显著位置给出博文链接和作者姓名,否则本人将付诸法律。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述