【SQL Server 第1篇】T-SQL概述

T-SQL是SQL Server系統(tǒng)產(chǎn)品獨有的關(guān)系數(shù)據(jù)庫系統(tǒng)語言。

T-SQL主要由三部分組成

  • DDL:數(shù)據(jù)定義語言,用于在數(shù)據(jù)庫中對數(shù)據(jù)庫、表、視圖、索引等數(shù)據(jù)庫對象進行創(chuàng)建及管理;
  • DCL:數(shù)據(jù)控制語言,用于實現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)的完整性、安全性等的控制;
  • DML:數(shù)據(jù)操作語言,用于插入、修改、刪除和查詢數(shù)據(jù)庫中的數(shù)據(jù)。

T-SQL語句結(jié)構(gòu)

每條SQL語言都由一個謂語開始,如SELECT,UPDATE。謂語后緊接著一個或者多個子句,子句給出了被謂語作用的數(shù)據(jù)或提供謂語動作的詳細信息,每一條子句都由一個關(guān)鍵字開始。
比如select語句主要結(jié)構(gòu)如下:

select 子句
[ into 子句 ]
from 子句
[ where 子句 ]
[ group by 子句 ]
[ having 子句 ]
[ oder by 子句 ase/desc ]

T-SQL語句分類

  • 變量說明語句:用來說明變量的命令;
  • 數(shù)據(jù)定義語句:用來建立數(shù)據(jù)庫、數(shù)據(jù)庫對象和定義列,大部分以create開頭的命令,如create table 、create view、drop table等;
  • 數(shù)據(jù)操作語句:用來操作數(shù)據(jù)庫的命令,如select、insert、updata、delete和cursor等;
  • 數(shù)據(jù)控制語句:用來控制數(shù)據(jù)庫組件的存取許可、存取權(quán)限等命令,如grant、revoke等;
  • 流程控制語句:用于設(shè)計應(yīng)用程序流程的語句,如if while和case等;
  • 內(nèi)嵌函數(shù):說明變量的命令;
  • 其他命令:嵌于命令中使用的標(biāo)準(zhǔn)函數(shù)。

常量

  • 數(shù)字常量:整數(shù)常量、小數(shù)常量和浮點常量(e,即乘10的幾次冪 )
  • 字符串常量:常用單引號括在內(nèi);
  • 日期和時間常量
  • 符號常量:SQL包含幾個特有的符號變量,例current_date表示當(dāng)前日期,類似的如current_time,current_timestamp等。

變量

數(shù)據(jù)在內(nèi)存中儲存可以變化的量叫變量。

局部變量

局部變量是用戶可自定義的變量,必須以@開頭。
1、聲明局部變量
局部變量的聲明需要使用declare語句

declare
{ @varaible_name datatype [ ,…n ] }

其中@varaible_name是局部變量名;
datatype是數(shù)據(jù)類型

例如: declare @身份證類型 char(10)

2、為局部變量賦值

  • 第一種方法是用select語句

select
@varaible_name=expression
[ from table_name[,…] where clause ]

賦值的時候select語句可以不用from子句。
select語句賦值和查詢不能混淆!

  • 第二種方法是用set語句

declare @varaible_name char(10)
set @varaible_name=expression

  • 為多個變量一起賦值

declare @a int,@b char(10),@c int
select @a=1,@b='love',@c=2

全局變量

全局變量是數(shù)據(jù)庫內(nèi)部事先定義好的變量,其名稱都是以@@開頭的

  • @@connections
    使用@@connections可以讓系統(tǒng)管理員很容易得到今天所有試圖連接本服務(wù)器的連接數(shù)目;
  • @@cup_busy
    記錄自上次啟動以來嘗試的連接數(shù),都是以ms為單位的cpu工作時間
  • @@cursor_rows
    返回在本次服務(wù)器連接中,打開游標(biāo)取出數(shù)據(jù)行的數(shù)目;
  • @@DBTS
    返回當(dāng)前數(shù)據(jù)庫中timestamp數(shù)據(jù)類型的當(dāng)前值
  • @@error
    返回執(zhí)行上一條Transact-SQL語句返回的錯誤代碼。
  • @@fetch_status
    返回上一次使用游標(biāo)fetch操作所返回的狀態(tài)值,且返回值為整型。
    ……………………不在贅述!

注釋符、運算符與通配符

流程控制

  • begin ……end
    用于將多個T-SQL語句組合成一個邏輯塊。
    在begin……end 可嵌套另外的begin……end來定義另一程序塊。
  • if

if <條件表達書>{命令行|程序塊}

  • if ……else

if <條件表達書>{命令行|程序塊}
[ else {命令行|程序塊} ]
例:
declare @x int,@y int
set @x=-1
@y=1
if @x>0
if@y>0
print"xy在第一象限"
else
print"xy在第四象限"
else
if@y>0
print"xy在第二象限"
else
print"xy在第三象限"

  • case
    使用case語句可以很方便地實現(xiàn)多重選擇的情況,比if……then結(jié)構(gòu)有更多的選擇和判斷的機會。
    1、第一種簡單的case函數(shù)
    CASE 所計算的表達式
    WHEN 選擇條件表達式 THEN 返回表達式
    [……n] --表示可以使用多個when……then
    [
    ELSE 返回表達式
    END
    2、case 搜索函數(shù)
    CASE
    WHNE 所計算的布爾表達式 THEN 返回表達式
    [……n]
    [
    ELSE 返回表達式
    END
    3、舉例
    use 學(xué)生成績數(shù)據(jù)庫
    go
    select *,
    評分總結(jié)=case
    when 成績>=90 then '成績優(yōu)秀'
    when 成績<90 and 成績>=80 then '成績良好'
    when 成績<80 and 成績>=60 then '成績及格'
    else '成績不及格'
    end
    from 成績表
  • while
    while子句是T-SQL語句支持的循環(huán)結(jié)構(gòu)。在條件為真時,while子句可以循環(huán)執(zhí)行其后一條T-SQL語句。如果要循環(huán)執(zhí)行一組命令,需要配合begin……end子句使用。
    while <條件表達式>
    begin
    <命令行|程序塊>
    end
    舉例:求1~10之間的整數(shù)和
    declare @n int,@sum int
    set @n=1
    set @sum=0
    while @n<=10
    begin
    set @sum=@sum+@n
    set @n=@n+1
    end
    print @sum

  • while ……continue……break
    while <條件表達式>
    begin
    <命令行|程序塊>
    [break] --跳出循環(huán),結(jié)束while命令
    [continue] --回到循環(huán)第一步
    end

舉例1:求1~10之間偶數(shù)的和,用continue進行控制

         declare @x int,@sum int
         set @x=1
         set @sum=0
         while @x<10
              begin 
              set @x=@x+1
                if @x % 2=0
                  set @sum=@sum+@x
                else
                continue
              end
  • return
    return語句用于從查詢或過程中無條件退出。位于return之后的語句不會被執(zhí)行。
  • goto
  • waitfor

常用命令

  • DBCC命令用于驗證數(shù)據(jù)庫完整性、查找錯誤和分析系統(tǒng)使用情況等。
    1、DBCC checkalloc 檢查制定數(shù)據(jù)庫的磁盤空間分配結(jié)構(gòu)的一致性;
    2、DBCC showcontig 顯示指定表的數(shù)據(jù)和索引的碎片信息;
  • checkpoint
  • declare
  • print
  • raiserror
  • readtext
  • backup 數(shù)據(jù)備份
    backup database 數(shù)據(jù)庫名 to disk='文件名.bak'
    -restore
    -select 除了查詢,還可以賦值
    -set,一方面用于局部變量賦值,一方面用于執(zhí)行SQL命令時SQL Server的處理選項設(shè)定
    -shutdown立即停止SQL Server的執(zhí)行。
    -writetext
    -use
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是SQL數(shù)據(jù)庫: SQL是Structured Query Language(結(jié)構(gòu)化查詢語言)的縮寫。SQL是...
    西貝巴巴閱讀 1,990評論 0 10
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,627評論 18 399
  • 絲雨滴滴,心中的雨也絲絲漣漪,漣漪落第一瞬間散開,化作虛無,沒有任何痕跡。卻好似這般的安靜,心中的煩惱也隨風(fēng)而逝,...
    羽落如夢閱讀 253評論 0 0
  • “還記得我送你的那塊手表么?這是空前絕后唯一一塊哦。” “可以換寶馬的那個?” “是的。就是那種手表,我找這家店的...
    自由的刷客閱讀 204評論 0 0

友情鏈接更多精彩內(nèi)容