在對(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ù)
從策劃到設(shè)計(jì)制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、空間域名、虛擬空間、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、 網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進(jìn)步。
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開(kāi)頭的命令,如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ǔ)句,如下圖所示:
在SSMS中單擊“√”,系統(tǒng)會(huì)檢查輸入的T-SQL語(yǔ)句是否有語(yǔ)法錯(cuò)誤,之后會(huì)顯示分析結(jié)果,如果無(wú)誤,單擊執(zhí)行,可以執(zhí)行T-SQL語(yǔ)句,然后顯示執(zhí)行結(jié)果,如下圖所示:
在插入數(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ǔ)句,如下圖所示
刪除數(shù)據(jù)
(1)使用DELETE語(yǔ)句刪除表中的數(shù)據(jù)
delete語(yǔ)法格式如下
delete from 表名 [where 刪除條件]
* 如果不用where,將刪除表中所有數(shù)據(jù)
例如:刪除學(xué)生成績(jī)表中學(xué)生張三的記錄,可以使用如下T-SQL語(yǔ)句
注意:delete語(yǔ)句用于刪除整條記錄,不會(huì)只刪除單個(gè)字段,所以在delete后面不能出現(xiàn)字段名
(2)使用Truncate table語(yǔ)句刪除表中的數(shù)據(jù)
Truncate table語(yǔ)句用來(lái)刪除表中所有行,功能上類似于,沒(mé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ù)