SqlServer中的查询语句[MSSQL防范]
本文“SqlServer中的查询语句[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
SqlServer中查询语句
表的存在性判断代码
IF OBJECT_ID('tempdb..#temp') is NOT NULL
DROP TABLE #temp;
--查询能否存在有#temp暂时表,如存在,将其删除
IF EXISTS(SELECT 1 FROM sys.sysobjects WHERE name = 'temp')
DROP TABLE temp;
--查询能否存在有表temp,假若有,则将其删除
系统自带存储历程代码
EXEC sys.sp_who @loginame = 'sa'
--查看'sa'用户登陆的数据库的用户和进程
EXEC sys.sp_depends @objname = 'dbo.Audit_Stat' -- nvarchar(776)
--查看该表相关的依靠信息
EXEC sys.sp_help @objname = 'dbo.Audit_Stat' -- nvarchar(776)
--查看该对象的全部信息
EXEC sys.sp_helpindex @objname = 'dbo.Audit_Stat' -- nvarchar(776)
--查看该对象所对应的索引信息
EXEC sys.sp_helptext @objname = 'dbo.qry_Audit'
--查看该存储历程对应的信息
EXEC sys.sp_password @old = NULL, -- sysname
@new = NULL, -- sysname
@loginame = NULL -- sysname
--改正数据的密码信息
Set利用代码
SET IDENTITY_INSERT tableName OFF|ON
--答应将显示值插入到标识符字段
SET NOCOUNT OFF|ON
--答应返回影响行数
SET ROWCOUNT OFF|ON
--在返回指定的行数之后终止处理查询.
@@fetch_status代码
@@FETCH_STATUS
--返回被 FETCH 语句履行的最后游标的状况,
--而不是任何当前被衔接翻开的游标的状况.
--0表示FETCH 语句成功
--可以用于循环取游标中数据
@@error代码
PRINT @@ERROR
--无错时,返回为0
--有错时,返回该错误代码
@@identity代码
SELECT * INTO #temp FROM dbo.Audit_Stat WHERE AuditItem = '020' ;
PRINT @@IDENTITY;
DROP TABLE #temp;
--@@IDENTITY;保存系统中最后改正的标识符
Cursor的利用代码
DECLARE
@Item VARCHAR(10)
SET @Item = '020';
SELECT AuditItem, Date, Obj, ObjType, Count INTO #temp FROM dbo.Audit_Stat WHERE AuditItem = @Item;
--在成立时,对该游标不时举行赋值
--DECLARE temp_cursor CURSOR FOR SELECT * FROM #temp;
DECLARE @temp_cursor CURSOR;
--成立时不指定游标的范围时是全局的
--SET @temp_cursor = CURSOR FOR SELECT * FROM #temp;
--成立时FORWARD_ONLY,游标移动时只能FETCH NEXT
--SET @temp_cursor = CURSOR LOCAL FORWARD_ONLY FOR SELECT * FROM #temp;
--成立时SCROLL,游标可以肆意移动
SET @temp_cursor = CURSOR LOCAL SCROLL FOR SELECT * FROM #temp;
SET @temp_cursor = CURSOR LOCAL FOR SELECT * FROM #temp;
OPEN @temp_cursor;
DECLARE @itemCode VARCHAR(10);
DECLARE @theDate common.DT_Date;
DECLARE @obj VARCHAR(10);
DECLARE @objType VARCHAR(10);
DECLARE @theCount INT ;
FETCH NEXT FROM @temp_cursor INTO @itemCode, @theDate, @obj, @objType, @theCount
UPDATE #temp SET Count = 100 WHERE CURRENT OF @temp_cursor;
SELECT * FROM #temp;
CLOSE @temp_cursor;
DEALLOCATE @temp_cursor;
DROP TABLE #temp;
Truncate删除代码
TRUNCATE TABLE #temp;
--Truncate删除比Delete快,
--但删除后不能RollBack
--Delete是物理-次一行删除
--Truncate释放全部与表关联列
Union与union all代码
SELECT TOP 2 *
FROM dbo.Audit_Stat
WHERE AuditItem = '010'
UNION ALL
SELECT TOP 2 *
FROM dbo.Audit_Stat
WHERE AuditItem = '010'
--UNION,UNION ALL
--可以将查询出的后果举行结合,但必须注意的是,
--查询的后果对应构造相同,对应的范例兼容
--UNION:关于查询的后果,假如相同,则归并
--UNION ALL: 对应查询的后果,直接联接,不归并
Having语句利用代码
SELECT AuditItem, SUM(Count) sum
FROM dbo.Audit_Stat
GROUP BY AuditItem
HAVING SUM(Count) > 1000;
--HAVING可对分组后的调集举行过滤
Group by 与 all的利用代码
SELECT AuditItem, SUM(Count) FROM dbo.Audit_Stat WHERE AuditItem = '030'
GROUP BY ALL AuditItem;
--注意Where语句的增添后,关于all更有比较性
--不加all时,仅显示AuditItem = '030'的Code和对应的和
--加上all时,显示全部的AuditItem,但对应的和为空
Like查询代码
SELECT * FROM dbo.Audit_Stat WHERE AuditItem LIKE '0[^0-2]0';
--%匹配肆意个字符
--_匹配单个字符
--[0-9]匹配该范围中的单个字符
--[^0-9]匹配不在该范围中的单个字符
Between范围代码
SELECT * FROM dbo.Audit_Stat
WHERE Count BETWEEN 1 AND 2 ;
--Between N1 and N2 是[N1,N2],包含两边界
--Not Between N1 and N2 是 < N1 and > N2意思
Into直接成立表,并插入数据代码
SELECT IDENTITY(INT,100,1) AS '序号', Count, AuditItem
INTO #temp
FROM dbo.Audit_Stat
--成立利用IDENTITY属性的新列,
--直接成立#temp暂时表,并将数据插入到该表中
Top的利用代码
SELECT TOP 3 AuditItem, SUM(Count) FROM dbo.Audit_Stat GROUP BY AuditItem ORDER BY AuditItem;
--Top的利用
--查询后果中取前面3行
2.查询时赋值代码
DECLARE @ItemCode VARCHAR(10);
SELECT @ItemCode = AuditItem FROM dbo.Audit_Stat WHERE ID = -1;
--查询时赋值,当有多个值是将最后查询值赋入当前声明变量中
Case利用代码
--写法1
SELECT
CASE count
WHEN 1 THEN 'YES'
WHEN 2 THEN 'NO'
ELSE 'OTHER' END TEST, *
FROM dbo.Audit_Stat;
--写法2
SELECT
CASE
WHEN COUNT = 1 THEN 'YES'
WHEN COUNT = 2 THEN 'NO'
ELSE 'OTHER' END TEST, *
FROM dbo.Audit_Stat;
--注意此中case判断的后果必须为同一范例
--例:'YES', 'NO', 'OTHER'均为字符型
作者 yq135314
以上是“SqlServer中的查询语句[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |