SQL Server中的sysobjects

sysobjects 系統對象表,保存當前數據庫的對象,如約束、默認值、規則、存儲過程等
表在大多數情況下,最有用的兩個列是name和xtype。

name用來列出待考察對象的名字。

xtype用來定義對象的類型,可以是下列對象類型中的一種

   C = CHECK 約束 
   D = 默認值或 DEFAULT 約束 
   F = FOREIGN KEY 約束 
   L = 日誌 
   FN = 標量函數 
   IF = 內嵌表函數 
   P = 存儲過程 
   PK = PRIMARY KEY 約束(類型是 K) 
   RF = 複製篩選存儲過程 
   S = 系統表 
   TF = 表函數 
   TR = 觸發器 
   U = 用戶表 
   UQ = UNIQUE 約束(類型是 K) 
   V = 視圖 
   X = 擴展存儲過程 

在碰到觸發器的情形下,用來識別觸發器類型的其他三個列是:deltrig、instrig和uptrig。

SELECT * FROM sysobjects WHERE xtype =‘U’

判斷數據庫中是否已經存在某個表,有的話就刪除該表

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[表名]

或者

if exists (select * from sysobjects where id = object_id(N'表名') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[表名]

或者

if(Exists(Select * From SysObjects Where xtype='U' And Name='表名')) 
drop table [dbo].[表名]

object_id(N'表名')中N'代表 Unicode類型.可以支持不同語種的對象名

可以從“可編程性”-》“函數”-》“系統函數”-》“元數據函數”,就能找到object_id

------------------------------------------------------------------------------


syscolumns 每個表和視圖中的每列在表中佔一行,存儲過程中的每個參數在表中也佔一行。
 
name 列名或過程參數的名稱。
 
id 該列所屬的表對象ID,或與該參數關聯的存儲過程ID
 
xtype systypes中的物理存儲類型。

select * from syscolumns 
where 
id in (select id from sysobjects where xtype='u' and name like 'tbl%')
and name like '%ID'
order by name

-----------------------------------------------------------------------------

sysindexes數據庫中的每個索引和表在表中各佔一行

要得到數據庫中所有表的條數

1、來自網絡
select  b.name as tablename , a.rowcnt as datacount  
from    sysindexes a , sysobjects b  
where   a.id = b.id  
and a.indid < 2  
and objectproperty(b.id, 'IsMSShipped') = 0   
order by datacount desc

2、自己寫的

select sysobjects.name,
(select max(rowcnt) from sysindexes where sysobjects.id=sysindexes.id)  as rowcnt
 from sysobjects
where sysobjects.xtype='U'
order by rowcnt desc

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章