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 : SELECT name
FROM SYS.DATABASES
Method 3 : SELECT name
FROM SYS.MASTER_FILES
Method 4 : SELECT *
FROM SYS.MASTER_FILES
|
SP_DATABASES是一個可以列舉資料庫及其大小的儲存過程
sys.databases語句中可以列舉資料庫名稱,建立日期,修改日期,已經資料庫id和其他一些資訊。
SYS.MASTER_FILES語句可以查詢資料的詳細情況,比如資料庫id,大小,物理儲存路徑以及列舉資料庫mdf和ldf.
如何列舉資料庫中的資料表
以下的sql語句都可以列表sql server資料庫中的使用者表.
Method 1 : SELECT name
FROM SYS.OBJECTS
WHERE type= 'U'
Method 2 : SELECT NAME
FROM SYSOBJECTS WHERE
xtype= 'U'
Method 3 : SELECT name
FROM SYS.TABLES
Method 4 : SELECT name
FROM SYS.ALL_OBJECTS
WHERE type= 'U'
Method 5 : SELECT table_name
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE= 'BASE TABLE'
Method 6 : SP_TABLES
|
如何列舉資料庫中的儲存過程
Method 1 : SELECT name
FROM SYS.OBJECTS
WHERE type= 'P'
Method 2 : SELECT name
FROM SYS.PROCEDURES
Method 3 : SELECT name
FROM SYS.ALL_OBJECTS
WHERE type= 'P'
Method 4 : SELECT NAME
FROM SYSOBJECTS WHERE
xtype= 'P'
Method 5 : SELECT Routine_name
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE= 'PROCEDURE'
|
SYS.OBJECTS資料表包含了全部的儲存過程,資料表,觸發器,檢視等的資訊,這裡使用type=’p'來查詢儲存過程.
Information_schema.routines在sql server 7.0是一個資料檢視,在其後的版本中已經變成儲存過程專有的表.
如何列舉資料庫中的檢視
Method 1 : SELECT name
FROM SYS.OBJECTS
WHERE type= 'V'
Method 2 : SELECT name
FROM SYS.ALL_OBJECTS
WHERE type= 'V'
Method 3 : SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.VIEWS
Method 4 : SELECT name
FROM SYS.VIEWS
|
如何列舉資料庫中的函式
Method 1 : SELECT name
FROM SYS.OBJECTS
WHERE type= 'IF'
Method 2 : SELECT name
FROM SYS.OBJECTS
WHERE type= 'TF'
Method 3 : SELECT name
FROM SYS.OBJECTS
WHERE type= 'FN'
Method 4 : SELECT name
FROM SYS.ALL_OBJECTS
WHERE type= 'IF'
Method 5 : SELECT name
FROM SYS.ALL_OBJECTS
WHERE type= 'TF'
Method 6 : SELECT name
FROM SYS.ALL_OBJECTS
WHERE type= 'FN'
Method 7 : SELECT Routine_name
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_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 : SELECT COLUMN_NAME,Ordinal_position,Data_Type,character_maximum_length FROM
INFORMATION_SCHEMA.COLUMNS WHERE
TABLE_NAME= 'Products'
|
如何根據資料表的列查詢資料表的名稱
Method 1 : SELECT O. name
FROM SYS.OBJECTS O
INNER JOIN
SYS.COLUMNS C ON
C.Object_ID = O.Object_ID WHERE
C. name LIKE
'%ShipName%'
Method 2 : SELECT OBJECT_NAME(object_id)
AS [ Table
Name ] FROM SYS.COLUMNS
WHERE name
LIKE '%ShipName%'
Method 3 : SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME
LIKE '%ShipName%'
|
如何獲得資料表的總列數
Method 1 : SELECT COUNT (@@ROWCOUNT)
FROM Products
Method 2 : SELECT COUNT
(ProductID) FROM
Products
Method 3 : SELECT OBJECT_NAME(id)
AS [ Table
Name ],rowcnt FROM SYSINDEXES
WHERE OBJECTPROPERTY(id, 'isUserTable' )=1 AND
indid < 2 ORDER
BY rowcnt DESC
Method 4 : SELECT rowcnt
FROM sysindexes
WHERE id = OBJECT_ID( 'Products' ) AND
indid < 2
Method 5 : SELECT OBJECT_NAME(OBJECT_ID) TableName,row_count
FROM sys.dm_db_partition_stats
WHERE object_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 [ View Name ],text
FROM SYSCOMMENTS
WHERE id IN
( SELECT
object_id FROM SYS.VIEWS)
Method 2 : SELECT *
FROM sys.all_sql_modules
WHERE object_id
IN ( SELECT object_id
FROM SYS.VIEWS)
Method 3 : SP_HELPTEXT ViewName
|
如何獲得儲存過程中的資料表
Method 1 : SELECT OBJECT_NAME(id)
FROM SYSCOMMENTS S
INNER JOIN
SYS.OBJECTS O ON
O.Object_Id = S.id
WHERE S.text
LIKE '%Products%'
AND O.type= 'P'
|
總結
以上列舉了一下sql server用實用的一些sql語句,希望對你在使用查詢視窗操作時有用。