sqlserver 常见语法


一:清除数据库日志文件【当数据库日志比较大的时候,可以使用下面语句清理日志文件】
USE [数据库名称]
GO
ALTER DATABASE 数据库名称  SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE 数据库名称  SET RECOVERY SIMPLE --简单模式
GO
DBCC SHRINKFILE (N'数据库名称日志文件名' , 2, TRUNCATEONLY)    --2指的是保留的日志文件大小【可自定义设置】
GO
ALTER DATABASE 数据库名称  SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE 数据库名称  SET RECOVERY FULL --还原为完全模式
GO

--查询指定数据库的日志文件名称  
USE [数据库名称]   
GO  
SELECT name FROM SYS.database_files WHERE type_desc='LOG' 
  二:数据库压缩:
DBCC ShrinkFile('数据库名称',  0); /* 收缩数据库文件 */
DBCC ShrinkFile('日志名称',  0); /* 收缩日志文件 */
  三:当数据流变为单用户,处理如下:
USE master;  
GO  
DECLARE @SQL VARCHAR(MAX);  
SET @SQL=''  
SELECT @SQL=@SQL+'; KILL '+RTRIM(SPID)  
FROM master..sysprocesses  
WHERE dbid=DB_ID('数据库名称');  
?
EXEC(@SQL);
ALTER DATABASE 数据库名称 SET MULTI_USER;
  四:随机查询表中10条数据
SELECT TOP 10 *
FROM dbo.Student 
ORDER BY NEWID()
  五:分页(Row_Number())
SELECT *
FROM 
(
    SELECT ROW_NUMBER() OVER(ORDER BY TraceId) NO, *  --TraceId:表字段
    FROM dbo.MatTraces   --dbo.MatTraces:表名
) V
WHERE V.NO BETWEEN 31 AND 40
  六:分页(OFFSET FETCH NEXT ONLY)=> 备注:sqlserver 2012之后版本支持
SELECT * from  dbo.MatTraces  ORDER BY TraceId  OFFSET 10 ROW  FETCH NEXT 10 ROW ONLY
  七:插入记录并返回自增列(select @@IDENTITY)
insert into UnitClassify values('毫克',0.001) select @@IDENTITY

八:数据库sa账号密码修改 打开SSMS => 安全性 => 登录名 => sa => 属性 => 常规 => 修改密码   九:更改时间格式字段为类型的值
----备注:将年月日的日期格式时间转换为yyyyMMdd类型的int类型  例如:2021-3-13 00:00:00 =>  20210313
----sql函数参考地址:https://www.w3school.com.cn/sql/func_convert.asp
update OM_DayPlan set  ForDate_YMD =  (convert(VARCHAR(8),ForDate,112))
  十:DateTime与DateTime2的区别 DateTime字段类型对应的时间格式是 yyyy-MM-dd HH:mm:ss.fff ,3个f,精确到1毫秒(ms),示例 2014-12-03 17:06:15.433 。 DateTime2字段类型对应的时间格式是 yyyy-MM-dd HH:mm:ss.fffffff ,7个f,精确到0.1微秒(μs),示例 2014-12-03 17:23:19.2880929 。   十一:连接字符串参数解析 SqlServer数据库连接字符串配置详细说明_覃鸿宇的博客-CSDN博客_sqlserver数据库连接字符串