認識SQLSERVER中sysobjects表

2021-07-09 02:15:00 字數 1543 閱讀 3276

sysobjects表: sysobjects 是sqlserver中的系統物件表,儲存系統中的當前所有物件,包括表、儲存過程、檢視、主鍵、外來鍵、約束等

通過sql查詢sysobjects ,並沒有排序,查詢結果i預設通過id排序

sysobjects 有幾個比較重要的字段

name:  object名稱

id:  object id,從查詢結構看id欄位應該是主鍵,不重複

xtype:  object型別

uid: object所有者id

觀察到xtype不在是s,下面介紹一下xtype的多種值

c = check 約束

d = 預設值或 default 約束

f = foreign key 約束

fn = 

標量函式

if = 內嵌表函式

pk = primary key

l = 日誌

p = 

儲存過程

r = 規則

rf = 複製篩選儲存過程

s = 系統表

tf = 表函式

tr = 

觸發器u = 使用者表

v = 檢視

x = 擴充套件儲存過程

af = 

聚合函式 (

clr)

fs = 程式集 (clr) 標量函式

ft = 程式集 (clr) 錶值函式

if = 內聯表函式

it = 內部表

pc = 程式集 (clr) 

儲存過程

pk = primary key 約束

sn = 同義詞

sq = 服務佇列

ta = 程式集 (clr) dml 觸發器

tt = 表型別

uq = unique 約束

我覺得需要記住的型別為

p = 儲存過程  s=系統表  u=使用者表  tr=觸發器 

從查詢結果看出系統表的uid 4,使用者表的uid為1,而表中並沒有id為1、4的行資料,可以理解系統自動隱藏了幾個非常重要的id,並且它們並沒有uid

觀察到id的長度不在一位或者兩位,已變成多位,可以猜想出非系統已內建的id都是類似於uuid,防止重複衝突

下面介紹下常用功能

如果需要查詢當前資料庫中有多少張使用者表,執行sql: select count(1) from sysobjects where xtype='u'

如果需要查詢當前資料庫是否已存在某張表,執行sql: select count(1) from sysobjects where name='表名'

如果需要新建表,且先判斷當前資料庫是否已存在,執行sql:

if not exists(select 1 from sys.objects where name='表名')

begin

create table [dbo].[表名](

[欄位名1] [型別](長度) null,

[欄位名2] [型別](長度 null,

.........

) on [primary]

endgo

Python中sys模組用法

sys.argv 實現從程式外部向程式傳遞引數,獲取程式的路徑並傳遞 sys模組有乙個argv變數,用list儲存了命令列的所有引數。argv至少有乙個元素,因為第乙個引數永遠是該.py檔案的名稱.sys.exit arg 程式中間的退出,arg 0為正常退出.sys.version 獲取pytho...

Python中 os 與 sys 模組

os和sys模組 python常見模組命令 一 os python的標準庫中的os模組主要涉及普遍的作業系統功能。可以在linux和windows下執行,與平台無關。os.sep 可以取代作業系統特定的路徑分割符。os.name字串指示你正在使用的平台。比如對於windows,它是 nt 而對於li...

python 中的常用sys 模組

sys path.py import sys print sys.path 結果為 home python desktop demo usr lib python35.zip usr lib python3.5 usr lib python3.5 plat x86 64 linux gnu usr ...