当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2012-03-30 10:21:00  来源:本站整理

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防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • sqlserver索引的原理及索引成立的注意事项小结
  • sqlserver数据库主键的生成方法小结(sqlserver,mysql)
  • sqlserver主键计划的注意点
  • CREATE FUNCTION sqlserver用户定义函数
  • 利用cmd号令行窗口操作SqlServer的办法
  • sqlserver bcp(数据导入导出工具)普通用法与号令详解
  • 重命名SQLServer数据库的办法
  • 利用SqlBulkCopy时应注意Sqlserver表中利用缺省值的列
  • sqlserver中将varchar范例转换为int型再举行排序的办法
  • sqlserver 改正列名及表名的sql语句
  • SQLServer顶用T—SQL号令查询一个数据库中有哪些表的sql语句
  • sqlserver 脚本和批处理指令小结
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .