1. 程式人生 > >sql 學習心得 第一篇

sql 學習心得 第一篇


distinct  --去重複

建立連線伺服器
exec sp_addlinkedserver   '連線伺服器名稱', '', 'SQLOLEDB', '遠端伺服器名或ip地址' 
exec sp_addlinkedsrvlogin  '連線伺服器名稱', 'false',null, '遠端資料庫賬號', '遠端資料庫密碼'

merge --語句使用
1.MERGE INTO test T1
2.USING (SELECT OWNER , OBJECT_NAME , MAX(ID) ID FROM T GROUP BY OWNER, OBJECT_NAME) T
3.ON (T.OWNER = T1.OWNER AND T.OBJECT_NAME = T1.TABLE_NAME)
4.WHEN MATCHED THEN UPDATE SET T1.ID = T.ID
5.WHEN NOT MATCHED THEN INSERT VALUES (T.ID, T.OWNER, T.OBJECT_NAME);
第一行 命名目標表並給別名T1
第二行 using子句提供merge操作的資料來源,命名T
第三行 on子句指定合併的條件
第四行 when matched then 子句判定條件符合則對錶T1做什麼改變(或刪除)
第五行 when not matched then 子句判斷條件不符合則插入的操作

@@rowcount -- 返回上條語句  影響行數

SET NOCOUNT ON;

SET NOCOUNT OFF;

註釋 
當 SET NOCOUNT 為 ON 時,不返回計數(表示受 Transact-SQL 語句影響的行數)。當 SET NOCOUNT 為 OFF 時,返回計數。 

CAST(123 AS “123” ) --型別轉換
註釋:使用CAST函式進行資料型別轉換時,在下列情況下能夠被接受:
(1)兩個表示式的資料型別完全相同。
(2)兩個表示式可隱性轉換。
(3)必須顯式轉換資料型別。
如果轉換時沒有指定資料型別的長度,則SQServer自動提供長度為30


 ABS(-123)  = 123  絕對值函式 註釋:  通俗講 “取正”  負的變正的   正的還是正的


從 decimal 或 numeric 向 float 或 real 轉換會導致精度損失。
從 int、smallint、tinyint、float、real、money 或 smallmoney 向 decimal 或 numeric 轉換會導致溢位。
round() 、floor()、ceiling()三個函式定義
round() 遵循四捨五入把原值轉化為指定小數位數,如:round(1.45,0) = 1;round(1.55,0)=2
floor()向下舍入為指定小數位數 如:floor(1.45,0)= 1;floor(1.55,0) = 1
ceiling()向上舍入為指定小數位數 如:ceiling(1.45,0) = 2;ceiling(1.55,0)=2