设为首页 加入收藏

TOP

系统视图,系统表,系统存储过程的使用(一)
2014-11-24 00:44:12 来源: 作者: 【 】 浏览:44
Tags:系统 存储 过程 使用

系统视图,系统表,系统存储过程的使用
获取数据库中用户表信息
1、获取特定库中所有用户表信息
select * from sys.tables
select * from sys.objects where type='U' --用户表
第二条语句中当type='S'时是系统表
2、获取表的字段信息
select * from sys.columns where object_id=object_id('表名')
select * from syscolumns where id=OBJECT_ID('表名' )
3、获取当前库中表的字段及类型信息
(1)select '字段名'=a.name,
'类型名'=b.name,
'字段长度'=a.max_length,
'参数顺序'=a.column_id
from sys.columns a left join sys.types b
on a.user_type_id=b.user_type_id
where object_id=object_id('表名')
syscolumns与sys.columns表用法类似。

获取索引或主键信息

获取对象及对应的索引的信息

select '对象名'=A.name,

'对象类型'=a.type,

'索引名'=B.name,

'索引类型'=case b.type when 1 then '聚集索引'

when2 then '非聚集索引'

when3 then 'xml索引'

else'空间索引' end,

'主键否'=case when b.is_primary_key=1 then '主键'

else'' end

FROM sys.objects A JOIN sys.indexes B ON A.object_id=B.object_id

WHERE A.type='U' AND B.name IS NOT NULL order by a.name

获取表的主键及对应的字段

(1)select '表名'=d.name ,'主键名'=a.name,'字段名'=c.name

from sys.indexes a join sys.index_columns b

on a.object_id=b.object_id and a.index_id=b.index_id

join sys.columns c on a.object_id=c.object_id and

c.column_id=b.column_id

join sys.objects d on d.object_id=c.object_id

where a.is_primary_key=1

(2)SELECT '表名'=OBJECT_NAME(b.parent_obj),

'主键名'=c.name,

'字段名'=a.name

FROM syscolumns a,sysobjects b,sysindexes c,sysindexkeys d

WHERE b.xtype = 'PK' AND b.parent_obj = a.id AND c.id = a.id

AND b.name =c.name AND d.id = a.id

AND d.indid = c.indid AND a.colid = d.colid

(3)select '所属架构'=s.name ,

'表名'=t.name,

'主键名'=k.name ,

'列名'=c.name,

'键列序数'=ic.key_ordinal

from sys.key_constraints as k

join sys.tables as t

on t.object_id = k.parent_object_id

join sys.schemas as s

on s.schema_id = t.schema_id

join sys.index_columns as ic

on ic.object_id = t.object_id

and ic.index_id = k.unique_index_id

join sys.columns as c

on c.object_id = t.object_id

and c.column_id = ic.column_id where k.type = 'pk';

(4)使用系统存储过程获取指定表的主键信息

EXEC sp_pkeys '表名' --表名只能是当前数据库下的单独表名不能带上架构名

查询哪些表创建了主键

select '表名'=a.name from

(select name,object_id from sys.objects where type='u') a

left join

sys.indexes b

on a.object_id=b.object_id and b.is_primary_key=1

where b.name is not null

注:查询哪些表没有创建主键,将where条件改成 is null 即可。

查找视图信息

查看视图属性信息

exec sp_help '视图名'

查看创建视图脚本

exec sp_helptext '视图名'

查看当前数据库所有视图基本信息

select * from sys.views

select * from sys.objects where type='V'

select * from INFORMATION_SCHEMA.VIEWS

查看视图对应的字段及字段属性

select '视图名'=a.name,

'列名'=b.name,

'字段类型'=TYPE_NAME(b.system_type_id),

'字段长度'=b.max_length

from sys.views a join sys.columns b

on a.object_id=b.object_id order by a.name

获取视图中的对象信息

exec sp_depends '视图名'

查看存储过程信息

1、基本信息

select * from sys.procedures

select * from sys.objects where type='P'

2、查看存储过程创建文本

sp_helptext 存储过程名称

select text from syscomments where id=object_id (存储过程名称)

3、查看存储过程的参数信息

(1)select '参数名称' = name,

'类型' = type_name(xusertype),

'长度' = length,

'参数顺序' = colid

from syscolumns

where id=object_id(存储过程名称)

(2)select '参数名称' = name,

'类型' = type_name(system_type_id),

'长度' = max_length,

'参数顺序' =parameter_id

from sys.parameters

where object_id=object_id(存储过程名称)

返回当前环境中可查询的指定表或视图的列信息。

exec sp_columns 表名

select * from sys.columns where object_id=OBJECT_id(表名)

select * from sys.syscolumns where id=OBJECT_ID(表名)

select * from information_schema.columns where TABLE_NAME=表名

查询存储过程或函数的参数的详细信息

select * from sys.p

首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇数据结构和算法1 下一篇redis数据结构

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: