欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

工作經(jīng)常使用的SQL整理,實(shí)戰(zhàn)篇(二)

系統(tǒng) 2002 0
原文: 工作經(jīng)常使用的SQL整理,實(shí)戰(zhàn)篇(二)[原創(chuàng)]

工作經(jīng)常使用的SQL整理,實(shí)戰(zhàn)篇,地址一覽:

工作經(jīng)常使用的SQL整理,實(shí)戰(zhàn)篇(一)

工作經(jīng)常使用的SQL整理,實(shí)戰(zhàn)篇(二)

工作經(jīng)常使用的SQL整理,實(shí)戰(zhàn)篇(三)

?

  接著上一篇“ 工作經(jīng)常使用的SQL整理,實(shí)戰(zhàn)篇(一) ”繼續(xù)討論,這一篇中主要討論增刪改查,連接,分組和排序,通配符,視圖,存儲(chǔ)過程和事務(wù),游標(biāo),觸發(fā)器這些東西。

6.增刪改查

插入

-- 插入用戶表數(shù)據(jù)

insert ? into ? Tse_User ( UserID , ? UserName , ? RealName , ? Email , ? Mobile )

values ( 111 , ? 'zhangsan' , ? 'zhangsan' , ? 'zs@126.com' , ? '' )

?

-- 插入產(chǎn)品表數(shù)據(jù)

INSERT ? INTO ? Tse_Product ( ProductID , ? ProductName , ? Price , ? Storage )

VALUES ( 'PD00030' , ? 'Benz' , ?500500.0 , ?30000 )

-- 插入訂單表數(shù)據(jù)

declare ? @OrderID ? VARCHAR ( 64 )

?

-- 將年,月,日,時(shí),分,秒,毫秒以字符串形式連接起來作為訂單號(hào)

  SET ? @OrderID ? = ? DATENAME ( YEAR , ? GETDATE ()) ? + ? DATENAME ( MONTH , ? GETDATE ()) ? + DATENAME ( DAY , ? GETDATE ())+

  DATENAME ( HOUR , ? GETDATE ()) ? + ? DATENAME ( MINUTE , ? GETDATE ())+ DATENAME ( SECOND , ? GETDATE ()) ? + DATENAME ( MILLISECOND , ? GETDATE ())

  INSERT ? INTO ? Tse_Order ( OrderID , ? ? UserID , ? ? ProductID , ? ? Number , ? ? PostTime )

  VALUES ( @OrderID , ? ? 115 , ? ? 'PD00040' , ? ? 10 , ?? GETDATE ())

?

修改

Update ? Tse_User ? set ? RealName ? = ? ' 李四 ' ? where ? UserID ? = ?112

?

刪除

Delete ? from ? Tse_User ? Where ? UserID ? = ?111

?

簡(jiǎn)單查詢

select ? * ? from ? Tse_User ? with ( nolock )

select ? * ? from ? Tse_Order ? with ( nolock ) ? where ? ID ? >= ?2

?

7.連接

內(nèi)連接

-- 左右表匹配的行

SELECT ? * ? FROM ? Tse_Order ? AS ? O ? WITH ( NOLOCK )

INNER ? JOIN ? Tse_User ? AS ? U ? WITH ( NOLOCK ) ? ON ? O . UserID ? = ? U . UserID

WHERE ? U . UserID ? = ?111

?

左連接(左外連接)

-- 左邊表中所有行,右邊匹配左邊 ,? 右邊為空的補(bǔ) NULL

SELECT ? * ? FROM ? Tse_User ? AS ? U ? WITH ( NOLOCK )

LEFT ? JOIN ? Tse_Order ? AS ? O ? WITH ( NOLOCK ) ? ON ? U . UserID ? = ? O . UserID

?

右連接(右外連接)

-- 右邊表中所有行,左邊匹配右邊,左邊為空的補(bǔ) NULL

SELECT ? * ? FROM ? Tse_Order ? AS ? O ? WITH ( NOLOCK )

RIGHT ? JOIN ? Tse_Product ? AS ? P ? WITH ( NOLOCK ) ? ON ? O . ProductID ? = ? P . ProductID

?

全連接

-- 左右表所有行,為空的補(bǔ) NULL

SELECT ? * ? FROM ? Tse_Order ? AS ? O ? WITH ( NOLOCK )

FULL ? JOIN ? Tse_Product ? AS ? P ? WITH ( NOLOCK ) ? ON ? O . ProductID ? = ? P . ProductID

8.分組和排序

UserID 分組

SELECT ? UserID , ? COUNT ( 0 ) ? AS ? Number ? FROM ? Tse_Order ? WITH ( NOLOCK ) ? GROUP ? BY ? UserID ?

?

UserID 分組,訂單數(shù)量大于等于 3

SELECT ? UserID , ? COUNT ( 0 ) ? AS ? Number ? FROM ? Tse_Order ? WITH ( NOLOCK ) ? GROUP ? BY ? UserID ? HAVING ? COUNT ( 0 ) ? >= 3

?

UserID 分組,訂單數(shù)量大于等于 1 ,按訂單數(shù)量升序

SELECT ? UserID , ? COUNT ( 0 ) ? AS ? Number ? FROM ? Tse_Order ? WITH ( NOLOCK ) ? GROUP ? BY ? UserID ? HAVING ? COUNT ( 0 ) ? >= 1? ORDER ? BY ? Number ? ASC

?

9.通配符

LIKE :匹配多個(gè)未知字符

_ :匹配一個(gè)未知字符

?

-- 匹配 126 郵箱的

SELECT ? * ? FROM ? Tse_User ? WITH ( NOLOCK ) ? WHERE ? Email ? LIKE ? '%@126.com'

?

  -- 匹配所有包含 @ 的郵箱

  SELECT ? * ? FROM ? Tse_User ? WITH ( NOLOCK ) ? WHERE ? Email ? LIKE ? '%@%'

?

  -- 匹配 16 開頭,后面跟一個(gè)任意字符的郵箱

  SELECT ? * ? FROM ? Tse_User ? WITH ( NOLOCK ) ? WHERE ? Email ? LIKE ? '%@16_.com'

?

-- 匹配除 126 以外的所有郵箱

SELECT ? * ? FROM ? Tse_User ? WITH ( NOLOCK ) ? WHERE ? Email ? NOT ? LIKE ? '%@126.com'

?

10.視圖

  刪除視圖

  IF ? EXISTS ? ( SELECT ? * ? FROM ? SYSOBJECTS ? WHERE ? Name ? = ? 'V_Tse_TotalInfo' )

  DROP ? VIEW ? V_Tse_TotalInfo

?

  創(chuàng)建視圖

-- 包含用戶表,產(chǎn)品表和訂單表關(guān)聯(lián)后的所有信息

  CREATE ? VIEW ? V_Tse_TotalInfo

  AS

  SELECT ? O . OrderID , ? O . UserID , ? O . ProductID , ? O . PostTime , ? U . UserName , ? U . RealName ,

  U . Email , ? U . Mobile , ? P . ProductName , ? P . Price ? FROM ? Tse_Order ? AS ? O ? WITH ( NOLOCK ) ?

  INNER ? JOIN ? Tse_User ? AS ? U ? WITH ( NOLOCK ) ? ON ? O . UserID ? = ? U . UserID

  INNER ? JOIN ? Tse_Product ? AS ? P ? WITH ( NOLOCK ) ? ON ? O . ProductID ? = ? P . ProductID

?

11.存儲(chǔ)過程和事務(wù)

創(chuàng)建存儲(chǔ)過程,先刪除訂單表(外鍵表)中的記錄,再刪除產(chǎn)品表(主鍵表)中的記錄

      
        CREATE
      
      
        PROCEDURE
      
      
        [
      
      
        dbo
      
      
        ]
      
      .
      
        [
      
      
        SC_Tse_DeleteProduct
      
      
        ]
      
      
        

  (

      
      
      
        @ProductID
      
      
        VARCHAR
      
      (
      
        64
      
      
        ),

      
      
      
        @Result
      
      
        int
      
      
         output

  )

  
      
      
        AS
      
      
        BEGIN
      
      
        SET
      
       NOCOUNT 
      
        ON
      
      
        ;

  

      
      
      
        BEGIN
      
      
        TRAN
      
      
        --
      
      
        開始事務(wù)
      
      
        BEGIN
      
      
        DELETE
      
      
        FROM
      
       Tse_Order 
      
        WHERE
      
       ProductID 
      
        =
      
      
        @ProductID
      
      
        DELETE
      
      
        FROM
      
       Tse_Product 
      
        WHERE
      
       ProductID 
      
        =
      
      
        @ProductID
      
      
        IF
      
       (
      
        @@ERROR
      
      
        <>
      
      
        0
      
      
        )

          
      
      
        BEGIN
      
      
        SET
      
      
        @Result
      
      
        =
      
      
        -
      
      
        999
      
      
        ROLLBACK
      
      
        TRAN
      
      
        --
      
      
        回滾
      
      
        END
      
      
        ELSE
      
      
        BEGIN
      
      
        SET
      
      
        @Result
      
      
        =
      
      
        888
      
      
        COMMIT
      
      
        TRAN
      
      
        --
      
      
        提交
      
      
        END
      
      
        END
      
      
        END
      
    

?

12 .游標(biāo)

獲取所有產(chǎn)品的名字,以‘ | ’分隔,包含在輸出參數(shù) @Names

      
        CREATE
      
      
        PROCEDURE
      
      
         SC_Tse_GetProductNames

    (

        
      
      
        @Names
      
      
        varchar
      
      (
      
        max
      
      
        ) OUTPUT

    ) 

    
      
      
        AS
      
      
        BEGIN
      
      
        SET
      
       NOCOUNT 
      
        ON
      
      
        ;

        
      
      
        declare
      
      
        @ProductName
      
      
        varchar
      
      (
      
        64
      
      
        )

        
      
      
        declare
      
       curTest 
      
        cursor
      
      
        for
      
       (
      
        select
      
       ProductName 
      
        from
      
      
         Tse_Product)

        
      
      
        open
      
       curTest                
      
        --
      
      
        打開游標(biāo)
      
      
        fetch
      
      
        next
      
      
        from
      
       curTest 
      
        into
      
      
        @ProductName
      
      
        while
      
      
        @@fetch_status
      
      
        =
      
      
        0
      
      
        --
      
      
        獲取成功
      
      
        begin
      
      
        if
      
       (
      
        @ProductName
      
      
        is
      
      
        not
      
      
        null
      
      
        and
      
      
        @ProductName
      
      
        <>
      
      
        ''
      
      
        )

            
      
      
        begin
      
      
        if
      
       (
      
        @Names
      
      
        is
      
      
        null
      
      
        or
      
      
        @Names
      
      
        =
      
      
        ''
      
      
        )

                
      
      
        begin
      
      
        set
      
      
        @Names
      
      
        =
      
      
        @ProductName
      
      
        end
      
      
        else
      
      
        begin
      
      
        set
      
      
        @Names
      
      
        =
      
      
        @Names
      
      
        +
      
      
        '
      
      
        |
      
      
        '
      
      
        +
      
      
        @ProductName
      
      
        end
      
      
        end
      
      
        fetch
      
      
        next
      
      
        from
      
       curTest 
      
        into
      
      
        @ProductName
      
      
        end
      
      
        close
      
       curTest            
      
        --
      
      
        關(guān)閉游標(biāo)
      
      
        deallocate
      
       curTest        
      
        --
      
      
        釋放游標(biāo)
      
      
        END
      
    

?

13.觸發(fā)器

因?yàn)橛脩艟幪?hào)在訂單表中為外鍵,所以,直接刪除某個(gè)用戶時(shí),如果該用戶下了訂單,就會(huì)提示有外鍵不能刪除。針對(duì)這種情況,可以考慮使用觸發(fā)器。

創(chuàng)建觸發(fā)器,刪除用戶表中用戶時(shí),會(huì)自動(dòng)先刪除訂單表中的訂單

      
        CREATE
      
      
        TRIGGER
      
      
         TR_Tse_DelUser

    
      
      
        ON
      
      
         Tse_User

    INSTEAD 
      
      
        OF
      
      
        DELETE
      
      
        --
      
      
        代替默認(rèn)的刪除
      
      
        AS
      
      
        BEGIN
      
      
        SET
      
       NOCOUNT 
      
        ON
      
      
        DELETE
      
      
        FROM
      
       Tse_Order 
      
        WHERE
      
       UserID 
      
        IN
      
       (
      
        SELECT
      
       UserID 
      
        FROM
      
      
         Deleted)

        
      
      
        DELETE
      
      
        FROM
      
       Tse_User 
      
        WHERE
      
       UserID 
      
        IN
      
       (
      
        SELECT
      
       UserID 
      
        FROM
      
      
         Deleted)

  
      
      
        END
      
    

  ? 使用觸發(fā)器, 添加訂單時(shí),產(chǎn)品表庫(kù)存相應(yīng)減少

      
        CREATE
      
      
        TRIGGER
      
      
         TR_Tse_ADDOrder

    
      
      
        ON
      
      
         Tse_Order

    AFTER 
      
      
        INSERT
      
      
        AS
      
      
        BEGIN
      
      
        UPDATE
      
       Tse_Product 
      
        SET
      
       Storage 
      
        =
      
       Storage 
      
        -
      
       (
      
        SELECT
      
      
        Number
      
      
        FROM
      
      
         INSERTED)

        
      
      
        WHERE
      
       ProductID 
      
        IN
      
       (
      
        SELECT
      
       ProductID 
      
        FROM
      
      
         INSERTED)

  
      
      
        END
      
    

  關(guān)于SQL定時(shí)作業(yè)部門的介紹,請(qǐng)看“ 工作經(jīng)常使用的SQL整理,實(shí)戰(zhàn)篇(三) ”~

  如果您有什么問題,歡迎在下面評(píng)論,我們一起討論,謝謝~

  如果您覺得還不錯(cuò),不妨點(diǎn)下右下方的推薦,有您的鼓勵(lì)我會(huì)繼續(xù)努力的~

?

?

?

?

?

?

工作經(jīng)常使用的SQL整理,實(shí)戰(zhàn)篇(二)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 69av.com| 青草视频在线观看免费资源 | 国产美女极品免费视频 | 久草在线手机 | 精品视频免费观看 | 999热精品| 国产毛片不卡 | 日本高清在线观看视频 | 全免费A敌肛交毛片免费 | 黄视频网站免费观看 | 久久综合一区二区三区 | 日韩一区不卡 | 特级丰满少妇一级aaaa爱毛片 | 久章草影院 | 伊人久久国产精品 | www视频在线观看 | 国产一区二区精品在线观看 | 很黄很色的小视频在线网站 | 精品免费视频 | 日韩色小说 | 亚洲国产精品一区二区第一页 | 婷婷在线免费视频 | 色欲天天婬色婬香视频综合网 | 天天干影院 | 亚洲精品国产a久久久久久 亚洲国产精品第一页 | 五月婷婷综合激情网 | 宅男lu666噜噜噜在线观看 | 日韩欧美一级大片 | 奇米影视8888狠狠狠狠 | www成人国产在线观看网站 | 人人香蕉 | 91不卡在线 | 在线精品自拍亚洲第一区 | 欧美综合中文字幕久久 | 中文字幕一区二区视频 | 久久国产乱子免费精品 | 亚洲国内精品 | 日本不卡一区 | www.91在线 | 色综合久久综合欧美综合 | 欧美色欧美亚洲高清在线视频 |