溫馨提示×

溫馨提示×

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

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

SQLserver運維必備:T-SQL語句簡介

發(fā)布時間:2020-07-15 19:49:05 來源:網(wǎng)絡(luò) 閱讀:2502 作者:小生博客 欄目:數(shù)據(jù)庫

   小生博客:http://xsboke.blog.51cto.com

   



                                -------謝謝您的參考,如有疑問,歡迎交流



一、T-SQL語言組成

T-SQL主要有三種語言組成:

  1.      DML:數(shù)據(jù)操縱語言(data manipulation language


    • 查詢、插入、刪除和修改數(shù)據(jù)

    • SELECT、INSERTUPDATE、DELETE

  2.      DDL:數(shù)據(jù)定義語言(data definition language


    • 建立數(shù)據(jù)庫、數(shù)據(jù)庫對象和定義其列

    • CREATE(新建數(shù)據(jù)庫或者表)、ALTER(增加數(shù)據(jù)表中的列)、DROP(刪除數(shù)據(jù)庫或表)

  3.      DCL:數(shù)據(jù)控制語言(data control language


    • 控制數(shù)據(jù)庫組件的存取許可、存取權(quán)限等

    • GRANT(授予權(quán)限)、REVOKE(回收權(quán)限)、DENY(拒絕)

二、SELECT語法結(jié)構(gòu)

1. select語句的語法。

SELECT select_list

[INTO new_table_name]

FROM table_name

[ WHERE search_conditions ]

[GROUP BY group_by_expression] [HAVING search_conditions]

[ORDER BY order_expression [ASC|DESC] ]

  參數(shù)解釋:


    • SELECT子句:指定查詢內(nèi)容

    • INTO子句:把查詢結(jié)果存放到一個新表中

    • FROM子句:指定查詢源

    • WHERE子句:查詢條件

    • GROUP BY子句:指定查詢結(jié)果的分組條件

    • HAVING子句:指定分組后在執(zhí)行的條件,與GROUP BY子句一起使用,和where功能一樣,但是分組后的條件不能使用where只能使用having

    • ORDER BY子句:指定查詢結(jié)果的排序方式,默認是升序asc,降序是desc。

2. 表達式,一般用于設(shè)置條件時。

  1)條件表達式

常量:表示單個指定數(shù)據(jù)值的字母、數(shù)字或符號

②列名:表中列的名稱

③一元運算符:僅有一個操作數(shù)的運算符:“+”表示正數(shù),“-”表示負數(shù)

④二元運算符:將兩個操作數(shù)組合執(zhí)行操作的運算符:算術(shù)運算符、位運算符、邏輯運算符、比較運算符

    SQLserver運維必備:T-SQL語句簡介

    SQLserver運維必備:T-SQL語句簡介

  2)邏輯表達式

   用邏輯運算符將條件連接起來,運算結(jié)果是一個邏輯值:TRUE(真)或FALSE(假)

    SQLserver運維必備:T-SQL語句簡介

    關(guān)鍵字“in”可以用來限制范圍,

    例:限制付款時可以使用的信用卡種類

    付款方式=‘信用卡’ and 信用卡 in 牡丹卡,金穗卡龍卡,陽光卡

 

3. as的用法(as就是給某個輸出結(jié)果的列名設(shè)置別名,然后輸出時列名用別名顯示)

  優(yōu)點是可以事查詢結(jié)果更人性化顯示,比如把英文的列名輸出成為中文的列名。

  例:查詢表student中所有學員的平均分

  1)  不加as

   Select  AVG(成績)

   From student

   SQLserver運維必備:T-SQL語句簡介

  2)  as

   Select  AVG(成績) as 平均成績

   From student

   SQLserver運維必備:T-SQL語句簡介

4. Like的用法(用于不完全匹配的條件)

  例:查詢出表student中姓張的學員

  SQLserver運維必備:T-SQL語句簡介

5. In的用法(限制范圍)

  例:查詢出student表中成績?yōu)?/span>89、90、91的學生。

  SQLserver運維必備:T-SQL語句簡介

6. Top的用法(限制查詢返回值的行數(shù))

  例:查詢student表中的前五行的學員

  SQLserver運維必備:T-SQL語句簡介

7. 函數(shù)count的用法(統(tǒng)計行)

  例:查詢出表中每種職位的總?cè)藬?shù)

  SQLserver運維必備:T-SQL語句簡介

 

三、多表查詢

1. 表的連接類型

  1內(nèi)連接(INNER JOIN

    只返回兩個數(shù)據(jù)集合之間完全匹配關(guān)系的行

  2外連接(左右外連接其實差不多,記住一個即可)

    ①左外連接(LEFT JOIN/leftouter join

     結(jié)果集包括左表的所有行

    ②右外連接(RIGHT JOIN/rightouter join

     結(jié)果集包括右表的所有行

    ③完整外連接(FULL JOIN/fullouter join

     返回左表和右表中的所有行

  3交叉連接(cross join,一般不用)

    返回左表與右表挨個連接的所有行

2. 內(nèi)連接:只返回兩個表中完全匹配的行

  例:在表A和表B中使用內(nèi)連接查詢學生姓名和職業(yè)(兩個表中存在的姓名是不完全一樣的)

  1)  方法1:結(jié)果顯示如下圖

    select A.name,a.school,b.job

    from A,B

    where a.name=b.name

  SQLserver運維必備:T-SQL語句簡介

  2)  方法2:結(jié)果顯示如下圖

    select A.name,a.school,b.job

    from A innerjoin B

    on A.name=b.name

  SQLserver運維必備:T-SQL語句簡介

3. 外連接

  1)  左外連接

    例:在表A和表B中用左外連接查詢學生姓名、學校和職業(yè)

    SQLserver運維必備:T-SQL語句簡介

  2)  右外連接

    例:在表A和表B中用左外連接查詢學生姓名、學校和職業(yè)

    SQLserver運維必備:T-SQL語句簡介

  3)  完整外連接:不再舉例,完整外連接將只顯示兩張表中完全匹配的內(nèi)容

4. 事務(wù)(如果執(zhí)行的語句中有一條錯誤,此語句將不執(zhí)行,并數(shù)據(jù)恢復(fù)語句執(zhí)行前)

  1)  事務(wù)簡介

    ①  概念

      事務(wù)是一個不可分割的工作邏輯單元,包括一組命令,這組命令要么都執(zhí)行,要么都不執(zhí)行。

    ②  屬性



    1. 原子性:事務(wù)是一個完整的操作。事務(wù)的各元素是不可分的。

    2. 一致性:當事務(wù)完成時,數(shù)據(jù)必須處于一致狀態(tài)。

    3. 隔離性:事務(wù)是獨立的,它不以任何方式依賴于或影響其他事務(wù)。

    4. 持久性:一旦事務(wù)被提交,事務(wù)的效果會被永久的保留在數(shù)據(jù)庫中。

  2)  執(zhí)行事務(wù)的語法

    ①開始事務(wù):BEGIN TRANSACTION

    ②提交事務(wù):COMMITTRANSACTION

    ③回滾(撤銷)事務(wù):ROLLBACKTRANSACTION

  3)  例:


    • 張三卡中余額只有1000,李四向張三借1000,但是銀行限制余額最少為1,這時就需要使用事務(wù),否則結(jié)果將導(dǎo)致張三的余額不變,而李四的余額多了1000.


    select *from bank

 

    updatebank set 余額=余額-1000

    where 賬戶='張三'

    updatebank set 余額=余額+1000

    where 賬戶='李四'

 

    print  '查看轉(zhuǎn)帳事務(wù)前的余額'

    select *from bank

    /*--開始事務(wù)(指定事務(wù)從此處開始,后續(xù)的T-SQL語句都是一個整體--*/

    begintransaction

    /*--定義變量,用于累計事務(wù)執(zhí)行過程中的錯誤--*/

    declare@errorsum int --聲明變量,用于保存所有T-SQL語句錯誤號的和

    set@errorsum=0

    /*--轉(zhuǎn)帳:張三的帳戶少1000元,李四的帳戶多1000--*/

 

    updatebank set 余額=余額-1000

    where 賬戶='張三'

 

    set@errorsum=@errorsum+@@ERROR     --累計是否有錯誤

    updatebank set 余額=余額+1000

    where 賬戶='李四'

    set@errorsum=@errorsum+@@ERROR     --累計是否有錯誤

 

    print  '查看轉(zhuǎn)帳事務(wù)過程中的余額'

    select *from bank

 

    /*--根據(jù)是否有錯誤,確定事務(wù)是提交還是撤銷--*/

    if@errorsum<>0     --如果有錯誤

    begin

    print  '交易失敗,回滾事務(wù)'

    rollbacktransaction

    end

    else

    begin

    print  '交易成功,提交事務(wù),寫入磁盤,永久地保存'

    committransaction

    end

    go

    print  '查看轉(zhuǎn)帳事務(wù)后的余額'

    select *from bank

    go

向AI問一下細節(jié)

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

AI