系統表用的不多,寫幾個常用的系統表
各個數據庫中的系統表:
1.SysObject:
? 存放數據庫中的各個對象!
? 最重字段
?? 1.1 Name,Id,Crdate,Xtype (U :用戶表,V:視圖,Tr:觸發器,P:存儲過程,S,系統表)
?? 1.2 常用函數 Object_ID('對象名'),Object_Name?
?? 此外我們如果想生成1,2,3,4,5這樣的等差數列,可以這樣做
?? Select Identity(int,1,1) As Id Into # From SysObjects,SysColumns??
2.SysColumns
? 存放各列的信息
? 最重字段
?? 2.1 Name,Id,Colid--字段在表中存放的順序
?? 設一個表中字段有很多,想列出某表除某字段外的所有字段,可以這樣寫
?? Declare @Fields Varchar(5000)
?? Select @Fields=@Fields+Name
?? From SysColumns
?? Where Id=Object_ID('Test') and Name Not In ('字段1','字段2')
?? 又如如何用列序號選擇特定列
?? Create Function F_ColumnOrder(@TableName Varchar(10),@Colid Int)
?? Returns Table
?? As
?? Return
?? Select Name From SysColumns
?? Where ID=Object_ID(@TableName) And Colid=@Colid
--Try
Select * From Dbo.F_ColumnOrder('Users',2)
??
3.SysFiles
? 如果我們想知道SQL的數據文件存放目錄的話,可以用
? Select FileName From SysFiles
4.SysComments
? 保存視圖或存儲過程的語句!
5.Sysforeignkeys
? fkeyid:外鍵表對象ID,rKeyid:主鍵表對象ID
有時我們想把數據庫中的所有表都去掉,但是有約束的存在,有些表必須在主表前刪除,否則就會報錯,
這種情況下我們就通過該表來實現
**********************************************************
Master表中的系統表
SysDataBases
? 重要字段
??? 1.1 Name,Dbid,Crdate
????? 常用函數 DB_ID('數據庫名')
sysaltfiles
??? 保存各個數據庫的MDF文件的物理地址
SysProcesses
??? 保存進程信息
??? Kill? spid 殺掉某進程
5.注意sp_MsForEachTable函數
? 刪除某數據庫中表
?? Exec Sp_MsForEachTable 'Truncate Table ?'
?? 注意:有約束的不能刪除,會出錯的
6.如果想改系統表怎么辦?
? 2種方法
??? 1.通過查詢分析器改
??? 用如下語句:
???? Exec Sp_Configure 'allow updates',1--允計修改
???? Reconfigure with override
????
???? Exec Sp_Configure 'allow updates',0--不允計修改
???? Reconfigure with override????
??? 2.通過企業管理器改
???? 在SQL實例上右鍵-屬性-允計修改系統目錄直接進行修改