資料庫筆記【二】
來源:互聯網
上載者:User
select min(fs) as 分數 from tb_選課表--max,avg,sumselect floor(rand()*100)--隨機數create function my_var(@x int,@y int)--使用者自訂函數returns intasbegindeclare @pjzhi intset @pjzhi=(@x+@y)/2return @pjzhiendselect dbo.my_var(12,12) as 平均值print dbo.my_var(39,39)use db_執行個體資料庫declare @pjzhi intexec @pjzhi=dbo.my_var 12,12select @pjzhigouse AdventureWorksDWexec sp_addtype 'char_id','varchar(10)','not null'/*圖形化:可程式化性,類型,使用者自訂類型*/exec sp_droptype 'char_id'--刪除該類型go/*用DECLARE建立變數必須@開頭SET為變數賦值
全域變數不能自訂,@@SERVERNAME : 返回運行SQL Server 2000本機伺服器的名稱。 @@REMSERVER : 返回登入記錄中記載的遠程SQL Server伺服器的名稱。 @@CONNECTIONS : 返回自上次啟動SQL Server以來串連或試圖串連的次數,用其可讓管理員方便地瞭解今天所有試圖串連伺服器的次數。 @@CURSOR_ROWS : 返回最後串連上並開啟的遊標中當前存在的合格行的數量。 @@ERROR : 返回最後執行的Transact-SQL語句的錯誤碼。 @@ROWCOUNT : 返回受上一語句影響的行數,任何不返回行的語句將這一變數設定為0。 @@VERSION : 返回SQL Server當前安裝的日期、版本和處理器類型。 @@CPU_BUSY : 返回自SQL Server最近一次啟動以來CPU的工作時間其單位為毫秒。 @@DATEFIRST : 返回使用SET DATEFIRST命令而被賦值的DATAFIRST參數值。SET DATEFIRST命令用來指定每周的第一天是星期幾。 @@DBTS : 返回當前資料庫的時間戳記值必須保證資料庫中時間戳記的值是惟一的。 @@FETCH_STATUS : 返回上一次FETCH語句的狀態值。 @@IDENTITY : 返回最後插入行的識別欄位的列值。 @@IDLE : 返回自SQL Server最近一次啟動以來CPU處於空閉狀態的時間長短,單位為毫秒。 @@IO_BUSY : 返回自SQL Server最後一次啟動以來CPU執行輸入輸出操作所花費的時間(毫秒)。 @@LANGID : 返回當前所使用的語言ID值。 @@LANGUAGE : 返回當前使用的語言名稱。 @@LOCK_TIMEOUT: 返回當前會話等待鎖的時間長短其單位為毫秒。 @@MAX_CONNECTIONS : 返回允許串連到SQL Server的最大串連數目。 @@MAX_PRECISION : 返回decimal 和 numeric資料類型的精確度。 @@NESTLEVEL : 返回當前執行的預存程序的嵌套級數,初始值為0。 @@OPTIONS : 返回當前SET選項的資訊。 @@PACK_RECEIVED : 返回SQL Server通過網路讀取的輸入包的數目。 @@PACK_SENT : 返回SQL Server寫給網路的輸出包的數目。 @@PACKET_ERRORS : 返回網路包的錯誤數目。 @@PROCID : 返回當前預存程序的ID值。 @@SERVICENAME : 返回SQL Server正運行於哪種服務狀態之下:如 MS SQLServer、MSDTC、SQLServerAgent。 @@SPID : 返回目前使用者處理的伺服器處理ID值。 @@TEXTSIZE : 返回SET語句的TEXTSIZE選項值SET語句定義了SELECT語句中text或image。資料類型的最大長度基本單位為位元組。 @@TIMETICKS : 返回每一時鐘的微秒數。 @@TOTAL_ERRORS : 返回磁碟讀寫錯誤數目。 @@TOTAL_READ : 返回磁碟讀操作的數目。 @@TOTAL_WRITE : 返回磁碟寫操作的數目。 @@TRANCOUNT : 返回當前串連中處於啟用狀態的事務數目。*/--定義變數use db_qydeclare @var nvarchar,@xx varchar(3)--必須@開頭SELECT @VAR=[NAME] FROM tb_zgb WHERE zgid=1select @var as 名字--使用系統變數將星期7設為第一天set datefirst 7select @@datefirst as '第一天',datepart (dw,getdate()) as '今天'select datepart(dd,getdate())as'號'select datepart(yyyy,getdate())as'年'select datepart(mm,getdate())as'月'select datepart(hh,getdate())as'時'select datepart(ss,getdate())as'秒'select datepart(mi,getdate())as'分'select datepart(qq,getdate())as'一刻鐘'/*DATEPART ( datepart ,date )返回代表指定日期的指定日期部分的整數。日期部分縮寫yearyy, yyyyquarterqq, qmonthmm, mdayofyeardy, ydaydd, dweekwk, wwweekdaydwHourhhminutemi, nsecondss, smillisecondms*/--流程式控制制語句DECLARE @pingyu char(10)IF (SELECT MIN(分數) FROM 選課表)>=60SELECT @pingyu='全部及格'ELSESELECT @pingyu='存在不及格'PRINT @pingyuDECLARE @var1 varchar(1)SET @var1='B'DECLARE @var2 varchar(10)SET @var2=CASE @var1WHEN 'R' THEN '紅色'WHEN 'B' THEN '藍色'WHEN 'G' THEN '綠色'ELSE '錯誤'ENDPRINT @var2DECLARE @x int,@sum intSET @x=0SET @sum=0xh:SET @x=@x+1SET @sum=@sum+@xif @x<100 GOTO xhPRINT '1~100所有數的和是:'+ltrim(str(@sum))DECLARE @x int,@sum intSET @x=0SET @sum=0WHILE @x<100BEGINSET @x=@x+1SET @sum=@sum+@xENDPRINT '1~100所有數的和是:'+ ltrim(str(@sum))DECLARE @x int,@sum intSET @x=0SET @sum=0WHILE @x<100BEGINSET @x=@x+1SET @sum=@sum+@xif @sum>1000BREAKENDPRINT '結果是:'+ltrim(str(@sum))DECLARE @x int,@sum intSET @x=0SET @sum=0WHILE @x<100BEGINSET @x=@x+1if @x%2=1CONTINUESET @sum=@sum+@xENDPRINT '1~100所有偶數之和是:'+ltrim(str(@sum))WAITFOR DELAY '0:0:10' --等待10秒WAITFOR TIME '12:00:00' --等到12點USE 執行個體資料庫SELECT AVG(分數) as 平均成績--MAX/COUNT/MIN/SUMFROM 選課表GOSELECT ABS(-8.5)--參數的絕對值SELECT FLOOR(RAND()*10),FLOOR(RAND(5)*10)--計算“入學日期”和當前日期之間經過了多少天USE 執行個體資料庫;SELECT DATEDIFF(day, 入學日期, GETDATE()) AS 入學天數FROM 學生表GO系統函數的幾種類型:1.彙總函式2.數學函數3.字串函數4.日期和時間函數