一、庫里有多少個表,表名等
select * from INFORMATION_SCHEMA.TABLES
二、查詢表、字段、類型、是否主鍵、長度、小數位、是否允許空、默認值等詳細查詢
效果:
SELECT (case when a.colorder=1 then d.name else '' end) as 表名,--如果表名相同就返回空 a.colorder as 字段序號, a.name as 字段名, (case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) as 標識, (case when (SELECT count(*) FROM sysobjects--查詢主鍵 WHERE (name in (SELECT name FROM sysindexes WHERE (id = a.id) AND (indid in (SELECT indid FROM sysindexkeys WHERE (id = a.id) AND (colid in (SELECT colid FROM syscolumns WHERE (id = a.id) AND (name = a.name)) ))))) AND (xtype = 'PK'))>0 then '√' else '' end) as 主鍵,--查詢主鍵END b.name as 類型, a.length as 占用字節數, COLUMNPROPERTY(a.id,a.name,'PRECISION') as 長度, isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as 小數位數, (case when a.isnullable=1 then '√'else '' end) as 允許空, isnull(e.text,'') as 默認值, isnull(g.[value],'') AS 字段說明 FROM syscolumns a left join systypes b on a.xtype=b.xusertype inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties' left join syscomments e on a.cdefault=e.id left join sys.extended_properties g on a.id=g.major_id AND a.colid = g.minor_id order by a.id,a.colorder
三、系統表:
sys.allocation_units | 數據庫中的每個分配單元都在表中占一行。 |
sys.assembly_modules | 為公共語言運行時 (CLR) 程序集所定義的每個函數、過程或觸發器返回一行。此目錄視圖將 CLR 存儲過程、CLR 觸發器或 CLR 函數映射到其基礎實現。類型為 TA、AF、PC、FS 和 FT 的對象具有相關聯的程序集模塊。若要查找對象和程序集之間的關聯,可以將此目錄視圖聯接到其他目錄視圖。例如,在創建 CLR 存儲過程時,該存儲過程由 sys.objects 中的一行、sys.procedures(繼承自 sys.objects)中的一行以及 sys.assembly_modules 中的一行表示。該存儲過程本身由 sys.objects 和 sys.procedures 中的元數據表示。在 sys.assembly_modules 中可以找到對該過程的基礎 CLR 實現的引用。 |
sys.check_constraints | 每個作為 CHECK 約束的對象 (sys.objects.type = ‘C’) 均存在對應的一行。 |
sys.columns | 為包含列的對象(如視圖或表)的每列返回一行。下面是包含列的對象類型的列表。
|
sys.computed_columns | sys.columns 中的每個計算列對應一行。 |
sys.default_constraints | 作為默認定義且 sys.objects.type = D的每個對象在表中各對應一行,該默認定義是作為CREATE TABLE或ALTER TABLE語句的一部分創建的,而不是作為CREATE DEFAULT語句的一部分創建的。 |
sys.events | 導致觸發器或事件通知激發的每個事件對應一行。這些事件表示在使用CREATE TRIGGER或CREATE EVENT NOTIFICATION創建觸發器或事件通知時所指定的事件類型。 |
sys.event_notifications | 為作為事件通知的每個對象返回一行,且 sys.objects.type = EN。 |
sys.extended_procedures | 每個作為擴展存儲過程且 sys.objects.type = X的對象對應一行。因為擴展存儲過程安裝在master 數據庫中,它們只有在該數據庫上下文中才可見。從任何其他數據庫上下文中的sys.extended_procedures 視圖中進行選擇,將返回空的結果集。 |
sys.foreign_key_columns | 組成外鍵的每一列或列集在表中對應一行。 |
sys.foreign_keys | 每個作為FOREIGN KEY約束并且sys.object.type = F的對象都在表中占一行。 |
sys.function_order_columns | 針對每列返回一行,該列是公共語言運行時(CLR)表值函數ORDER表達式的一部分。 |
sys.identity_columns | 用作標識列的每列都在表中占一行。 |
sys.index_columns | 屬于 sys.indexes 索引或未排序的表(堆)的每個列都對應一行。 |
sys.indexes | 每個表格對象(例如,表、視圖或表值函數)的索引或堆都包含一行。 |
sys.key_constraints | 每個作為主鍵或唯一約束的對象對應一行。包括 sys.objects.type PK和UQ。 |
sys.numbered_procedure_parameters | 帶編號過程的每個參數都在表中對應一行。當您創建帶編號的存儲過程時,基過程的編號為1。所有后續過程的編號依次為2、3等。sys.numbered_procedure_parameters 包含所有后續過程(編號大于等于2)的參數定義。該視圖不顯示基存儲過程(編號= 1)的參數?;鎯^程類似于無編號的存儲過程。因此,它的參數表示在sys.parameters (Transact-SQL)中。 |
sys.numbered_procedures | 每個作為帶編號的過程而創建的SQL Server存儲過程都占一行。對于基(編號= 1)存儲過程,它不顯示行。可以在諸如sys.objects 和 sys.procedures 之類的視圖中找到基存儲過程的項。 |
sys.objects | 在數據庫中創建的每個用戶定義的架構范圍內的對象在該表中均對應一行。 |
sys.parameters | 接受參數的對象的每個參數在表中對應一行。如果對象是標量函數,則另有一行說明返回值。該行將有一個值為0的parameter_id。 |
sys.partitions | 數據庫中所有表和大多數類型的索引的每個分區在表中各對應一行。Fulltext、Spatial和xml之類的特殊索引類型在此視圖中不包括。SQL Server 2008中所有表和索引都至少包含一個分區,無論它們是否已進行顯式分區均為如此。 |
sys.procedures | 于同類過程并且 sys.objects.type = P、X、RF和PC的每個對象對應一行。 |
sys.service_queues | 數據庫中每個作為服務隊列的對象(sys.objects.type = SQ)都在表中對應一行。 |
sys.spatial_index_tessellations | 表示有關每個空間索引的分割方案和參數的信息。 |
sys.spatial_indexes | 表示空間索引的主索引信息。 |
sys.sql_dependencies | 對在定義另一引用對象的Transact-SQL表達式或語句中引用的被引用的實體的每一依賴關系,均存在對應的一行。 |
sys.sql_expression_dependencies | 當前數據庫中用戶定義實體的每個按名稱依賴項在此表中均占一行。當一個稱為“被引用的實體”的實體按名稱顯示在另一個稱為“引用實體”的實體的持久化SQL表達式中時,將創建這兩個實體之間的依賴關系。例如,在視圖定義中引用表時,作為引用實體的視圖將依賴于表這個被引用的實體。如果刪除該表,則該視圖不可用。您可以使用此目錄視圖來報告以下實體的依賴關系信息:
|
sys.sql_modules | 對每個SQL語言定義的模塊對象都返回一行。類型為P、RF、V、TR、FN、IF、TF和R的對象均有關聯的SQL模塊。在此視圖中,獨立的默認值,即D類型的對象也具有SQL模塊定義。有關這些類型的說明,請參閱sys.objects目錄視圖中的類型列。 |
sys.stats | U、V或TF類型表格對象的每個統計信息都對應一行。 |
sys.stats_columns | sys.stats 統計信息包含的每列對應一行。 |
sys.synonyms | 在該視圖中,sys.objects.type = SN的每個同義詞對象對應一行。 |
sys.table_types | 顯示用戶定義表類型的屬性。表類型是指無法從其中聲明表變量或表值參數的類型。每個表類型都包含 type_table_object_id,它是指向sys.objects目錄視圖的外鍵。此ID可用于查詢各種目錄視圖,查詢方式與常規表的object_id 類似,以便發現表類型的結構,如表的列、約束等。 |
sys.tables | 為每個表對象返回一行,當前僅用于sys.objects.type = U的表對象。 |
sys.trigger_event_types | 為可以激發觸發器的每個事件或事件組返回一行。 |
sys.trigger_events | 觸發觸發器的每個事件對應一行。 |
sys.triggers | 每個類型為TR或TA的觸發器對象對應一行。DML觸發器名稱在架構范圍內,因此,可在sys.objects 中顯示。DDL觸發器名稱的作用域取決于父實體,只能在此視圖中顯示。parent_class 和 name 列唯一標識了數據庫中的觸發器。 |
sys.views | ys.objects.type = V的每個視圖對象在該表中對應一行。 |
新聞熱點
疑難解答