(转)sql写法经验

来源:互联网 发布:悟空方大同知乎 编辑:程序博客网 时间:2024/06/10 08:11

查找同一表内的重复项

1.select * from corp where 企业名称 in (select 企业名称 from corp gropu by 企业名称 where count(企业名称)>1 )

SQL中的多条件分枝写法

2

select flag=

case 企业名称 when '中国北京大学' then '1'

              when '北京大学哲学院' then '1'

              when '北大哲学院' then '1'

              else 企业名称 + '2' end,

企业名称,员工人数 ,企业资金,企业领导

into #temp

from corp

 

select 企业名称,员工人数 ,企业资金,企业领导

from #temp

where flag in (select flag from #temp gropu by flag where count(flag)>1 )

 

 

sql中使用case进行判断

 

select jyid,

CASE

计算条件列表并返回多个可能结果表达式之一。

CASE 具有两种格式:

  • 简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。
  • CASE 搜索函数计算一组布尔表达式以确定结果。

两种格式都支持可选的 ELSE 参数。

语法

简单 CASE 函数:

CASE input_expression
    
WHEN when_expression THEN result_expression
        
[ ...n ]
    
[
        ELSE else_result_expression
    
END

CASE 搜索函数:

CASE
    
WHEN Boolean_expression THEN result_expression
        
[ ...n ]
    
[
        ELSE else_result_expression
    
END

参数
 

触发器的使用

当为表或视图定义了针对某一操作INSERT DELETE

UPDATE INSTEAD OF 类型触发器且执行了相应的操作时尽管触发器被触发但

相应的操作并不被执行而运行的仅是触发器SQL 语句本身

 

INSTEAD OF 触发器的主要优点是使不可被修改的视图能够支持修改

 

更新操作包括两个部分即先将更新的内容去掉然后将新值插入

因此对一个定义了更新类型触发器的表来讲当报告会更新操作时在删除表中存放了旧

值然后在插入表中存放新值

 

SQL Server中包含了几个可以访问系统注册表的扩展存储过程.但实际上这几个扩展存储过程是未公开的,sql server 7.0就有了,
SQL server 2000中仍然保留,他们以后可能会删除.但是这几个存储过程却提供了在当前的SQL Server版本中访问系统注册表的能力,
而且很多人利用SQL Server来进行攻击系统时,往往都会用到这几个扩展存储过程.所以最好在SQL Server中禁用他们.

原创粉丝点击