sql server 中的一些實用的sql語句

lanchengxiaoxiao發表於2012-05-04

sql server 中的一些重要sql語句

簡介


http://www.zhongsisi.com/sql-server-in-some-useful-sql-statement/

在這篇文章中,我列舉一些sql語句來介紹資料庫,資料表,檢視等等。當我們在使用查詢查詢操作時這些sql語句都是非常有用的。雖然在sql server物件瀏覽器中我們也可以獲得這些語句,但是如果我們寫這些語句時我們可以將它自定義。這就意味著我們可以給予自己的需求來過濾結果。

sql語句列表

如何列舉sql server當前連線的可用資料庫
Method 1 : SP_DATABASES
Method 2 : SELECTname FROM SYS.DATABASES
Method 3 : SELECTname FROM SYS.MASTER_FILES
Method 4 : SELECT* FROM SYS.MASTER_FILES -- Type=0 for .mdf and type=1 for .ldf

SP_DATABASES是一個可以列舉資料庫及其大小的儲存過程

sys.databases語句中可以列舉資料庫名稱,建立日期,修改日期,已經資料庫id和其他一些資訊。

SYS.MASTER_FILES語句可以查詢資料的詳細情況,比如資料庫id,大小,物理儲存路徑以及列舉資料庫mdf和ldf.

如何列舉資料庫中的資料表

以下的sql語句都可以列表sql server資料庫中的使用者表.

Method 1 : SELECTname FROM SYS.OBJECTS WHERE type='U'
Method 2 : SELECTNAME FROM SYSOBJECTS WHERE xtype='U'
Method 3 : SELECTname FROM SYS.TABLES
Method 4 : SELECTname FROM SYS.ALL_OBJECTS WHERE type='U'
Method 5 : SELECTtable_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
Method 6 : SP_TABLES
如何列舉資料庫中的儲存過程
Method 1 : SELECTname FROM SYS.OBJECTS WHERE type='P'
Method 2 : SELECTname FROM SYS.PROCEDURES
Method 3 : SELECTname FROM SYS.ALL_OBJECTS WHERE type='P'
Method 4 : SELECTNAME FROM SYSOBJECTS WHERE xtype='P'
Method 5 : SELECTRoutine_name FROMINFORMATION_SCHEMA.ROUTINES WHEREROUTINE_TYPE='PROCEDURE'

SYS.OBJECTS資料表包含了全部的儲存過程,資料表,觸發器,檢視等的資訊,這裡使用type=’p'來查詢儲存過程.

Information_schema.routines在sql server 7.0是一個資料檢視,在其後的版本中已經變成儲存過程專有的表.

如何列舉資料庫中的檢視
Method 1 : SELECTname FROM SYS.OBJECTS WHERE type='V'
Method 2 : SELECTname FROM SYS.ALL_OBJECTS WHERE type='V'
Method 3 : SELECTTABLE_NAME FROM INFORMATION_SCHEMA.VIEWS
Method 4 : SELECTname FROM SYS.VIEWS
如何列舉資料庫中的函式
Method 1 : SELECTname FROM SYS.OBJECTS WHERE type='IF' -- inline function
Method 2 : SELECTname FROM SYS.OBJECTS WHERE type='TF' -- table valued function
Method 3 : SELECTname FROM SYS.OBJECTS WHERE type='FN' -- scalar function
Method 4 : SELECTname FROM SYS.ALL_OBJECTS WHERE type='IF' -- inline function
Method 5 : SELECTname FROM SYS.ALL_OBJECTS WHERE type='TF' -- table valued function
Method 6 : SELECTname FROM SYS.ALL_OBJECTS WHERE type='FN' -- scalar function
Method 7 : SELECTRoutine_name FROMINFORMATION_SCHEMA.ROUTINES WHEREROUTINE_TYPE='FUNCTION'
如何列舉資料庫中的觸發器
Method 1 : SP_HELPTRIGGER Products
Method 2 : SELECT* FROM SYS.TRIGGERS WHERE parent_id = object_id('products')

下面我以一個products表為例列舉一些對錶的操作.

如何獲取資料表中的列
Method 1 : SP_HELP Products
Method 2 : SP_COLUMNS Products
Method 3 : SELECT* FROM SYS.COLUMNS WHERE object_id = object_id('Products')
Method 4 : SELECTCOLUMN_NAME,Ordinal_position,Data_Type,character_maximum_lengthFROM                      INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Products'
如何根據資料表的列查詢資料表的名稱
Method 1 : SELECTO.name FROM SYS.OBJECTS O INNERJOIN SYS.COLUMNS C ON C.Object_ID = O.Object_ID WHERE C.nameLIKE '%ShipName%'
Method 2 : SELECTOBJECT_NAME(object_id) AS[Table Name] FROMSYS.COLUMNS WHEREname LIKE '%ShipName%'
Method 3 : SELECTTABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE '%ShipName%'
如何獲得資料表的總列數
Method 1 : SELECTCOUNT(@@ROWCOUNT) FROM Products
Method 2 : SELECTCOUNT (ProductID) FROM Products
Method 3 : SELECTOBJECT_NAME(id) AS[Table Name],rowcnt FROMSYSINDEXES WHERE OBJECTPROPERTY(id,'isUserTable')=1AND indid < 2 ORDER BY rowcnt DESC
Method 4 : SELECT rowcnt FROM sysindexes WHERE id = OBJECT_ID('Products')AND  indid < 2
Method 5 : SELECTOBJECT_NAME(OBJECT_ID) TableName,row_count FROMsys.dm_db_partition_stats WHEREobject_id = object_id('Products')AND  index_id < 2
如何獲得資料表的約束
Method 1 : SELECT* FROM SYS.OBJECTS WHERE type='C'
Method 2 : SELECT* FROM sys.check_constraints
如何獲得資料表的索引
Method 1 : sp_helpindex Products
Method 2 : SELECT* FROM sys.indexes WHERE  object_id = object_id('products')
如何獲得資料檢視的模式定義
Method 1 :  SELECT OBJECT_NAME(id) AS [ViewName],text FROMSYSCOMMENTS WHEREid IN (SELECT object_idFROM SYS.VIEWS)
Method 2 : SELECT* FROM sys.all_sql_modules WHERE object_id IN (SELECTobject_id FROM SYS.VIEWS)
Method 3 : SP_HELPTEXT ViewName
如何獲得儲存過程中的資料表
Method 1 : SELECTOBJECT_NAME(id) FROMSYSCOMMENTS S
                     INNERJOIN SYS.OBJECTS O ON O.Object_Id = S.id
                    WHERES.text LIKE '%Products%'
                    ANDO.type='P'

總結

以上列舉了一下sql server用實用的一些sql語句,希望對你在使用查詢視窗操作時有用。


相關文章