溫馨提示×

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

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

使用T-SQL語(yǔ)句插入、更新、刪除數(shù)據(jù)表

發(fā)布時(shí)間:2020-07-20 14:23:18 來(lái)源:網(wǎng)絡(luò) 閱讀:2992 作者:楊書凡 欄目:MySQL數(shù)據(jù)庫(kù)

    在對(duì)數(shù)據(jù)進(jìn)行管理時(shí),使用SSMS進(jìn)行數(shù)據(jù)維護(hù)有可視化、方便的優(yōu)點(diǎn),但是在批量維護(hù)或重復(fù)維護(hù)時(shí),使用SSMS就不方便了,還容易出錯(cuò),這就需要編寫SQL語(yǔ)句對(duì)數(shù)據(jù)庫(kù)進(jìn)行維護(hù)



SQL和T-SQL

    SQL是Structured Query Language的縮寫,即結(jié)構(gòu)化查詢語(yǔ)言,是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言。如今Oracle、Sybase、Informix、SQL Server這些大型數(shù)據(jù)庫(kù)管理系統(tǒng)都支持SQL作為查詢語(yǔ)言

    T-SQL是SQL的加強(qiáng)版,除了標(biāo)準(zhǔn)的SQL命令外,還支持類似于程序語(yǔ)言的基本功能,如流量控制、變量說(shuō)明、功能函數(shù)等

    T-SQL語(yǔ)言主要由以下幾部分組成:

  DML(Data Manipulation Language,數(shù)據(jù)操縱語(yǔ)言):用來(lái)查詢、插入、刪除、修改數(shù)據(jù)庫(kù)中的數(shù)據(jù),如select、insert、update、delete

  DDL(Data Definition Language,數(shù)據(jù)定義語(yǔ)言):用來(lái)建立數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)對(duì)象和定義其列,大部分命令以create開頭的命令,如create、alter、drop

  DCL(Data Control Language,數(shù)據(jù)控制語(yǔ)言):用來(lái)控制數(shù)據(jù)庫(kù)組件的存取許可、存取權(quán)限等,如grant、revoke


插入數(shù)據(jù)(INSERT)

    使用INSERT語(yǔ)句將數(shù)據(jù)庫(kù)插入到表中,語(yǔ)法格式如下:

insert [into] 表名 [列名] values 值列表

其中

* into是可選的,可省略

* 表名是必須的,而表的列名是可選的,如省略,值列表的順序與數(shù)據(jù)表中字段順序保持一致

* 多個(gè)列名和值列表用逗號(hào)分隔


例如:向?qū)W生成績(jī)表中插入一行數(shù)據(jù),可以使用如下T-SQL語(yǔ)句

   SQL語(yǔ)句的執(zhí)行一般在查詢窗口中進(jìn)行,單擊“新建查詢”按鈕,選擇數(shù)據(jù)庫(kù),輸入SQL語(yǔ)句,如下圖所示:


使用T-SQL語(yǔ)句插入、更新、刪除數(shù)據(jù)表


    在SSMS中單擊“√”,系統(tǒng)會(huì)檢查輸入的T-SQL語(yǔ)句是否有語(yǔ)法錯(cuò)誤,之后會(huì)顯示分析結(jié)果,如果無(wú)誤,單擊執(zhí)行,可以執(zhí)行T-SQL語(yǔ)句,然后顯示執(zhí)行結(jié)果,如下圖所示:

使用T-SQL語(yǔ)句插入、更新、刪除數(shù)據(jù)表


    在插入數(shù)據(jù)時(shí),需要注意以下事項(xiàng):

(1)每次插入一整行數(shù)據(jù),不可能只插入半行或者幾列數(shù)據(jù)

(2)數(shù)據(jù)值的數(shù)目必須與列數(shù)相同,每個(gè)值的數(shù)據(jù)類型、精度、小數(shù)位也不需與相應(yīng)的列匹配

(3)對(duì)于字符類型的列,必須使用單引號(hào)

(4)插入的數(shù)據(jù)項(xiàng)要求符合CHECK約束的要求



更新數(shù)據(jù)(UPDATE)

    使用UPDATE語(yǔ)句更新表中的數(shù)據(jù),語(yǔ)法格式如下:

update 表名 set 列名=更新值 [where 更新條件]

其中

* set后面可以緊隨多個(gè)數(shù)據(jù)列的更新值,不限一個(gè)

* where是可選的,用來(lái)限制條件,如果不限制,整個(gè)表所有數(shù)據(jù)行都將被更新


例如:更改學(xué)生成績(jī)表中學(xué)生楊凡的CNT為95,SQL為77,可以使用如下T-SQL語(yǔ)句,如下圖所示

使用T-SQL語(yǔ)句插入、更新、刪除數(shù)據(jù)表



刪除數(shù)據(jù)

(1)使用DELETE語(yǔ)句刪除表中的數(shù)據(jù)

    delete語(yǔ)法格式如下

delete from 表名 [where 刪除條件]

* 如果不用where,將刪除表中所有數(shù)據(jù)


例如:刪除學(xué)生成績(jī)表中學(xué)生張三的記錄,可以使用如下T-SQL語(yǔ)句

使用T-SQL語(yǔ)句插入、更新、刪除數(shù)據(jù)表


注意:delete語(yǔ)句用于刪除整條記錄,不會(huì)只刪除單個(gè)字段,所以在delete后面不能出現(xiàn)字段名


(2)使用Truncate table語(yǔ)句刪除表中的數(shù)據(jù)

    Truncate table語(yǔ)句用來(lái)刪除表中所有行,功能上類似于,沒有where子句的delete語(yǔ)句, Truncate table語(yǔ)法格式如下:

truncate table 表名


Truncate table語(yǔ)句與DELETE語(yǔ)句的區(qū)別如下:

Truncate table語(yǔ)句不帶where,只能將整個(gè)表數(shù)據(jù)清空,而DELETE語(yǔ)句可以按照條件刪除某些記錄

Truncate table語(yǔ)句不記錄事務(wù)日志,刪除后無(wú)法通過(guò)事務(wù)日志恢復(fù);而DELETE語(yǔ)句每刪除一行記錄,都會(huì)記錄一條事務(wù)日志。

Truncate table語(yǔ)句不能用于有外鍵約束引用的表,這種情況下,需要使用DELETE語(yǔ)句

    綜上所述,Truncate table語(yǔ)句執(zhí)行速度更快,在情況大量數(shù)據(jù)表作業(yè)時(shí),DBA常用此語(yǔ)句,但在執(zhí)行前要確保數(shù)據(jù)可以刪除,否則無(wú)法恢復(fù)




向AI問(wèn)一下細(xì)節(jié)

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

AI