【文章內(nèi)容簡介】
? WHERE子句中條件可以嵌套,也可以是來自幾個(gè)基本表的復(fù)合條件 ? 如果沒有 WHERE子句,則刪除表的所有元組,表成為空表 36 SQL的數(shù)據(jù)更新 ? 數(shù)據(jù)刪除 –示例 ? Delete From SC Where Grade is NULL 。 ? Delete From C Where Cname Like ‘ %M%’ 。 ? Delete From SC Where Cno in ( Select Cno From C Where Cname = ‘ MATHS’ ) 。 ? Delete From SC, C Where = and Cname = ‘ MATHS’ 。 ? Delete From SC Where Cno = ‘ C4’ and Grade ( Select AVG(Grade) From SC Where Cno = ‘ C4’ )。 ? C N O C N A M E C r e d it C r e d it H o u r s C P N O T N OC1 M a t h 3 48 N U L L T1C2 E n g lis h 4 64 N U L L T2C3 PM 2 32 C2 T2C4 DB 3 .5 56 C1 T1S N O C N O G rad eS1 C2 80S1 C3 70S1 C4 85S2 C1 60S2 C2 75S2 C3 90S2 C4 N U L LS3 C1 85S3 C4 80S4 C2 85S4 C4 75C r e a t e T a b l e SC (S N O C H A R ( 3 ) , C N O C H A R ( 3 ) , G R A D E D E C ( 5 , 2) ,P r i m a r y K e y ( S N O , C N O ) ,F o r e i g n K e y ( S N O )R e f e r e n c e s S ( S N O ) ON D E L E T E r e s t r i c t ,F o r e i g n K e y ( C N O )R e f e r e n c e s C ON D E L E T E c a s c a d e ,C h e c k ( G R A D E B e t w e e n 0 A n d 1 0 0 ) ) 。37 SQL的數(shù)據(jù)更新 ? 數(shù)據(jù)刪除 –示例,問 ? Delete From S Where Sname Like ‘ %U%’ 。 S N O S N A M E A G E S E X N a t iv e P la c eS1 W A N G 20 M 北京S2 L IU 18 F 山東S3 HU 17 M 上海S4 X IA 19 F 四川C N O C N A M E C r e d it C r e d it H o u r s C P N O T N OC1 M a t h 3 48 N U L L T1C2 E n g lis h 4 64 N U L L T2C3 PM 2 32 C2 T2C4 DB 3 .5 56 C1 T1S N O C N O G ra d eS1 C2 80S1 C3 70S1 C4 85S2 C1 60S2 C2 75S2 C3 90S2 C4 N U L LS3 C1 85S3 C4 80S4 C2 85S4 C4 75T N O T N A M E T IT L E S E XT1 Z H A O 講師 MT2 L IU 教授 F ? 38 SQL的數(shù)據(jù)更新 ? 數(shù)據(jù)刪除 –示例,問 ? Delete From S Where Sname Like ‘ %U%’ 。 Delete From SC Where Sno in ( Select Sno From S Where Sname Like ‘ %U%’ )。 Delete From S Where Sname Like ‘ %U%’ 。 S N O S N A M E A G E S E X N a t iv e P la c eS1 W A N G 20 M 北京S2 L IU 18 F 山東S3 HU 17 M 上海S4 X IA 19 F 四川C N O C N A M E C r e d it C r e d it H o u r s C P N O T N OC1 M a t h 3 48 N U L L T1C2 E n g lis h 4 64 N U L L T2C3 PM 2 32 C2 T2C4 DB 3 .5 56 C1 T1S N O C N O G ra d eS1 C2 80S1 C3 70S1 C4 85S2 C1 60S2 C2 75S2 C3 90S2 C4 N U L LS3 C1 85S3 C4 80S4 C2 85S4 C4 75T N O T N A M E T IT L E S E XT1 Z H A O 講師 MT2 L IU 教授 F ? 39 SQL的數(shù)據(jù)更新 ? 數(shù)據(jù)刪除 –示例,問 ? 如圖示 4條相關(guān)數(shù)據(jù)的刪除順序是什么? ? Drop Table SC 與 Delete From SC 的區(qū)別是什么 ? TRUNCATE TABLE SC S N O S N A M E A G E S E X N a t iv e P la c eS1 W A N G 20 M 北京S2 L IU 18 F 山東S3 HU 17 M 上海S4 X IA 19 F 四川C N O C N A M E C r e d it C r e d it H o u r s C P N O T N OC1 M a t h 3 48 N U L L T1C2 E n g lis h 4 64 N U L L T2C3 PM 2 32 C2 T2C4 DB 3 .5 56 C1 T1S N O C N O G ra d eS1 C2 80S1 C3 70S1 C4 85S2 C1 60S2 C2 75S2 C3 90S2 C4 N U L LS3 C1 85S3 C4 80S4 C2 85S4 C4 75T N O T N A M E T IT L E S E XT1 Z H A O 講師 MT2 L IU 教授 F ? ② ④ ③ ① ? ? 40 SQL的數(shù)據(jù)更新 ? 數(shù)據(jù)刪除 –當(dāng) LIU老師不再教授課程時(shí),刪除其基本信息 ? Delete From T Where Tname = ‘ LIU’ AND Tno Not in ( Select Tno From C) –當(dāng) PM課程沒人選修時(shí),刪除這門課程信息 –當(dāng) WANG同學(xué)不再選修課程時(shí),刪除其基本信息 S N O S N A M E A G E S E X N a t iv e P la c eS1 W A N G 20 M 北京S2 L IU 18 F 山東S3 HU 17 M 上海S4 X IA 19 F 四川C N O C N A M E C r e d it C r e d it H o u r s C P N O T N OC1 M a t h 3 48 N U L L T1C2 E n g lis h 4 64 N U L L T2C3 PM 2 32 C2 T2C4 DB 3 .5 56 C1 T1S N O C N O G ra d eS1 C2 80S1 C3 70S1 C4 85S2 C1 60S2 C2 75S2 C3 90S2 C4 N U L LS3 C1 85S3 C4 80S4 C2 85S4 C4 75T N O T N A M E T IT L E S E XT1 Z H A O 講師 MT2 L IU 教授 F ? ? 41 SQL的數(shù)據(jù)更新 ? 數(shù)據(jù)刪除 – TRUNCATE TABLE 表名 與 DELETE From 表名 ? 功能上相同:均刪除表中的全部行 ? 但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統(tǒng)和事務(wù)日志資源少 ? DELETE 語句每次刪除一行,并在事務(wù)日志中為所刪除的每行記錄一項(xiàng) ? TRUNCATE TABLE 通過釋放存儲(chǔ)表數(shù)據(jù)所用的數(shù)據(jù)頁來刪除數(shù)據(jù),并且只在事務(wù)日志中記錄頁的釋放 42 SQL的數(shù)據(jù)更新 ? 數(shù)據(jù)刪除 – TRUNCATE TABLE 表名 與 DELETE From 表名 ? TRUNCATE TABLE 刪除表中的所有行,但表結(jié)構(gòu)及其列、約束、索引等保持不變;新行標(biāo)識(shí)所用的計(jì)數(shù)值重置為該列的種子,如果想保留標(biāo)識(shí)計(jì)數(shù)值,應(yīng)使用 DELETE ? 如果要?jiǎng)h除表定義及其數(shù)據(jù),應(yīng)使用 DROP TABLE 語句 ? 對(duì)于由 FOREIGN KEY 約束引用的表,不能使用 TRUNCATE TABLE,而應(yīng)使用不帶 WHERE 子句的 DELETE 語句 ? 由于 TRUNCATE TABLE 不記錄在日志中,所以它不能激活觸發(fā)器 ? TRUNCATE TABLE 不能用于參與了索引視圖的表 43 SQL的數(shù)據(jù)更新 ? 數(shù)據(jù)修改 –句法 ? UPDATE 基本表名 SET 列名 =值表達(dá)式 [,列名 =值表達(dá)式 …]│ROW = (元組 ) [ WHERE 條件表達(dá)式 ] –語義 ? 修改基本表中滿足條件表達(dá)式元組的指定屬性值 –說明 ? WHERE子句表示要修改的元組需滿足的條件 ? SET子句表示要修改的列及其新值或元組值 ? UPDATE語句一次只能修改一個(gè)表中的元組 44 SQL的數(shù)據(jù)更新 ? 數(shù)據(jù)修改 –示例 ? Update C Set Cname=‘ SE’ Where Cno=‘ C3’ 。 ? Update SC Set Grade = Grade * Where Sno in ( Select Sno From S Where Sex = ‘ F’ ) 。 ? Update SC, S Set Grade = Grade * Where = and Sex = ‘ F’ 。 S N O S N A M E A G E S E X N a t iv e P la c eS1 W A N G 20 M 北京S2 L IU 18 F 山東S3 HU 17 M 上海S4 X IA 19 F 四川S N O C N O G ra d eS1 C2 80S1 C3 70S1 C4 85S2 C1 60S2 C2 75S2 C3 90S2 C4 N U L LS3 C1 85S3 C4 80S4 C2 85S4 C4 75T N O T N A M E T IT L E S E XT1 Z H A O 講師 MT2 L IU 教授 F ? ? C N O C N A M E C r e d it C r e d it H o u r s C P N O T N OC1 M a t h 3 48 N U L L T1C2 E n g lis h 4 64 N U L L T2C3 PM 2 32 C2 T2C4 DB 3 .5 56 C1 T145 SQL的數(shù)據(jù)更新 ? 數(shù)據(jù)修改 –示例 ? Update SC Set Grade = Grade * Where Cno= 39。C439。 and Grade ( Select AVG(Grade) From SC Where C= 39。C439。)。 ? Update C Set Row = (39。C339。, ‘ SE39。, 4, 64 , 39。C139。, ‘ T239。 ) Where Cno = 39。C339。 。 S N O S N A M E A G E S E X N a t iv e P la c eS1 W A N G 20 M 北京S2 L IU 18 F 山東S3 HU 17 M 上海S4 X IA 19 F 四川S N O C N O G ra d eS1 C2 80S1 C3 70S1 C4 85S2 C1 60S2 C2 75S2 C3 90S2 C4 N U L LS3 C1 85S3 C4 80S4 C2 85S4 C4 75T N O T N A M E T IT L E S E XT1 Z H A O 講師 MT2 L IU 教授 F ? C N O C N A M E C r e d it C r