[标签]MS SQL
注:未特别指明时,以下都是在当前数据库AdventureWorks
查询数据库中的表名:
use AdventureWorks
--查询所有表的信息
select * from sysobjects where xtype='U';
--查询表的数量
select count(*) from sysobjects where xtype='U'
--这是快速查询所有表中的数据量
select a.name, b.rows from sysobjects a with(nolock) join sysindexes b with(nolock) on b.id=a.id
where a.xtype='U' and b.indid in (0,1) order by a.name asc
返回指定数据库AdventureWorks表AWBuildVersion或视图的列的详细信息。
SELECT TABLE_NAME, COLUMN_NAME, COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') AS COLUMN_ID,*
FROM AdventureWorks.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'AWBuildVersion';
系统存储过程
sp_server_info --返回当前服务器的各种特性及其对应取值。
sp_databases --返回当前服务器上的所有数据库的基本信息。
sp_tables --返回当前数据库的所有表和视图,包含系统表。 use AdventureWorks
sp_columns @table_name = 'AWBuildVersion' --返回指定数据库AdventureWorks表AWBuildVersion或视图的列的详细信息 use AdventureWorks
sp_statistics @table_name = 'AWBuildVersion' --返回指定数据库AdventureWorks表AWBuildVersion或视图的所有索引以及统计的信息。 use AdventureWorks
sp_stored_procedures --返回当前数据库的存储过程列表,包含系统存储过程。 use AdventureWorks
sp_sproc_columns @procedure_name = 'ufnGetAccountingEndDate' --返回指定存储过程GetPYCode的的输入、输出参数的信息。
返回指定数据库AdventureWorks中用户自定义函数的详细信息
select * from dbo.sysobjects where xtype in (N'FN', N'IF', N'TF')
用户自定义的存储过程
1、列出数据库AdventureWorks 全部用户自定义的存储过程
SELECT * FROM sys.objects WHERE type in (N'P', N'PC')
2、列出数据库AdventureWorks 用户自定义的存储过程uspPrintError
SELECT * FROM sys.objects WHERE type in (N'P', N'PC') and object_id = OBJECT_ID(N'[dbo].[uspPrintError]')
3、判断存储过程uspPrintError是否存在
IF EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[uspPrintError]') AND type in (N'P', N'PC'))
print '[uspPrintError] EXISTS'
Else
print '[uspPrintError] not EXISTS'
返回当前数据库中对象的有关信息 OBJECTPROPERTY
语法
OBJECTPROPERTY ( id , property )
参数
id
一个表达式,包含当前数据库中某个对象的 ID。id 的数据类型是 int。
Property
一个表达式,包含针对由 id 指定的对象将要返回的信息。Property 可以是下面这些值中的一个。
返回值
1 = True
0 = False
null = 无效
例:判断存储过程uspPrintError是否存在
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[uspPrintError]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
print 'Yes'
例:测试 authors 是否为一个表
IF OBJECTPROPERTY ( object_id('AWBuildVersion'),'ISTABLE') = 1
print 'AWBuildVersion is a table'
例:测试 uspPrintError是否为一个存储过程
IF OBJECTPROPERTY ( object_id('uspPrintError'),'IsProcedure') = 1
print 'AWBuildVersion is a Procedure'
属性名称
|
对象类型 |
描述和返回的值 |
CnstIsClustKey |
约束 |
带有聚集索引的主键 |
CnstIsColumn |
约束 |
COLUMN 约束 |
CnstIsDeleteCascade |
约束 |
带有 ON DELETE CASCADE 选项的外键约束 |
CnstIsDisabled |
约束 |
禁用的约束 |
CnstIsNonclustKey |
约束 |
带有非聚集索引的主键 |
CnstIsNotTrusted |
约束 |
启用约束时未检查现有行,所以可能不是所有行都受约束的控制 |
CnstIsNotRepl |
约束 |
使用 NOT FOR REPLICATION 关键字定义约束 |
CnstIsUpdateCascade |
约束 |
带有 ON UPDATE CASCADE 选项的外键约束 |
ExecIsAfterTrigger |
触发器 |
AFTER 触发器 |
ExecIsAnsiNullsOn |
过程、触发器、视图 |
创建时的 ANSI_NULLS 设置 |
ExecIsDeleteTrigger |
触发器 |
DELETE 触发器 |
ExecIsFirstDeleteTrigger |
触发器 |
对表执行 DELETE 时触发的第一个触发器 |
ExecIsFirstInsertTrigger |
触发器 |
对表执行 INSERT 时触发的第一个触发器 |
ExecIsFirstUpdateTrigger |
触发器 |
对表执行 UPDATE 时触发的第一个触发器 |
ExecIsInsertTrigger |
触发器 |
对表执行 INSERT 触发器 |
ExecIsInsteadOfTrigger |
触发器 |
INSTEAD OF 触发器 |
ExecIsLastDeleteTrigger |
触发器 |
对表执行 DELETE 时触发的最后一个触发器 |
ExecIsLastInsertTrigger |
触发器 |
对表执行 INSERT 时触发的最后一个触发器 |
ExecIsLastUpdateTrigger |
触发器 |
对表执行 UPDATE 时触发的最后一个触发器 |
ExecIsQuotedIdentOn |
过程、触发器、视图 |
创建时的 QUOTED_IDENTIFIER 设置 |
ExecIsStartup |
过程 |
启动过程 |
ExecIsTriggerDisabled |
触发器 |
禁用的触发器 |
ExecIsUpdateTrigger |
触发器 |
UPDATE 触发器 |
HasAfterTrigger |
表,视图 |
表或视图具有 AFTER 触发器 |
HasInsertTrigger |
表,视图 |
表或视图具有 INSERT 触发器 |
HasInsteadOfTrigger |
表、视图 |
表或视图具有 INSTEAD OF 触发器 |
HasUpdateTrigger |
表、视图 |
表或视图具有 UPDATE 触发器 |
IsAnsiNullsOn |
函数、过程、表、触发器、视图 |
指定表的 ANSI NULLS 选项设置为 ON,表示所有与空值的比较都取值为 UNKNOWN。只要表存在,该设置就应用于表定义中的所有表达式,包括计算列和约束 |
IsCheckCnst |
任何 |
CHECK 约束 |
IsConstraint |
任何 |
约束 |
IsDefault |
任何 |
绑定的默认值 |
IsDefaultCnst |
任何 |
DEFAULT 约束 |
IsDeterministic |
函数、视图 |
函数的确定性属性。只适用于标量值及表值函数 1 = 可确定的 0 = 不可确定的 NULL = 不是标量值或表值函数,或者是无效的对象 ID
|
IsExecuted |
任何 |
指定执行该对象的方式(视图、过程或触发器) |
IsExtendedProc |
任何 |
扩展过程 |
IsForeignKey |
任何 |
FOREIGN KEY 约束 |
IsIndexed |
任何 |
带有索引的表或视图 1 = 内嵌函数 0 = 非内嵌函数 NULL = 不是函数,或者是无效的对象 ID |
IsIndexable |
表、视图 |
可以创建索引的表或视图 1 = 内嵌函数 0 = 非内嵌函数 NULL = 不是函数,或者是无效的对象 ID |
IsInlineFunction |
函数 |
内嵌函数 1 = 内嵌函数 0 = 非内嵌函数 NULL = 不是函数,或者是无效的对象 ID |
IsMSShipped |
任何 |
在安装 Microsoft® SQL Server™ 2000 的过程中创建的对象 |
IsPrimaryKey |
任何 |
PRIMARY KEY 约束 |
IsProcedure |
任何 |
过程 |
IsQuotedIdentOn |
函数、过程、表、触发器、视图 |
指定表的被引用标识符设置为 ON,表示在表定义所涉及的所有表达式中,双引号标记分隔标识符 |
IsReplProc |
任何 |
复制过程 |
IsRule |
任何 |
绑定的规则 |
IsScalarFunction |
函数 |
标量值函数 |
IsSchemaBound |
函数,视图 |
使用 SCHEMABINDING 创建的架构绑定函数或视图 |
IsSystemTable |
表 |
系统表 |
IsTable |
表 |
表 |
IsTableFunction |
函数 |
表值函数 |
IsTrigger |
任何 |
触发器 |
IsUniqueCnst |
任何 |
UNIQUE 约束 |
IsUserTable |
表 |
用户定义的表 |
IsView |
视图 |
视图 |
OwnerId |
任何 |
对象的所有者 |
TableDeleteTrigger |
表 |
表有 DELETE 触发器 |
TableDeleteTriggerCount |
表 |
表具有指定数目的 DELETE 触发器 |
TableFullTextBackgroundUpdateIndexOn |
表 |
表已启用全文后台更新索引 |
TableFulltextCatalogId |
表 |
表的全文索引数据所驻留的全文目录的 ID。 Nonzero = 全文目录 ID,它与标识全文索引表中行的唯一索引相关 |
TableFullTextChangeTrackingOn |
表 |
表已启用全文更改跟踪 |
TableFulltextKeyColumn |
表 |
与某个单列唯一索引相关联的列 ID,这个单列唯一索引参与全文索引定义 |
TableFullTextPopulateStatus |
表 |
0 = 不填充 |
TableHasActiveFulltextIndex |
表 |
表具有一个活动的全文索引 |
TableHasCheckCnst |
表 |
表具有 CHECK 约束 |
TableHasClustIndex |
表 |
表具有聚集索引 |
TableHasDefaultCnst |
表 |
表具有 DEFAULT 约束 |
TableHasDeleteTrigger |
表 |
表具有 DELETE 触发器 |
TableHasForeignKey |
表 |
表具有 FOREIGN KEY 约束 |
TableHasForeignRef |
表 |
表由 FOREIGN KEY 约束引用 |
TableHasIdentity |
表 |
表具有标识列 |
TableHasIndex |
表 |
表具有一个任何类型的索引 |
TableHasInsertTrigger |
表 |
对象具有 Insert 触发器 |
TableHasNonclustIndex |
表 |
表具有非聚集索引 |
TableHasPrimaryKey |
表 |
表具有主键 |
TableHasRowGuidCol |
表 |
对于 uniqueidentifier 列,表具有 ROWGUIDCOL |
TableHasTextImage |
表 |
表具有 text 列 |
TableHasTimestamp |
表 |
表具有 timestamp 列 |
TableHasUniqueCnst |
表 |
表具有 UNIQUE 约束 |
TableHasUpdateTrigger |
表 |
对象具有 Update 触发器 |
TableInsertTrigger |
表 |
表具有 INSERT 触发器 |
TableInsertTriggerCount |
表 |
表具有指定数目的 INSERT 触发器 |
TableIsFake |
表 |
表不是真实的。根据需要 SQL Server 对其进行内部具体化 |
TableIsPinned |
表 |
驻留表以将其保留在数据高速缓存中 |
TableTextInRowLimit |
表 |
text in row 所允许的最大字节数,如果没有设置 text in row 选项则为 0。 TableUpdateTrigger 表 表具有 UPDATE 触发器。 >1 = 给定类型的第一个触发器的 ID |
TableUpdateTriggerCount |
表 |
表具有指定数目的 UPDATE 触发器。 >1 = 给定类型的第一个触发器的 ID。 |