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  on  a.referenced_object_id=o.object_id
where  o.name= 'Person'

 删除外键(表是上面referenceTableName,外键就是上面的name字段)

1
alter table dbo.[User] drop constraint FK_User_Person

  也没有什么太高深的东西,就是以前工作中遇到了,今天总结了一下,如果对你有所帮助,顺手给个推荐吧,么么哒~

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4014673.html,如需转载请自行联系原作者

相关文章
|
10月前
MSSQL系列之十四 无限极分类的解决办法
MSSQL系列之十四 无限极分类的解决办法
31 0
|
9月前
|
SQL 存储 Go
MSSQL之十一 数据库高级编程总结(上)
MSSQL之十一 数据库高级编程总结(上)
48 0
|
9月前
|
SQL 存储 安全
MSSQL之十一 数据库高级编程总结(下)
MSSQL之十一 数据库高级编程总结(下)
66 0
|
10月前
|
存储 SQL XML
MSSQL之四 简单查询
MSSQL之四 简单查询
42 0
|
弹性计算 Oracle 关系型数据库
Oracle 11g on ECS 测试实践--安装篇
Oracle 11.2.0.4 on ECS(CentOS7.6) 测试实践--安装篇
1339 0
|
SQL 数据库
MsSql常用脚本
持续更新中... /************************************************************ * Code formatted by SoftTree SQL Assistant ?v6.
709 0
|
SQL 数据库 数据安全/隐私保护
MSSQL-最佳实践-Always Encrypted
--- title: MSSQL - 最佳实践 - Always Encrypted author: 风移 --- # 摘要 在SQL Server安全系列专题月报分享中,往期我们已经陆续分享了:[如何使用对称密钥实现SQL Server列加密技术](http://mysql.taobao.org/monthly/2018/08/03/)、[使用非对称密钥实现SQL Server列加密]
1455 0
|
关系型数据库 MySQL
mysql 72GB生产环境配置
64GB的,innodb_buffer_pool_size 40GB [client] port = 3306 socket = /tmp/mysql.sock [mysqld] server-id = 22 port = 3306 user = my...
1062 0
MSSQL一种取代游标的方案
原文:MSSQL一种取代游标的方案 今天看到一篇文章写的自己整理记录下,据说比用游标快。 DECLARE @字段1 数据类型; DECLARE @字段2 数据类型; DECLARE @TMP_WHILE_ID INT; SELECT TMP_WHILE_ID=IDENTITY(INT,1,1),TMP_WHILE_FLAG=0, [字段1],[字段2],.
802 0