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 。
十一:连接字符串参数解析