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執行個體上右鍵-屬性-允計修改系統目錄直接進行修改