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