数据库临时表 死锁解锁 SQL server 常用函数

临时表:以#开头,主要是为了防止锁表。

临时表一般在会话结束时。

创建的三种方式:

1)create table #tem

2)select * into #tem from table 

3)with #tem as(select * from table)

select * from #tem;

等同于这种方式

select * from (select * from Map_Data ) as #t

 

这是一种特殊的临时表,在查询结束后就会关闭。

 

死锁原理:

共享锁(S锁):共享 (S) 用于不更改或不更新数据的操作(只读操作),如 SELECT 语句。

如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。
 

排他锁(X锁):用于数据修改操作,例如 INSERT、UPDATE 或 DELETE。确保不会同时同一资源进行多重更新。

如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。

我们在操作数据库的时候,可能会由于并发问题而引起的数据的不一致性(数据冲突)

高并发时,同时对一个表加X 锁,transaction 等待时间过长就会导致死锁

查看死锁进程:

   select    
    request_session_id spid,   
    OBJECT_NAME(resource_associated_entity_id) tableName    
from    
    sys.dm_tran_locks   
where    
    resource_type='OBJECT' ;

杀死死锁进程: kill 354

 

SQL Server常用函数:

 
SQL Server常用函数
函数名称作用
1、trim('内容') ltrim('内容') rtrim('内容')去掉字符串左边和右边的空格,和所有空格
select REPLACE(@str,' ','')
替换
substring( expression, start, length ) --返回从字符串expression左边第start个字符起length个字符的部分截取 还有left right
select len(@str)
length
select  upper(@str) lowwer('text')
大小写
stuff( character_expression , start , length ,character_expression ) 返回从字符串character_expression左边第start个字符开始要删除length个字符,在start开始删除的位置插入新字符串character_expression
charindex ( expression1 , expression2 [ , start_location ] )--  expression1返回的整数是要找的字符串在被找的字符串中的位置
patindex ( %pattern% , expression )函数返回字符或字符串在另一个字符串或表达式中的起始位置,patindex函数支持搜索字符串中使用通配符
isnull 、isDate判断空,判断是否为日期
统计函数AVG ( ) -返回的平均价值
count( ) -返回的行数
first( ) -返回第一个值
last( ) -返回最后一个值
max( ) -返回的最大价值
min( ) -返回最小的价值
sum( ) -返回的总和
 

 

 

下面的表格列出了 SQL Server 中最重要的内建日期函数:

 

 

       函数                描述          
getdate()  返回当前日前与时间 
datepart(type,date)

返回日期/时间的单独部分

dateadd(type,number,date)在日期中添加或减去指定的时间间隔 
datediff(type,date1,date2)返回两个日期之间的时间
convert( data_type [ ( length ) ] , expression [ , style ])用不同的格式显示日期/时间

 

--getdate 获取当前时间
 select getdate()

 --dateadd 原有时间加: 2013-02-17 13:20:16 此时间加12个月
 select dateadd(MONTH,12,'2013-02-17 13:20:16')  --返回:2014-02-17 13:20:16.000  (参数month可以改为 day,year等日期加相应的值)

 --datediff 两个时间的差 (后面-前面=返回值)
 select datediff(day,'2013-02-01','2013-02-18')   --返回:17  (参数day可以改为 month,year等日期加相应的值)

 --datepart 获取日期的某个部分整数
 select DATEPART(month, '2013-2-17')  --返回 2    (参数month可以改为 day,year等日期加相应的值)

 --datename 获取指定部位的字符串
 select datename(weekday, '2013-2-17')  --返回 星期日 (参数weekday可以改为 day,year等日期加相应的值)

 --day(), month(),year() 获取指定部位的字符串
 select day('2013-2-15') --返回15

 

 

Convert日期转换函数

时间格式转换使用 CONVERT:CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

data_type
目标系统所提供的数据类型,包括 bigint 和 sql_variant。不能使用用户定义的数据类型。
参数
length
nchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。

expression
是任何有效的 Microsoft® SQL Server™ 表达式。

style:风格

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值