SQL SERVER相关知识

内容以官方为准:SSMS官方文档

下方补充知识

查锁、杀锁

相关语句
1.查锁:

SELECT request_session_id spid,OBJECT_NAME(resource_associated_entity_id)  tableName
FROM sys.dm_tran_locks
WHERE resource_type='OBJECT '

2.杀锁:

Kill SPID

3.查锁表语句 以及 需要锁的语句

select t1.resource_type                                [资源锁定类型]
     , DB_NAME(resource_database_id)                as 数据库名
     , t1.resource_associated_entity_id                锁定对象
     , t1.request_mode                              as 等待者请求的锁定模式
     , t1.request_session_id                           等待者SID
     , t2.wait_duration_ms                             等待时间
     , (select TEXT
        from sys.dm_exec_requests r
               cross apply
             sys.dm_exec_sql_text(r.sql_handle)
        where r.session_id = t1.request_session_id) as 等待者要执行的SQL
     , t2.blocking_session_id                          [锁定者SID]
     , (select TEXT
        from sys.sysprocesses p
               cross apply
             sys.dm_exec_sql_text(p.sql_handle)
        where p.spid = t2.blocking_session_id
)                                                      锁定者执行语句
from sys.dm_tran_locks t1,
     sys.dm_os_waiting_tasks t2
where t1.lock_owner_address = t2.resource_address

SQL 查询 Oracle相关数据

-- 查询链接服务器(LinkedServer)中数据的方法: [DBLINK名].[对方数据库名].[对方数据库下模式名].[对方数据库表名]

-- 方式1
SELECT * FROM [192.168.110.189].[erp25new].[dbo].[fee_data]
SELECT * FROM [HIS5]..[HISDB].MZCPR_CLINIC_ROOM

-- 方式2
SELECT * FROM openquery(链接服务器名,'SQL语句');	
SELECT 2 FROM OPENQUERY(HIS5, 'SELECT dept_sn, room_sn FROM MZCPR_CLINIC_ROOM')

临时表

drop table #Tmp   --删除临时表#Tmp
create table #Tmp --创建临时表#Tmp
(
    ID   int IDENTITY (1,1)     not null, --创建列ID,并且每次新增一条记录就会加1
    WokNo                varchar(50),   
    primary key (ID)      --定义ID为临时表#Tmp的主键      
);
Select * from #Tmp    --查询临时表的数据
truncate table #Tmp --清空临时表的所有数据和约束

跨库查询时的单引号转移问题

-- 当 ' 单引号里再出现单引号时,嵌套的那个单引号可以使用两个单引号替代''
SELECT * FROM openquery(SYHQDB,'select a.EXEC_DEPT                                             执行编码,
       e.name                                                  执行科室,
       c.NAME                                                  检查分类,
       b.D_CODE                                                自定义码,
       b.NAME                                                  组合名称,
       cast(f2.CHARGE_PRICE as number(10, 2))                  总金额,
       sum(f1.AMOUNT)                                          数量,
       cast(sum(f1.amount) * f2.charge_price as number(10, 2)) 收费金额
from JC_APPLY_RECORD a
         inner join JC_ZD_ITEM b on a.JC_CODE = b.CODE
         inner join JC_ZD_CLASS c on b.CLASS = c.CODE
         inner join dic_dept_code e on a.EXEC_DEPT = e.DEPT_SN
         inner join JC_ITEM_CHARGE f1 on f1.CODE = b.CODE
         inner join WJ_CHARGE_ITEM f2 on f1.charge_code = f2.CODE
where a.APPLY_DATE >= date ''2023-12-11''
  and a.APPLY_DATE < date ''2023-12-12''
group by c.NAME, a.EXEC_DEPT, e.name, b.D_CODE, f2.CHARGE_PRICE, b.NAME');

存在即更新,不存在即更新

if not exists( select 1 from YJYY_TEST_PRINT where patient_id='1' and admiss_times='1')
	insert into YJYY_TEST_PRINT(patient_id,admiss_times,print_date) values('1','1',CONVERT(varchar(100), GETDATE(), 20))
	else
	update YJYY_TEST_PRINT set print_date=CONVERT(varchar(100), GETDATE(), 20) where  patient_id='1' and admiss_times='1'
	```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值