對SQL資料表和資料庫進行迭代操作

2021-09-05 20:11:11 字數 1643 閱讀 8511

這些系統

過程對於處理以下任務非常方便,如判斷使用的儲存空間大小、行數、使用者表索引

等等。第乙個過程sp_msforeachdb對於感興趣的伺服器上的每個資料庫執行三條命令。

@command1:第乙個執行的命令

@replacechar:用另乙個佔位賦替換「?」

@command2:第二個執行的命令

@command3:第三個執行的命令

@precommand:進入迴圈前執行的命令

@postcommand:迴圈結束後執行的命令

每個命令集(即使該集合只含有一條命令)作為乙個批處理對每個資料庫執行,

所以當我們要將捕獲的結果輸出到文字而不是標準結果集表時,這將非常有用。

為了實現這一要求,選擇選單中的查詢按鈕|輸出結果|輸出到文字或者按快捷鍵[ctrl]t。

下面的**返回伺服器上每個資料庫中使用者資料表的數目:

exec sp_msforeachdb@command1 = "use ? exec sp_spaceused"

the abbreviated output looks like this:簡短輸出可能如下:

資料庫名資料庫大小未分配空間大小

--------------------- ------------------

master 5.25 mb1.26 mb

reserved data index_size unused

------------------ ------------------

2808 kb 1144 kb 1080 kb 584 kb

第二個過程sp_msforeachtable接受7個引數:

@command1:第乙個執行的命令

@replacechar:用另乙個佔位符替換「?」

@command2:第二個執行的命令

@command3:第三個執行的命令

@whereand:where條件語句 (或 order by 語句)

@precommand:進入迴圈前執行的命令

@postcommand:迴圈結束後執行的命令

通過對要傳遞的引數命名,可以跳過傳遞空值的要求。當要執行的命令中含有乙個問號時,引數@replacechar十分有用。@whereand引數的實現可以根據過濾器縮小輸出的範圍。

你還可以加入乙個order by語句。下面的例子返回adventureworks資料庫中每個資料表的行數,並按照資料表明對它們排序:

exec sp_msforeachtable@command1 = "print '?'",

@command2 = "select count(*) from ?", @whereand = "order by 1"

下面是輸出結果:

[humanresources].[department]-----------

16[humanresources].[employee]-----------290[humanresources].

[employeeaddress]-----------290[humanresources].

[employeedepartmenthistory]-----------296

本文出自 51cto.com技術部落格

對SQL Server資料表和資料庫進行迭代操作

本文介紹了master資料庫中兩個非常有用但在sql 這些系統過程對於處理以下任務非常方便,如判斷使用的儲存空間大小 行數 使用者表索引等等。第乙個過程sp msforeachdb對於感興趣的伺服器上的每個資料庫執行三條命令。command1 第乙個執行的命令 replacechar 用另乙個佔位賦...

SQL語句(一)SQL和資料庫資料表的建立

3 資料控制語言 datacontrollanguage 開啟前,先開啟sql server configure sql server mssqlserver 啟動 建立的資料庫實際上是建立乙個框架,裡面什麼都沒有,還需要建立資料表。列名稱1 資料型別 列約束1 列名稱2 資料型別 列約束2 列名稱...

MySQL資料庫和資料表操作

顯示資料庫 show databases 顯示資料表 show tables 選擇資料庫 use database name 顯示表結構 desc table name create database database name drop database database name create ...