go 向 SQL Server 實用工具發出一批 Transact-SQL 語句結束的信號。go是把t-sql語句分批次執行。(一步成功了纔會執行下一步,即一步一個go)
BEGIN 和 END 語句用於將多個 Transact-SQL 語句組合爲一個邏輯塊。在控制流語句必須執行包含兩條或多條 Transact-SQL 語句的語句塊的任何地方,均可以使用 BEGIN 和 END 語句。sql
聲明:DECLARE @local_variable data_type數據庫
@local_variable 是變量的名稱。變量名必須以 at 符 (@) 開頭。data_type 是任何由系統提供的或用戶定義的數據類型。變量不能是 text、ntext 或 image 數據類型。函數
全局變量是系統預約義的,返回一些系統信息,全局變量以兩個@@開頭。工具
全局變量是sql server(WINDOWS平臺上強大的數據庫平臺)系統內部使用的變量,其做用範圍並不侷限於某一程序,而是任何程序都可隨時調用全局變量一般存儲一些sql server(WINDOWS平臺上強大的數據庫平臺)的配置設定值和效能統計數據。用戶可在程序中用全局變量來測試系統的設定值或Transact-SQL命令執行後的狀態值。有關sql server(WINDOWS平臺上強大的數據庫平臺) 全局變量的詳細狀況請參見附錄。sqlserver
在SQL注入時經常使用的全局變量測試
@@datadir # 數據庫的安裝路徑操作系統
@@hostname #主機名code
@@version_compile_os #操做系統server
3.Sqlserver存儲過程當中使用Select和Set給變量賦值對象
Sqlserver存儲過程是時常使用到的一個數據庫對象,在存儲過程當中會使用到Declare來定義存儲過程變量,定義的存儲過程變量能夠經過Set或者Select等關鍵字方法來進行賦值操做,使用Set對存儲過程變量賦值爲直接賦值,使用Select則通常從數據表中查找出符合條件的屬性進行賦值操做。
例如,下面定義一個存儲過程年齡字段@Age字段。
Declare @Age int;
使用Set方式賦值的語句可寫做爲:Set @Age=32;
若是咱們要從表UserTable中查找出名字爲張三的人的年齡,而後將之賦值給@Age變量,就得使用Select方式來賦值了,賦值方式以下:
Select @Age=Age FROM UserTable Where Name='張三';
此處使用Select進行賦值的話須要注意個點,Select查詢語句一條記錄都沒查找出來,@Age字段將不會有任何改變,也不會賦值爲Null,這個狀況博主在實際業務中遇到過,就是使用了while循環,而後在循環中採用Select對特定變量賦值,發現若是Select查詢集合爲空集的時候,變量值不是賦值爲NULL,而是直接保持上一次循環賦值的結果。
print @變量 是以文本的方式在消息欄顯示。
select @變量 是以表的形式在結果欄顯示。
SELECT 爲查詢語句,而PRINT是輸出語句
SELECT 後能夠跟任copy意的SQL ERVER數據類型,字段、標量函數等
PRINT後跟的只能有三種狀況
1:PRINT後能夠跟字符串或 Unicode 字符串常量。
2:PRINT後能夠跟任何有效的字符數據類型的變量,且數據類型必須是 char 或 varchar,或者必須可以隱式轉換爲這些數據類型。
3:PRINT後能夠跟返回字符串的表達式。可包括串聯的文字值、函數和變量。消息zd字符串最長可爲 8,000 個字符,超過該值之後的任何字符均被截斷。
SQL是Structrued Query Language的縮寫,即結構化查詢語言。它是負責與ANSI(美國國家標準學會)維護的數據庫交互的標準。做爲關係數據庫的標準語言,它已被衆多商用DBMS產品所採用, 使得它已成爲關係數據庫領域中一個主流語言,不只包含數據查詢功能,還包括插入、刪除、更新和數據定義功能.
接下來講一下T-SQL語言:
T-SQL是SQL語言的一種版本,且只能在SQL SERVER上使用。它是ANSI SQL的增強版語言、提供了標準的SQL命令。另外,T-SQL還對SQL作了許多補允,提供了相似C、Basic和Pascal的基本功能,如變量說明、流控制語言、功能函數等。」
數據類型 decimal 和 numeric 雖然在小數存儲方面都同樣,但建議使用Decimal
在SQL Server中,實際上小數數值只有兩種數據類型:float 和 decimal,分別是近似數值和精確數值。其餘小數類型,均可以使用float和decimal來替代,例如,雙精度(double precision)數據類型等價於 float(53),real等價於float(24),numeric是 decimal的同義詞,應該避免在程序中直接使用 double precision、**real和numeric**,而是用 float(24) 、float(53)和decimal 代替。
float是近似數值,存在精度缺失;decimal是精確數值,不存在精度損失。當數值不容許精度丟失時,使用 decimal數據類型存儲數據。在計算小數的除法時,SQL Server 內部隱式升級數據類型,根據小數數值的數據類型,就近向float(24) 或float(53)轉換。
語法:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
例子:
EXEC sp_rename 'HumanResources.uspGetAllEmployeesTest', 'uspEveryEmployeeTest';
not exists 和not in 分別是exists 和 in 的 對立面。
exists (sql 返回結果集爲真)
not exists (sql 不返回結果集爲真)
文章持續更新,若是喜歡,請拿起大家可愛的小手,給我點個贊吧!點贊是一種積極的生活態度,贊一個吧!