日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

工作經常使用的SQL整理,實戰篇(一)

系統 2036 0
原文: 工作經常使用的SQL整理,實戰篇(一)[原創]

工作經常使用的SQL整理,實戰篇,地址一覽:

工作經常使用的SQL整理,實戰篇(一)

工作經常使用的SQL整理,實戰篇(二)

工作經常使用的SQL整理,實戰篇(三)

?

目錄概覽:

1.數據庫

2.表

3.臨時表

4.索引和約束

5.范式

6.增刪改查

7.連接

8.分組和排序

9.通配符

10.視圖

11.存儲過程和事務

12.游標

13.觸發器

14.作業

?

  自己親手編寫的一些常用的SQL,希望對大家有用喔,廢話不多說了,直接入正題~

1.數據庫

  創建數據庫

      
        use
      
      
         master

  
      
      
        if
      
      
        exists
      
      (
      
        select
      
      
        *
      
      
        from
      
       sysdatabases 
      
        where
      
       name 
      
        =
      
      
        '
      
      
        OrderDB
      
      
        '
      
      
        )

      
      
      
        drop
      
      
        database
      
      
         OrderDB

  
      
      
        create
      
      
        database
      
      
         OrderDB

  
      
      
        on
      
      
        

  (

      name
      
      
        =
      
      
        '
      
      
        OrderDB_data
      
      
        '
      
      
        ,

      filename 
      
      
        =
      
      
        '
      
      
        D:\DB\OrderDB_data.mdf
      
      
        '
      
      
        ,

      size
      
      
        =
      
      
        10
      
      
        ,

      filegrowth
      
      
        =
      
      
        15
      
      
        %
      
      
        

  )

  
      
      
        log
      
      
        on
      
      
        

  (

      name
      
      
        =
      
      
        '
      
      
        OrderDB_log
      
      
        '
      
      
        ,

      filename
      
      
        =
      
      
        '
      
      
        D:\DB\OrderDB_log.ldf
      
      
        '
      
      
        ,

      size
      
      
        =
      
      
        3
      
      
        ,

      filegrowth
      
      
        =
      
      
        10
      
      
        %
      
      
        

  )
      
    

  刪除數據庫

      
        drop
      
      
        database
      
       OrderDB
    

2.表

創建表

        --用戶表  
      
  if exists ( select * from sysobjects where name = ' Tse_User ' )    drop table Tse_User    Create table Tse_User   (    ID int identity ( 1 , 1 ),    UserID int not null ,    UserName varchar ( 64 ) not null ,    RealName varchar ( 64 ) null ,    PRIMARY KEY (UserID)   )

?

      
        --
      
      
        產品表
      
      
        if
      
      
        exists
      
       (
      
        select
      
      
        *
      
      
        from
      
       sysobjects 
      
        where
      
       name 
      
        =
      
      
        '
      
      
        Tse_Product
      
      
        '
      
      
        )

      
      
      
        drop
      
      
        table
      
      
         Tse_Product

  
      
      
        Create
      
      
        table
      
      
         Tse_Product

  (

      ID 
      
      
        INT
      
      
        IDENTITY
      
      (
      
        1
      
      ,
      
        1
      
      
        ),

      ProductID 
      
      
        varchar
      
      (
      
        64
      
      ) 
      
        not
      
      
        null
      
      
        ,

      ProductName 
      
      
        varchar
      
      (
      
        256
      
      ) 
      
        not
      
      
        null
      
      
        ,

      Price 
      
      
        float
      
      
        not
      
      
        null
      
      
        ,

      Storage 
      
      
        int
      
      
        not
      
      
        null
      
      ,      
      
        --
      
      
        庫存
      
      
        PRIMARY
      
      
        KEY
      
      
        (ProductID)

  )
      
    

?

      
        --
      
      
        訂單表
      
      
        if
      
      
        exists
      
       (
      
        select
      
      
        *
      
      
        from
      
       sysobjects 
      
        where
      
       name 
      
        =
      
      
        '
      
      
        Tse_Order
      
      
        '
      
      
        )

      
      
      
        drop
      
      
        table
      
      
         Tse_Order

  
      
      
        Create
      
      
        table
      
      
         Tse_Order

  (

      ID 
      
      
        int
      
      
        identity
      
      (
      
        1
      
      ,
      
        1
      
      
        ),

      OrderID 
      
      
        varchar
      
      (
      
        64
      
      ) 
      
        not
      
      
        null
      
      
        ,

      UserID 
      
      
        int
      
      
        not
      
      
        null
      
      
        ,

      ProductID 
      
      
        varchar
      
      (
      
        64
      
      ) 
      
        not
      
      
        null
      
      
        ,

      
      
      
        Number
      
      
        int
      
      
        not
      
      
        null
      
      ,             
      
        --
      
      
        購買數量
      
      

      PostTime 
      
        datetime
      
      
        not
      
      
        null
      
      
        ,

      
      
      
        PRIMARY
      
      
        KEY
      
      
        (OrderID),

      
      
      
        FOREIGN
      
      
        KEY
      
       (UserID) 
      
        REFERENCES
      
      
         Tse_User(UserID),

      
      
      
        FOREIGN
      
      
        KEY
      
       (ProductID) 
      
        REFERENCES
      
      
         Tse_Product(ProductID)

  )
      
    

  刪除表

      
        drop
      
      
        table
      
       Tse_User
    

  清空表

truncate ? table ? Tse_User ????清除表中所有數據,下次插入編號從 1 開始

delete ? from ? Tse_User ??????清除表中所有數據,但下次插入編號從原有編號 +1 開始

3.臨時表

生成臨時表,插入數據,將員工姓名全部打印出來

      
        use
      
      
         master

  
      
      
        go
      
      
        create
      
      
        table
      
      
         #Employee

  (

      ID 
      
      
        int
      
      
        identity
      
      (
      
        1
      
      ,
      
        1
      
      
        ),

      Name 
      
      
        varchar
      
      (
      
        64
      
      ) 
      
        not
      
      
        null
      
      
        ,

      
      
      
        primary
      
      
        key
      
      
         (ID)

  )

  
      
      
        insert
      
      
        into
      
       #Employee(Name) 
      
        values
      
      (
      
        '
      
      
        zhangsan
      
      
        '
      
      
        )

  
      
      
        insert
      
      
        into
      
       #Employee(Name) 
      
        values
      
      (
      
        '
      
      
        lisi
      
      
        '
      
      
        )

  
      
      
        insert
      
      
        into
      
       #Employee(Name) 
      
        values
      
      (
      
        '
      
      
        wangwu
      
      
        '
      
      
        )

  
      
      
        insert
      
      
        into
      
       #Employee(Name) 
      
        values
      
      (
      
        '
      
      
        tony
      
      
        '
      
      
        )

  
      
      
        insert
      
      
        into
      
       #Employee(Name) 
      
        values
      
      (
      
        '
      
      
        mike
      
      
        '
      
      
        )

  

  
      
      
        declare
      
      
        @i
      
      
        int
      
      
        declare
      
      
        @Name
      
      
        varchar
      
      (
      
        64
      
      
        )

  
      
      
        declare
      
      
        @Count
      
      
        int
      
      
        declare
      
      
        @Str
      
      
        nvarchar
      
      (
      
        4000
      
      
        )

  
      
      
        set
      
      
        @i
      
      
        =
      
      
        0
      
      
        select
      
      
        @Count
      
      
        =
      
      
        COUNT
      
      (
      
        0
      
      ) 
      
        from
      
      
         #Employee

  
      
      
        while
      
      (
      
        @i
      
      
        <
      
      
        @Count
      
      
        )

  
      
      
        begin
      
      
        set
      
      
        @Str
      
      
        =
      
      
        '
      
      
        select top 1 @Name = Name from #Employee where id not in (select top 
      
      
        '
      
      
        +
      
      
        STR
      
      (
      
        @i
      
      ) 
      
        +
      
      
        '
      
      
        id from #Employee)
      
      
        '
      
      
        exec
      
       sp_executesql 
      
        @Str
      
       ,N
      
        '
      
      
        @Name varchar(64) output
      
      
        '
      
      , 
      
        @Name
      
      
         output

      
      
      
        select
      
      
        @Name
      
      , 
      
        @i
      
      
        set
      
      
        @i
      
      
        =
      
      
        @i
      
      
        +
      
      
        1
      
      
        End
      
      
      
    

  查看表結構及表附加屬性
  SP_HELP Tse_User

4.索引和約束

聚集索引確定表中數據的物理順序。聚集索引類似于電話簿,后者按姓氏排列數據。由于聚集索引規定數據在表中的物理存儲順序,因此一個表只能包含一個聚集索引。但該索引可以包含多個列(組合索引),就像電話簿按姓氏和名字進行組織一樣。

非聚集 索引,該索引中索引的邏輯順序與磁盤上行的物理存儲順序不同。 一個表可以創建多個非聚集索引。

創建聚集索引

CREATE ? UNIQUE ? CLUSTERED ? INDEX ? [PK_Tse_ID] ? ON ? [dbo] . [Tse_User] ?

( ??-- 唯一聚集索引

[ID] ? ASC

) WITH? ( PAD_INDEX ?? = ? OFF , ? STATISTICS_NORECOMPUTE ?? = ? OFF , ? SORT_IN_TEMPDB ? = ? OFF , ? IGNORE_DUP_KEY ? = ? OFF , ? DROP_EXISTING ? = ? OFF ,

? ONLINE ? = ? OFF , ALLOW_ROW_LOCKS ?? = ? ON , ? ALLOW_PAGE_LOCKS ?? = ? ON ) ? ON ? [PRIMARY]

GO

?

創建非聚集索引

CREATE ? UNIQUE ? NONCLUSTERED ? INDEX ? [IX_Tse_UserID] ? ON ? [dbo] . [Tse_User] ?

( ??-- 唯一非聚集索引

[UserID] ? ASC

) WITH? ( PAD_INDEX ?? = ? OFF , ? STATISTICS_NORECOMPUTE ?? = ? OFF , ? SORT_IN_TEMPDB ? = ? OFF , ? IGNORE_DUP_KEY ? = ? OFF , ? DROP_EXISTING ? = ? OFF , ?

ONLINE ? = ? OFF , ? ALLOW_ROW_LOCKS ?? = ? ON , ? ALLOW_PAGE_LOCKS ?? = ? ON ) ? ON ? [PRIMARY]

GO

?

約束

alter ? table ? Tse_User

add ? constraint ? CS_UserName ? check? ( len ( Username ) ? > ?3 ),

constraint ? CS_Email ? check? ( charindex ( '@' , ? Email ) ? > ?0 )

5.范式

  第一范式 1NF

  第一范式需滿足兩個條件:

  1)每個數據行必須包含具有原子性(即不可再分)的值;

  2)每個數據行必須包含一個獨一無二的值,即主鍵。

  舉例:假如客戶表中存在地址列,如果經常需要按城市歸類,那么,應該地址列拆分為省份,城市,縣,街道地址等列。

?

  第二范式 2NF

  第二范式需要確保數據庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關(主要針對聯合主鍵而言)。也就是說在一個數據庫表中,一個表中只能保存一種    數據,不可以把多種數據保存在同一張數據庫表中。

  舉例:比如常用的選課表中,以學號和課程號為聯合主鍵,不能將課程名,學分等課程相關信息寫入選課表,因為他們只與主鍵的一部分(課程號)相關。

?

  第三范式 3NF

  第三范式需要確保數據表中的每一列數據都和主鍵直接相關,而不能間接相關。

  舉例:訂單表中以訂單號為主鍵,用戶真實姓名和郵箱等信息與用戶有關,與訂單沒有直接關系,因此,用戶真實姓名和郵箱等不能放到訂單表中。

  由于時間關系,余下的幾個問題在下一篇中討論,謝謝關注~,下一篇地址為: 工作經常使用的SQL整理,實戰篇(二)

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

  如果您覺得還不錯,不妨點下右下方的推薦,有您的鼓勵我會繼續努力的~

?

?

?

?

?

工作經常使用的SQL整理,實戰篇(一)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 玛纳斯县| 祁门县| 吕梁市| 九江市| 黄陵县| 肇州县| 万载县| 定陶县| 巫溪县| 吴江市| 沽源县| 太谷县| 南岸区| 五台县| 大方县| 德惠市| 西宁市| 仁怀市| 盐城市| 西峡县| 乐都县| 呼图壁县| 青浦区| 绥宁县| 天全县| 祁连县| 化隆| 尚志市| 黄石市| 祁阳县| 鹤峰县| 禹城市| 正阳县| 库伦旗| 宝清县| 永川市| 远安县| 本溪市| 麦盖提县| 茶陵县| 西城区|