(一)系統表:存儲SQL所有的系統信息。存儲有關數據庫服務中的元數據所謂元數據即(比如數據服務器有哪些用戶數據庫、數據庫服務器有哪些登陸賬號,數據庫中都有哪些表,每個表都有哪些字段 每個數據庫有哪些存儲過程、視圖等等的數據),系統表一般sys開頭。
(二)了解數據庫中系統表,可以編寫sql語句或編程的時候用到。以下場景使用到了系統表
1、在創建數據庫的時候選判斷數據庫是否存在;創建數據庫中對象(表、視圖、存儲過程、索引等)是否存在,存在返回,不存在則執行創建語句。
2、批量刪除數據庫中對象,比如一次性刪除某個具體數據庫中的所有用戶創建的表、視圖、索引等對象,可以查詢系統表中對象然後使用sql語句控制刪除。
(三)重要的幾個系統表
Sysxlogins:存在與Master數據庫中,(所有數據庫中用戶和角色),記錄著所有能登陸到Sql server 的帳號。因為系統表是不允許人工刪除的,如想刪除則執行sp_configure’allow update’,1
不會立即生效,要重啟服務或reconfigure with override
sysdatabases:記錄著當前系統所有的數據庫。只有Master數據中有此系統表。
Systypes(每個數據庫都有):存放系統中默認的用戶類型和用戶自定義的用戶類型。
Sysusers:記錄每個數據庫中的用戶和角色。
Sysobjects:在數據庫內創建的每個對象(約束、默認、日志、規則、存儲過程)在表中占一行。
(四)知道了數據庫中系統表,可以在寫sql語句或在開發過程中通過sql語句完成以下任務
1、查詢數據庫中都有哪些數據庫
select * from dbo.sysdatabases
2、查詢用戶創建的數據庫中有哪些用戶創建的表
select * from Sysobjects where xtype='U'
3、查詢用戶創建的數據庫中有哪些用戶創建的存儲過程
select * from Sysobjects where xtype='P'
4、批量生成刪除數據庫中所有用戶表的sql語句
select 'drop table '+ name from Sysobjects where xtype='U'
綜合以上所述,掌握數據庫中系統表,對於我們sql編程具有很大幫助