當前位置:首頁 » 編程語言 » sql局部變數使用范圍
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql局部變數使用范圍

發布時間: 2023-03-01 10:22:51

① 急求sql資料庫中能用到的關鍵字及其用處最好能舉例說明一下!

我在別人的blog上摘錄的,你可以上去看看,能學到很多知識了
http://www.badguy.name/article.asp?id=702
上一篇 下一篇連接,能看到很多sql文章。
希望對你有幫助。

1.數據定義語言(DDL)
數據定義語言是指用來定義和管理資料庫以及資料庫中的各種對象的語句,這些語句包括Create、Alter和Drop等語句。在SQL Server 2000中,資料庫對象包括表、視圖、觸發器、存儲過程、規則、預設、用戶自定義的數據類型等。這些對象的創建、修改和刪除等都可以通過使用Create、Alter、Drop等語句來完成。

2.數據操縱語言(DML)
數據操縱語言是指用來查詢、添加、修改和刪除資料庫中數據的語句,這些語句包括Select、Insert、Update、Delete等。在默認情況下,只有sysadmin、dbcreator、db_owner或db_datawriter等角色的成員才有權利執行數據操縱語言。

3.數據控制語言(DCL)
數據控制語言(DCL)是用來設置或者更改資料庫用戶或角色許可權的語句,這些語句包括GRANT、DENY、REVOKE等語句,在默認狀態下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成員才有權利執行數據控制語言。

GRANT語句是授權語句,它可以把語句許可權或者對象許可權授予給其他用戶和角色。
DENY語句用於拒絕給當前資料庫內的用戶或者角色授予許可權,並防止用戶或角色通過其組或角色成員繼承許可權。
REVOKE語句是與GRANT語句相反的語句,它能夠將以前在當前資料庫內的用戶或者角色上授予或拒絕的許可權刪除,但是該語句並不影響用戶或者角色從其他角色中作為成員繼承過來的許可權。

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

4. 系統存儲過程

系統存儲過程是SQL Server系統創建的存儲過程,它的目的在於能夠方便地從系統表中查詢信息,或者完成與更新資料庫表相關的管理任務或其它的系統管理任務。系統存儲過程可以在任意一個資料庫中執行。系統存儲過程創建並存放於系統資料庫master中,並且名稱以sp_或者xp_開頭。
sp_addtype:用於定義一個用戶定義數據類型。
sp_configure:用於管理伺服器配置選項設置。
xp_sendmail:用於發送電子郵件或尋呼信息。
sp_stored_proceres:用於返回當前資料庫中的存儲過程的清單。
sp_help:用於顯示參數清單和其數據類型。
sp_depends:用於顯示存儲過程依據的對象或者依據存儲過程的對象。
sp_helptext:用於顯示存儲過程的定義文本。
sp_rename:用於修改當前資料庫中用戶對象的名稱
3.數據控制語言(DCL)
數據控制語言(DCL)是用來設置或者更改資料庫用戶或角色許可權的語句,這些語句包括GRANT、DENY、REVOKE等語句,在默認狀態下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成員才有權利執行數據控制語言。

GRANT語句是授權語句,它可以把語句許可權或者對象許可權授予給其他用戶和角色。
DENY語句用於拒絕給當前資料庫內的用戶或者角色授予許可權,並防止用戶或角色通過其組或角色成員繼承許可權。
REVOKE語句是與GRANT語句相反的語句,它能夠將以前在當前資料庫內的用戶或者角色上授予或拒絕的許可權刪除,但是該語句並不影響用戶或者角色從其他角色中作為成員繼承過來的許可權。

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

4. 系統存儲過程

系統存儲過程是SQL Server系統創建的存儲過程,它的目的在於能夠方便地從系統表中查詢信息,或者完成與更新資料庫表相關的管理任務或其它的系統管理任務。系統存儲過程可以在任意一個資料庫中執行。系統存儲過程創建並存放於系統資料庫master中,並且名稱以sp_或者xp_開頭。
sp_addtype:用於定義一個用戶定義數據類型。
sp_configure:用於管理伺服器配置選項設置。
xp_sendmail:用於發送電子郵件或尋呼信息。
sp_stored_proceres:用於返回當前資料庫中的存儲過程的清單。
sp_help:用於顯示參數清單和其數據類型。
sp_depends:用於顯示存儲過程依據的對象或者依據存儲過程的對象。
sp_helptext:用於顯示存儲過程的定義文本。
sp_rename:用於修改當前資料庫中用戶對象的名稱。
程序代碼

1. EXEC sp_renamedb 'userdb1', 'userdb2'
更改資料庫的名稱,由userdb1更改為userdb2

2.EXEC sp_rename 'user_log','用戶登錄表'
更改當前資料庫表的名稱,由user_log,改為'用戶登錄表'
EXEC sp_rename 'user_info.user_name', '用戶名','column'
將user_info表的'user_name'列重命名為'用戶名'

3.EXEC sp_detach_db 'pubs', 'true'
sp_detach_db
從伺服器分離資料庫,並可以選擇在分離前在所有的表上運行 Update STATISTICS。

4. 將資料庫附加到伺服器
EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'

5. 將只有一個數據文件的資料庫附加到當前伺服器
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'

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

SQL中的注釋
在SQL Server中,可以使用兩種類型的注釋字元:一種是ANSI標準的注釋符「--」,它用於單行注釋;另一種是與C語言相同的程序注釋符號,即「/* */」。

SQL中的變數

Transact-SQL語言中有兩種形式的變數,一種是用戶自己定義的局部變數,另外一種是系統提供的全局變數。

3.數據控制語言(DCL)
數據控制語言(DCL)是用來設置或者更改資料庫用戶或角色許可權的語句,這些語句包括GRANT、DENY、REVOKE等語句,在默認狀態下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成員才有權利執行數據控制語言。

GRANT語句是授權語句,它可以把語句許可權或者對象許可權授予給其他用戶和角色。
DENY語句用於拒絕給當前資料庫內的用戶或者角色授予許可權,並防止用戶或角色通過其組或角色成員繼承許可權。
REVOKE語句是與GRANT語句相反的語句,它能夠將以前在當前資料庫內的用戶或者角色上授予或拒絕的許可權刪除,但是該語句並不影響用戶或者角色從其他角色中作為成員繼承過來的許可權。

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

4. 系統存儲過程

系統存儲過程是SQL Server系統創建的存儲過程,它的目的在於能夠方便地從系統表中查詢信息,或者完成與更新資料庫表相關的管理任務或其它的系統管理任務。系統存儲過程可以在任意一個資料庫中執行。系統存儲過程創建並存放於系統資料庫master中,並且名稱以sp_或者xp_開頭。
sp_addtype:用於定義一個用戶定義數據類型。
sp_configure:用於管理伺服器配置選項設置。
xp_sendmail:用於發送電子郵件或尋呼信息。
sp_stored_proceres:用於返回當前資料庫中的存儲過程的清單。
sp_help:用於顯示參數清單和其數據類型。
sp_depends:用於顯示存儲過程依據的對象或者依據存儲過程的對象。
sp_helptext:用於顯示存儲過程的定義文本。
sp_rename:用於修改當前資料庫中用戶對象的名稱。
程序代碼

1. EXEC sp_renamedb 'userdb1', 'userdb2'
更改資料庫的名稱,由userdb1更改為userdb2

2.EXEC sp_rename 'user_log','用戶登錄表'
更改當前資料庫表的名稱,由user_log,改為'用戶登錄表'
EXEC sp_rename 'user_info.user_name', '用戶名','column'
將user_info表的'user_name'列重命名為'用戶名'

3.EXEC sp_detach_db 'pubs', 'true'
sp_detach_db
從伺服器分離資料庫,並可以選擇在分離前在所有的表上運行 Update STATISTICS。

4. 將資料庫附加到伺服器
EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'

5. 將只有一個數據文件的資料庫附加到當前伺服器
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'

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

SQL中的注釋
在SQL Server中,可以使用兩種類型的注釋字元:一種是ANSI標準的注釋符「--」,它用於單行注釋;另一種是與C語言相同的程序注釋符號,即「/* */」。

SQL中的變數

Transact-SQL語言中有兩種形式的變數,一種是用戶自己定義的局部變數,另外一種是系統提供的全局變數。

局部變數:局部變數是一個能夠擁有特定數據類型的對象,它的作用范圍僅限制在程序內部。局部變數可以作為計數器來計算循環執行的次數,或是控制循環執行的次數。另外,利用局部變數還可以保存數據值,以供控制流語句測試以及保存由存儲過程返回的數據值等。局部變數被引用時要在其名稱前加上標志「@」,而且必須先用DECLARE命令定義後才可以使用。
全局變數:全局變數是SQL Server系統內部使用的變數,其作用范圍並不僅僅局限於某一程序,而是任何程序均可以隨時調用。全局變數通常存儲一些SQL Server的配置設定值和統計數據。用戶可以在程序中用全局變數來測試系統的設定值或者是Transact-SQL命令執行後的狀態值。

使用全局變數時應該注意以下幾點:
①全局變數不是由用戶的程序定義的,它們是在伺服器級定義的。
②用戶只能使用預先定義的全局變數。
③引用全局變數時,必須以標記符「@@」開頭。
④局部變數的名稱不能與全局變數的名稱相同,否則會在應用程序中出現不可預測的結果。

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

SQL中的函數

在Transact-SQL語言中,函數被用來執行一些特殊的運算以支持SQL Server的標准命令。Transact-SQL 編程語言提供了三種函數:
一行集函數:行集函數可以在Transact-SQL語句中當作表引用。
二聚合函數:聚合函數用於對一組值執行計算並返回一個單一的值。
三標量函數:標量函數用於對傳遞給它的一個或者多個參數值進行處理和計算,並返回一個單一的值。

1.字元串函數
字元串函數包括:
基本字元串函數:UPPER、LOWER、SPACE、REPLICATE、STUFF、REVERSE、LTRIM、RTRIM。
字元串查找函數:CHARINDEX、PATINDEX。
長度和分析函數:DATALENGTH、SUBSTRING、RIGHT。
轉換函數:ASCH、CHAR、STR、SOUNDEX、DIFFERENCE。

基本字元串函數
UPPER:將小寫字元數據轉換為大寫的字元
LOWER:將大寫字元數據轉換為小寫的字元
SPACE:返回由重復的空格組成的字元串。如:space(2)則返回兩個空格
REPLICATE:以指定的次數重復字元表達式。
語法:REPLICATE ( character_e­xpression , integer_e­xpression )
如:Select REPLICATE(au_fname, 2) FROM authors,則重復兩遍每個作者的名字
STUFF:刪除指定長度的字元並在指定的起始點插入另一組字元。
語法:STUFF ( character_e­xpression , start , length , character_e­xpression )
(start是一個整形值,指定刪除和插入的開始位置。如果 start 或 length 是負數,則返回空字元串。如果 start 比第一個 character_e­xpression 長,則返回空字元串。
length是一個整數,指定要刪除的字元數。如果 length 比第一個 character_e­xpression 長,則最多刪除到最後一個 character_e­xpression 中的最後一個字元。)

3.數據控制語言(DCL)
數據控制語言(DCL)是用來設置或者更改資料庫用戶或角色許可權的語句,這些語句包括GRANT、DENY、REVOKE等語句,在默認狀態下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成員才有權利執行數據控制語言。

GRANT語句是授權語句,它可以把語句許可權或者對象許可權授予給其他用戶和角色。
DENY語句用於拒絕給當前資料庫內的用戶或者角色授予許可權,並防止用戶或角色通過其組或角色成員繼承許可權。
REVOKE語句是與GRANT語句相反的語句,它能夠將以前在當前資料庫內的用戶或者角色上授予或拒絕的許可權刪除,但是該語句並不影響用戶或者角色從其他角色中作為成員繼承過來的許可權。

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

4. 系統存儲過程

系統存儲過程是SQL Server系統創建的存儲過程,它的目的在於能夠方便地從系統表中查詢信息,或者完成與更新資料庫表相關的管理任務或其它的系統管理任務。系統存儲過程可以在任意一個資料庫中執行。系統存儲過程創建並存放於系統資料庫master中,並且名稱以sp_或者xp_開頭。
sp_addtype:用於定義一個用戶定義數據類型。
sp_configure:用於管理伺服器配置選項設置。
xp_sendmail:用於發送電子郵件或尋呼信息。
sp_stored_proceres:用於返回當前資料庫中的存儲過程的清單。
sp_help:用於顯示參數清單和其數據類型。
sp_depends:用於顯示存儲過程依據的對象或者依據存儲過程的對象。
sp_helptext:用於顯示存儲過程的定義文本。
sp_rename:用於修改當前資料庫中用戶對象的名稱。
程序代碼

1. EXEC sp_renamedb 'userdb1', 'userdb2'
更改資料庫的名稱,由userdb1更改為userdb2

2.EXEC sp_rename 'user_log','用戶登錄表'
更改當前資料庫表的名稱,由user_log,改為'用戶登錄表'
EXEC sp_rename 'user_info.user_name', '用戶名','column'
將user_info表的'user_name'列重命名為'用戶名'

3.EXEC sp_detach_db 'pubs', 'true'
sp_detach_db
從伺服器分離資料庫,並可以選擇在分離前在所有的表上運行 Update STATISTICS。

4. 將資料庫附加到伺服器
EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'

5. 將只有一個數據文件的資料庫附加到當前伺服器
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'

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

SQL中的注釋
在SQL Server中,可以使用兩種類型的注釋字元:一種是ANSI標準的注釋符「--」,它用於單行注釋;另一種是與C語言相同的程序注釋符號,即「/* */」。

SQL中的變數

Transact-SQL語言中有兩種形式的變數,一種是用戶自己定義的局部變數,另外一種是系統提供的全局變數。

局部變數:局部變數是一個能夠擁有特定數據類型的對象,它的作用范圍僅限制在程序內部。局部變數可以作為計數器來計算循環執行的次數,或是控制循環執行的次數。另外,利用局部變數還可以保存數據值,以供控制流語句測試以及保存由存儲過程返回的數據值等。局部變數被引用時要在其名稱前加上標志「@」,而且必須先用DECLARE命令定義後才可以使用。
全局變數:全局變數是SQL Server系統內部使用的變數,其作用范圍並不僅僅局限於某一程序,而是任何程序均可以隨時調用。全局變數通常存儲一些SQL Server的配置設定值和統計數據。用戶可以在程序中用全局變數來測試系統的設定值或者是Transact-SQL命令執行後的狀態值。

使用全局變數時應該注意以下幾點:
①全局變數不是由用戶的程序定義的,它們是在伺服器級定義的。
②用戶只能使用預先定義的全局變數。
③引用全局變數時,必須以標記符「@@」開頭。
④局部變數的名稱不能與全局變數的名稱相同,否則會在應用程序中出現不可預測的結果。

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

SQL中的函數

在Transact-SQL語言中,函數被用來執行一些特殊的運算以支持SQL Server的標准命令。Transact-SQL 編程語言提供了三種函數:
一行集函數:行集函數可以在Transact-SQL語句中當作表引用。
二聚合函數:聚合函數用於對一組值執行計算並返回一個單一的值。
三標量函數:標量函數用於對傳遞給它的一個或者多個參數值進行處理和計算,並返回一個單一的值。

1.字元串函數
字元串函數包括:
基本字元串函數:UPPER、LOWER、SPACE、REPLICATE、STUFF、REVERSE、LTRIM、RTRIM。
字元串查找函數:CHARINDEX、PATINDEX。
長度和分析函數:DATALENGTH、SUBSTRING、RIGHT。
轉換函數:ASCH、CHAR、STR、SOUNDEX、DIFFERENCE。

基本字元串函數
UPPER:將小寫字元數據轉換為大寫的字元
LOWER:將大寫字元數據轉換為小寫的字元
SPACE:返回由重復的空格組成的字元串。如:space(2)則返回兩個空格
REPLICATE:以指定的次數重復字元表達式。
語法:REPLICATE ( character_e­xpression , integer_e­xpression )
如:Select REPLICATE(au_fname, 2) FROM authors,則重復兩遍每個作者的名字
STUFF:刪除指定長度的字元並在指定的起始點插入另一組字元。
語法:STUFF ( character_e­xpression , start , length , character_e­xpression )
(start是一個整形值,指定刪除和插入的開始位置。如果 start 或 length 是負數,則返回空字元串。如果 start 比第一個 character_e­xpression 長,則返回空字元串。
length是一個整數,指定要刪除的字元數。如果 length 比第一個 character_e­xpression 長,則最多刪除到最後一個 character_e­xpression 中的最後一個字元。)

REVERSE:反轉字元串Select REVERSE('abcd') 則返回『dcba』

字元串查找函數
參考:http://www.badguy.name/article.asp?id=93

長度和分析函數
DATALENGTH :返回任何錶達式所佔用的位元組數。
SUBSTRING:參考http://www.badguy.name/article.asp?id=105
LEFT:返回從字元串左邊開始指定個數的字元。
RIGHT:返回從字元串左邊開始指定個數的字元。Select RIGHT(au_fname, 5) FROM authors

2.日期和時間函數

datepart

示例:

3.數學函數
數學函數用於對數字表達式進行數學運算並返回運算結果。 常用的有:CEILING()、FLOOR()、ROUND()函數

4.轉換函數
一般情況下,SQL Server會自動處理某些數據類型的轉換。例如,如果比較 char 和 datetime 表達式、smallint 和 int 表達式、或不同長度的 char 表達式,SQL Server 可以將它們自動轉換,這種轉換被稱為隱性轉換。但是,無法由SQL Server自動轉換的或者是SQL Server自動轉換的結果不符合預期結果的,就需要使用轉換函數做顯示轉換。轉換函數有兩個:CONVERT和CAST。

CAST ( e­xpression AS data_type )
CONVERT函數允許用戶把表達式從一種數據類型轉換成另一種數據類型,還允許把日期轉換成不同的樣式。其語法形式為:
CONVERT (data_type[(length)],e­xpression [,style])
流程式控制制語句是指那些用來控製程序執行和流程分支的命令,在SQL Server 2000中,流程式控制制語句主要用來控制SQL語句、語句塊或者存儲過程的執行流程。

IF Boolean_e­xpression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]

BEGIN
{ sql_statement
| statement_block }
END

http://www.badguy.name/article.asp?id=702

② SQL中局部變數和全局變數有何區別

全局變數在整個頁面有效,局部變數只在一部分地方有效.
不知你有沒有學過ASP
一個頁面
<%
Dim a '定義全局變數
a="1111" '給全局變數賦值

Sub x()
Dim b '定義局部變數
b="0000" '賦值
End Sub

Response.Write(a) '可以調用全局變數
Response.Write(b) '局部變數的有效范圍已過,不能調用
%>
懂了沒
變數b只能在過程 x 中被調用,因為變數是在過程x中聲明的 End Sub 後變數就無效了

③ sql中全局變數和局部變數的作用,並舉例說明

全局變數表示一個可以使用SQL
語句訪問和修改的可變值。定義好了以後,在整個程序結束前都可以用。
要創建一個全局變數,可以使用CREATE
VARIABLE
variable_name來創建,例如,
CREATE
VARIABLE
g_variable
number
DEFAULT
9;
局部變數雖然也可以自定義,但只能在子程序內部使用。
DECLARE
var_name[,...]
type
[DEFAULT
value]
,比如:
declare
v_variable
number
default
9

④ T-SQL局部變數的賦值方法哪兩種

1、局部變數的使用示例如下
use StudentManageDB
go
--聲明學號變數
declare @stuid int,@stuname varchar(20)
--查詢李銘的信息
set @stuname='李銘'
select StudentId,StudentName,Gender,StudentIdNo from Students
where StudentName=@stuname
--查詢李銘的學號
select @stuId=StudentId from Students where StudentName=@stuname
--查詢與李銘學號相鄰的學員
select StudentId,StudentName,Gender,StudentIdNo from Students
where StudentId=(@stuId+1) or StudentId=(@stuId-1)
2、從例子中可以看出,賦值有兩種方法:
(1)set:在代碼中使用set關鍵字對變數進行賦值。
(2)select:在語句中使用select語句將查詢出的數據賦值給變數。

⑤ SQL中什麼是局部變數,什麼是全局變數,如何標示他們

局部變數:
局部變數必須以標記@作為前綴
,如@age
局部變數的使用也是先聲明,再賦值
全局變數:
全局變數必須以標記@
@作為前綴,如@@version
全局變數由系統定義和維護,我們只能讀取,不能修改全局變數的值

⑥ sql什麼是常量變數局量

常量就是數值固定不變的或者被賦予固定值的量,如數字'100'、字母'abc'、符號'<>?/-'等。
變數即數值會發生變化的量,變數分為全局變數和局部變數。
局部變數(Local Variable)是用戶可以定義的、作用范圍僅在程序內部的變數。通常情況下,局部變數在程序中被用來存儲查詢結果,或者被當作程序執行過程中的暫存變數來使用。局部變數定義時要以@開頭,定義方式為:Declare @變數名 變數類型。
全局變數(Global Variable)是MS SQLServer系統內部使用的變數,作用范圍是系統內的所有程序,而並非局限於某些程序。它不是由用戶來定義的,而是系統中預先定義好的。使用全局變數時,要以@@開頭,如:select@@VERSION as w 用來查詢SQL伺服器安裝的日期、版本和處理器類型;select@@CONNECTIONS 用來查詢自上次SQL啟動以來連接或試圖連接的次數。
關於局部變數和全局變數詳細定義及用法,下面庫友的文章寫得很棒,請參考:
http://wenku..com/link?url=IQm3AQbS1RMtt1mFljtgdLeUSQC9_-V2c8epZTtRu-QdyQ86Gxh1CP6YfzXw_eCaRYLlysaI-vbu

http://wenku..com/view/f4d6faeeaeaad1f346933f00.html

⑦ sql server 2008 設置局部變數類型為 VARCHAR(max) 為什麼還是 只能存儲8000位元組

實際變數的存儲空間並沒有變化,只是增加了指針,你說的問題是什麼情況?
插入超過8K位元組溢出了嗎?能否提供截圖看看

===========================
varchar(max)、nvarchar(max) 和 varbinary(max) 統稱為大值數據類型。您可以使用大值數據類型來存儲最大為 2^31-1 個位元組的數據。
大值數據類型具有 text、ntext、image 這樣大容量存儲能力
可通過 sp_tableoption 將這些大容量的數據直接存儲在行內(超過 8000 位元組時,仍然是只在行內存儲指針),還是只在行內存儲指針。
大值數據類型又具有 varchar(n)、nvarchar(n)、varbinary(n) 這樣的應用方便的特性
可以使用游標;
可以使用 .WRITE() 對大值數據進行部分更新;
支持觸發器;
可以使用像 LEN、SUBSTRING 等字元串函數。
所以微軟建議:使用 varchar(max) 來代替 text,使用 nvarchar(max) 來代替 ntext,使用 varbinary(max) 來代替 image。