易截截图软件、单文件、免安装、纯绿色、仅160KB

sql server 判断表/视图/存储过程是否存在

--如果是实表可以用
if exists (select * from sysobjects where id = object_id(N'[dbo].[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[表名]
--如果是临时表可以用(说明,如果用查找实表方法来打临时表会找不到.发布区别对代.)
if object_id('tempdb..##temp') is not null
   drop table ##temp
--判断存储过程是否存在
MSSQL2000
view plaincopy to clipboardprint?
if exists(select * from sysobjects where id=object_id('[dbo].[sp_create_storeCount]') and xtype='P')   
DROP PROCEDURE [dbo].[sp_create_storeCount] 
if exists(select * from sysobjects where id=object_id('[dbo].[sp_create_storeCount]') and xtype='P')
DROP PROCEDURE [dbo].[sp_create_storeCount] 
MSSQL2005
 view plaincopy to clipboardprint?
IF  EXISTS (SELECT * from sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[AccountHz]') AND type in (N'P', N'PC'))  
DROP PROCEDURE [dbo].[AccountHz] 
IF  EXISTS (SELECT * from sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[AccountHz]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[AccountHz]
 
--判断视图是否存在
--SQL Server 2000
IF EXISTS (SELECT * from sysviews WHERE object_id = '[dbo].[视图名]'
--SQL Server 2005
IF EXISTS (SELECT * from sys.views WHERE object_id = '[dbo].[视图名]'
/*
sysObjects (
Name sysname,      --object 名称
id   int,          --object id
xtype char(2),     -- object 类型  
type char(2),     -- Object 类型(与xtype 似乎一模一样? 有点郁闷…)
uid   smallint,     -- object 所有者的ID
...                --其他的字段不常用到。  
)
sysobjects的xtype 代表的对象类型。可以是下列对象类型中的一种:
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = 日志
FN =


相关文档:

sql查询慢的原因汇总


查询速度慢的原因很多,常见如下几种:
  1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
  2、I/O吞吐量小,形成了瓶颈效应。
  3、没有创建计算列导致查询不优化。
  4、内存不足
  5、网络速度慢
  6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) ......

SQL索引高级应用

--结合sys.indexes和sys.index_columns,sys.objects,sys.columns查询索引所属的表或视图的信息
select
  o.name as 表名,
  i.name as 索引名,
  c.name as 列名,
  i.type_desc as 类型描述,
  is_primary_key as 主键约束,
  is_unique_constraint as 唯一约束,
  is_disable ......

SQL Server 行列转换示例

SQL Server的行列转换功能非常实用,但是由于其语法不好懂,使很多初学者都不愿意使用它。下面我就用示例的形式,逐一展现Pivot和UnPivot的魅力。如下图
 
1.从Wide Table of Months 转换到 Narrow Table的示例
select [Year],[Month],[Sales] from
(
select * from MonthsTable
)p
unpivot
(
[Sales] for ......

SQL Server里的 ISNULL 与 Oracle 中的 NULLIF

SQL Server里的 ISNULL 与 Oracle 中的 NULLIF不同:
  SQL Server 中有两个参数,语法:
    ISNULL(check_expression, replacement_value)
    check_expression 与 replacement_value 数据类型必须一致
   
如果 check_expression 为 NULL,则返回 replacement_v ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号