中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL Server存儲過程

發布時間:2020-08-20 09:48:24 來源:網絡 閱讀:517 作者:青松晚霞 欄目:數據庫

理論知識:開始

一、TRUNCATE
    快速地從一堆表中刪除所有行。它和在每個表上進行無條件的 DELETE 有同樣的效果,不過因為它不做表掃描,因而快得多。 在大表上最有用。
 
二、Select INTO 建表
    把一個表中的數據復制到另外一個表中。

三、Insert INTO Select

四、補充:臨時表
    臨時表存儲在系統數據庫tempdb
    臨時表會被系統隱式地丟棄

五、存儲過程(**)

    一、簡介:
   
    存儲過程(Stored Procedure), 是一組為了完成特定功能的SQL 語句,集經編譯后存儲在數據庫中,用戶通過指定存儲過程的名字并給出參數,如果該存儲過程帶有參數來執行它,
    SQL Server 的系列版本中,存儲過程分為兩類:系統提供的存儲過程和用戶自定義存儲過程。
    系統SP,主要存儲 master 數據庫中,并以sp_為前綴并且系統存儲過程主要是從系統表中獲取信息,從而為系統管理員管理SQL Server。 用戶自定義存儲過程是由用戶創建,并能完成某一特定功能,如:查詢用戶所需數據信息的存儲過程。
   
    存儲過程具有以下優點:
 
    1.存儲過程允許標準組件式編程(模塊化設計)
   存儲過程在被創建以后,可以在程序中被多次調用,而不必重新編寫該存儲過程的SQL語句,而且數據庫專業人員可隨時對存儲過程進行修改,但對應用程序源代碼毫無影響。因為應用程序源代碼只包含存儲過程的調用語句,從而極大地提高了程序的可移植性。
           
    2.存儲過程能夠實現快速的執行速度
   如果某一操作包含大量的Transaction-SQL 代碼,,或分別被多次執行,那么存儲過程要比批處理的執行速度快很多,因為存儲過程是預編譯的,在首次運行一個存儲過程時,查詢優化器對其進行分析優化,并給出最終被存在系統表中的執行計劃,而批處理的Transaction-SQL 語句在每次運行時都要進行編譯和優化,因此速
度相對要慢一些。
               
    3.存儲過程能夠減少網絡流量
   對于同一個針對數據數據庫對象的操作,如查詢修改,如果這一操作所涉及到的 Transaction-SQL語句被組織成一存儲過程,那么當在客戶計算機上調用該存儲過程時,網絡中傳送的只是該調用語句,否則將是多條SQL 語句從而大大增加了網絡流量降低網絡負載。
           
    4.存儲過程可被作為一種安全機制來充分利用系統管理員通過,對執行某一存儲過程的權限進行限制,從而能夠實現對相應的數據訪問權限的限制。


    二、變量

    @I

    三、流程控制語句(if else | select case | while )
    Select ... CASE 實例
    DECLARE @iRet INT, @PKDisp VARCHAR(20)
    SET @iRet = '1'
    Select @iRet =
    CASE
        WHEN @PKDisp = '' THEN 1
        WHEN @PKDisp = '' THEN 2
        WHEN @PKDisp = '' THEN 3
        WHEN @PKDisp = '' THEN 4
        WHEN @PKDisp = '' THEN 5
        ELSE 100
    END

    四、存儲過程格式
       
    創建存儲過程
    Create Proc dbo.存儲過程名
    存儲過程參數
    AS
    執行語句
    RETURN

  
  執行存儲過程
    GO
理論知識:結束

語法示例:開始

-- 變量的聲明,sql里面聲明變量時必須在變量前加@符號
    DECLARE @I INT

-- 變量的賦值,變量賦值時變量前必須加set
    SET @I = 30

-- 聲明多個變量
    DECLARE @s varchar(10),@a INT

-- Sql if語句
    IF 條件 BEGIN
        執行語句
    END
    ELSE BEGIN
        執行語句
    END
           
    DECLARE @d INT
    set @d = 1

    IF @d = 1 BEGIN

    -- 打印
        PRINT '正確'
    END
    ELSE BEGIN

        PRINT '錯誤'
    END


-- Sql 里的多條件選擇語句.
    DECLARE @iRet INT, @PKDisp VARCHAR(20)
    SET @iRet = 1
    Select @iRet =
    CASE
        WHEN @PKDisp = '' THEN 1
        WHEN @PKDisp = '' THEN 2
        WHEN @PKDisp = '' THEN 3
        WHEN @PKDisp = '' THEN 4
        WHEN @PKDisp = '' THEN 5
        ELSE 100
    END

-- 循環語句
    WHILE 條件 BEGIN   
        執行語句
    END

    DECLARE @i INT
    SET @i = 1
    WHILE @i<1000000 BEGIN
        set @i=@i+1
    END
    -- 打印
    PRINT @i

語法示例:結束

相關說明:開始

 -- TRUNCATE 刪除表中的所有行,而不記錄單個行刪除操作,不能帶條件

    TRUNCATE TABLE 在功能上與不帶 Where 子句的 Delete 語句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE Delete 速度快,且使用的系統和事務日志資源少。
    Delete 語句每次刪除一行,并在事務日志中為所刪除的每行記錄一項。TRUNCATE TABLE 通過釋放存儲表數據所用的數據頁來刪除數據,并且只在事務日志中記錄頁的釋放。
    TRUNCATE TABLE 刪除表中的所有行,但表結構及其列、約束、索引等保持不變。新行標識所用的計數值重置為該列的種子。如果想保留標識計數值,請改用 Delete。如果要刪除表定義及其數據,請使用 Drop TABLE 語句。
    對于由 FOREIGN KEY 約束引用的表,不能使用 TRUNCATE TABLE,而應使用不帶 Where 子句的Delete 語句。由于 TRUNCATE TABLE 不記錄在日志中,所以它不能激活觸發器。
    TRUNCATE TABLE 不能用于參與了索引視圖的表。
    示例
        下例刪除 authors 表中的所有數據。
       
        TRUNCATE TABLE authors
               

-- Select INTO 從一個查詢的計算結果中創建一個新表。 數據并不返回給客戶端,這一點和普通的
-- Select 不同。 新表的字段具有和 Select 的輸出字段相關聯(相同)的名字和數據類型。
       
        select * into NewTable
            from Uname


-- Insert INTO Select
        -- ABC必須存在
        -- 把表Uname里面的字段Username復制到表ABC
        Insert INTO ABC Select Username FROM Uname

-- 創建臨時表
        Create TABLE #temp(
            UID int identity(1, 1) PRIMARY KEY,
            UserName varchar(16),
            Pwd varchar(50),
            Age smallint,
            Sex varchar(6)
        )
        -- 打開臨時表
        Select * from #temp

-- 存儲過程
        -- 要創建存儲過程的數據庫
        Use Test
        -- 判斷要創建的存儲過程名是否存在
            if Exists(Select name From sysobjects Where name='csp_AddInfo' And

type='P')
            -- 刪除存儲過程
            Drop Procedure dbo.csp_AddInfo
        Go
               
               
        -- 創建存儲過程
        Create Proc dbo.csp_AddInfo
        -- 存儲過程參數
        @UserName varchar(16),
        @Pwd varchar(50),
        @Age smallint,
        @Sex varchar(6)
        AS
        -- 存儲過程語句

        insert into Uname (UserName,Pwd,Age,Sex)
            values (@UserName,@Pwd,@Age,@Sex)
        RETURN
        -- 執行
        GO
               
        -- 執行存儲過程
        EXEC csp_AddInfo 'Junn.A','123456',20,''

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

延津县| 广宗县| 尚志市| 濮阳县| 德化县| 顺义区| 特克斯县| 蒲江县| 临沭县| 阳曲县| 巫山县| 阜阳市| 会泽县| 营口市| 胶南市| 淳化县| 宁武县| 惠来县| 个旧市| 南郑县| 兴仁县| 黎平县| 利川市| 惠东县| 台山市| 古丈县| 滁州市| 二连浩特市| 福鼎市| 灌云县| 海宁市| 商洛市| 奉新县| 宣化县| 田东县| 肥东县| 宾川县| 如东县| 潢川县| 论坛| 丹江口市|