sql中系統表
Ⅰ 總結了幾個常用的sql server系統表的使用
1 sysobjects 表:包含數據有表對象、約束、聚集索引、主鍵、外鍵、存儲過程、函數等的相關信息
2.sysfiles:主要反應指定資料庫物理文件的佔用空間大小及文件增長率的相關設置情況
3.sys.sysprocesses 是mssql資料庫中一個非常重要的視圖,主要用於返回當前db伺服器中的運行中的進程ID
4.sys.stats簡介
sys.stats主要用於存放MSSQL資料庫中統計信息的統計,每條統計信息在sys.stats中都對應一行記錄
5.sys.dm_exec_procere_stats 主要用於獲取mssql自重新啟動以來,緩存中存儲過程中的運行情況
(
存儲過程自啟動以來執行涉及的邏輯讀次數
存儲過程自啟動以來平均邏輯讀次數
存儲過程自啟動以來執行次數
存儲過程自啟動以來運行耗時總時間
存儲過程自啟動以來平均運行耗時時間
存儲過程自啟動以來首次緩存時間
)
6.sys.proceres 表中記載指定資料庫所涉及的全部存儲過程,通過查詢此系統表可以獲取當前賬戶擁有查看許可權的存儲過程,
7.sys.messages 是系統表,裡面存儲過系統已經規劃好的錯誤信息列表
請看一看,如有疑問,及時溝通!
Ⅱ SQL Server中,保存著每個資料庫對象的信息的系統表是
保存著每個資料庫對象的信息的系統表是 Sysobjects
Ⅲ SQL 中什麼是系統表
系統表就是你如果安裝了資料庫環境,在你沒有建立任何資料庫情況下系統自帶的表就叫做系統表了。反之由用戶建立的表就叫做用戶表。可以通過select * from user_tables 查詢到所有的用戶表
Ⅳ sqlserver的系統表
1、查看錶和試圖
SELECT * FROM sys.objects WHERE object_id = object_id('表名或視圖名')
在sqlserver中一般可通過查詢sys.objects系統表來得知結果,不過可以有更方便的方法
如下:
if object_id('tb_table') is not null
print 'exist'
else
print'not exist'
如上,可用object_id()來快速達到相同的目的,tb_table就是我將要創建的資源的名稱,所以要先判斷當前資料庫中不存在相同的資源
object_id()可接受兩個參數,第一個如上所示,代表資源的名稱,上面的就是表的名字,但往往我們要說明我們所要創建的是什麼類型的資源,
這樣sql可以明確地在一種類型的資源中查找是否有重復的名字,如下:
if object_id('tb_table','u') is not null
print 'exist'
else
print'not exist'
第二個參數 "u" 就表示tb_table是用戶創建的表,即:USER_TABLE地首字母簡寫
查詢sys.objects中可得到各種資源的類型名稱(TYPE列),這里之舉幾個主要的例子
u ----------- 用戶創建的表,區別於系統表(USER_TABLE)
s ----------- 系統表(SYSTEM_TABLE)
v ----------- 視圖(VIEW)
p ----------- 存儲過程(SQL_STORED_PROCEDURE)
2、查看錶的列名
select * from syscolumns where id=object_id('表名') and name='列名'
3、查看資料庫
select * from sys.databases where name = 'student'
4、查看備份設備
"select * from sys.backup_devices where name ='backupdb'
(添加備份設備:exec sp_admpdevice 'disk','backupdb','d:\\backup\\backupdb.bak')
5、查看數據文件
select name, physical_name dbfile from sys.master_files where database_id=db_id('student')
master資料庫中sysdatabases表(是sqlserver中所有的資料庫的庫名) :
如果你要查詢的是所有資料庫(用戶/系統):
select * from master..sysdatabases
如果你要查詢的是用戶資料庫,則使用:
select * from master..sysdatabases where dbid > 4
如果你要查詢的是系統資料庫,只需要把where字句改為dbid < 4即可。
6、查看執行的sql語句
SELECT cacheobjtype,objtype,usecounts,sql
from sys.syscacheobjects where sql not like'%cach%' and sql not like '%sys.%'
2.對應資料庫中sysobjects表(反應的是相應資料庫中所有的對象):
這個表的用處是最大的,因為它裡面存放的有:表(系統/用戶)、存儲過程(系統/用戶)、視圖、主鍵、外鍵等。
這里就不一一說明了。
比如你sqlserver中有個資料庫名叫 test,如果要查詢該資料庫中的所有表對象:
select * from test..sysobjects where type = 』u』 or type = 』s』
這里的type = 』u』是表示用戶表對象,type = 』s』是系統表對象,怎樣單獨查詢用戶表對象或者系統表對象就不用說了吧。
如果你要查詢的是存儲過程當然也分了系統和用戶了:
這個是查詢資料庫中所有存儲過程
select * from test..sysobjects where type = 』p』
如果你要查詢的是用戶存儲過程則加上 and category <> 2 即可。
查詢系統存儲過程就不用說了吧(category = 2 誰不知道。。。)
查詢視圖與查詢存儲過程一樣,比如:
你查詢的是資料庫中所有視圖
select * from test..sysobjects where type = 』v』
如果你要查詢的是用戶視圖則加上 and category <> 2 即可。
其他的就不說了,就把 它們的type給大家說下:
type = 』 pk』 表示主鍵。
type = 』 d』 外鍵引用。
type = 』uq』 唯一索引。
下面附錄一些常用系統表
名稱 地址 說明
sysaltfiles 主資料庫 保存資料庫的文件
syscharsets 主資料庫 字元集與排序順序
sysconfigures 主資料庫 配置選項
syscurconfigs 主資料庫 當前配置選項
sysdatabases 主資料庫 伺服器中的資料庫
syslanguages 主資料庫 語言
syslogins 主資料庫 登陸帳號信息
sysoledbusers 主資料庫 鏈接伺服器登陸信息
sysprocesses 主資料庫 進程
sysremotelogins主資料庫 遠程登錄帳號
syscolumns 每個資料庫 列
sysconstrains 每個資料庫 限制
sysfilegroups 每個資料庫 文件組
sysfiles 每個資料庫 文件
sysforeignkeys 每個資料庫 外部關鍵字
sysindexs 每個資料庫 索引
sysmenbers 每個資料庫 角色成員
sysobjects 每個資料庫 所有資料庫對象
syspermissions 每個資料庫 許可權
systypes 每個資料庫 用戶定義數據類型
sysusers 每個資料庫 用戶