日度归档:2019年1月10日

mssql sqlserver 去重关键字distinct和group by 简介


摘要:
下文讲述sqlserver中去重关键字distinct和group by 的应用,如下所示:
实验环境:sql server 2008 R2


在sqlserver 脚本编写中,distinct 和group by关键字都可以用于去重操作,两个关键字具有相同功能,具有不同的效率和使用上的差异。

distinct :
应用于单独的取不重复的值,速度比group by 快
distinct 可应用于单列和多列取不重复值
group by:
具有同distinct相同的取不重复值的功能,还可对所涉及的列进行聚合操作

例:

   create table [maomao365]
   (sort varchar(30), qty int)
   go
    insert into [maomao365]
    (sort, qty)values('博客',8),
     ('博客',10),('博客',2),
     ('个人站',8),('个人站',18)
     go
      
     ---相同去重功能
     select distinct sort from [maomao365]
     go 
    select sort from [maomao365]  group by sort 
    go 
    
    --- group by 去重 聚合功能
    select sort,sum(qty) as [qty]  
         from [maomao365]  group by sort 
    go 
    
    go
  truncate table [maomao365]
  drop       table [maomao365]

mssql sqlserver 使用数据库触发器禁止对表结构操作


摘要:
下文讲述使用数据库触发器禁止用户对数据表结构进行相关操作,如下所示:
实验环境:sql server 2008 R2


在MSSQL 数据库中,数据库触发器是一种特殊的触发器,它可以对表、视图、存储过程的修改,重命名、新增执行相应的事件,自动执行相应操作。
我们常利用此功能限制用户对数据库对象的变更操作。
例:
采用数据库触发器限制对表结构的相关操作

USE [master]
GO

CREATE TRIGGER [tr_onServer_protectTable]  ---触发器名称
ON ALL SERVER
FOR DROP_TABLE,DROP_PROCEDURE,DROP_VIEW,DROP_FUNCTION, 
CREATE_TABLE,CREATE_PROCEDURE,CREATE_VIEW,CREATE_FUNCTION,
ALTER_PROCEDURE,ALTER_VIEW,ALTER_TABLE,ALTER_FUNCTION,RENAME    
----触发器所对应的事件

AS

begin  

   print '禁止进行此操作'

  rollback tran ;

end 
GO


ENABLE TRIGGER [tr_onServer_protectTable] ON ALL SERVER   --开启触发器
GO