第6講編輯維護(hù)表格數(shù)據(jù)_第1頁
第6講編輯維護(hù)表格數(shù)據(jù)_第2頁
第6講編輯維護(hù)表格數(shù)據(jù)_第3頁
第6講編輯維護(hù)表格數(shù)據(jù)_第4頁
第6講編輯維護(hù)表格數(shù)據(jù)_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第第 6 講 編輯維護(hù)表格數(shù)據(jù)編輯維護(hù)表格數(shù)據(jù)哈爾哈爾濱師濱師范大范大學(xué)學(xué)恒星恒星學(xué)學(xué)院院本本講講主要主要內(nèi)內(nèi)容容添加數(shù)據(jù)添加數(shù)據(jù)更新更新數(shù)據(jù)數(shù)據(jù) 刪除數(shù)據(jù)刪除數(shù)據(jù) 常用工具簡介常用工具簡介 123 1 概論概論 數(shù)據(jù)更新是使用數(shù)據(jù)的基本問題數(shù)據(jù)更新是使用數(shù)據(jù)的基本問題. 因?yàn)閿?shù)據(jù)因?yàn)閿?shù)據(jù)庫的目的是準(zhǔn)確地反映現(xiàn)實(shí)世界庫的目的是準(zhǔn)確地反映現(xiàn)實(shí)世界, 所以其中的數(shù)所以其中的數(shù)據(jù)也必須隨著現(xiàn)實(shí)世界的變化而變化據(jù)也必須隨著現(xiàn)實(shí)世界的變化而變化. 對于對于 SQL 程序員來說,這就意味著要使用程序員來說,這就意味著要使用數(shù)據(jù)操縱語言數(shù)據(jù)操縱語言(DML)的命令的命令 INSERT、DELETE、UPDA

2、TE. 但這些操作并不是只能對單行數(shù)據(jù)進(jìn)但這些操作并不是只能對單行數(shù)據(jù)進(jìn)行的,應(yīng)該從行的,應(yīng)該從集合的角度集合的角度來考慮問題來考慮問題. 使用使用SQL修改數(shù)據(jù)的過程利用了修改數(shù)據(jù)的過程利用了SQL Server全部數(shù)據(jù)檢索能力全部數(shù)據(jù)檢索能力 - 強(qiáng)大的檢索強(qiáng)大的檢索 select、連接、連接、全文檢索、子查詢和視圖全文檢索、子查詢和視圖. 一、一、 添加數(shù)據(jù)添加數(shù)據(jù) SQL 提供了提供了4 種形式的種形式的 insert 命令以及命令以及select/into 命令作為插入數(shù)據(jù)的主要方法命令作為插入數(shù)據(jù)的主要方法. 其其中最簡單的形式只是插入一行數(shù)據(jù),而最復(fù)雜中最簡單的形式只是插入一行數(shù)

3、據(jù),而最復(fù)雜的形式則能夠使用一個復(fù)雜的語句創(chuàng)建一個數(shù)的形式則能夠使用一個復(fù)雜的語句創(chuàng)建一個數(shù)據(jù)集合,并利用這個數(shù)據(jù)集合來創(chuàng)建一個表據(jù)集合,并利用這個數(shù)據(jù)集合來創(chuàng)建一個表. 每一種的每一種的 insert 命令形式都適用于一種特命令形式都適用于一種特定的任務(wù),這些任務(wù)通常與要插入的數(shù)據(jù)的來定的任務(wù),這些任務(wù)通常與要插入的數(shù)據(jù)的來源有關(guān)源有關(guān). insert 命令的各種形式命令的各種形式insert 命令的形式用途insert/values常用于來自用戶界面的數(shù)據(jù)insert/select常用于操作多行數(shù)據(jù)insert/exec用于復(fù)雜的數(shù)據(jù)操作insert default由各列默認(rèn)值構(gòu)成新行se

4、lect/into由 select 的結(jié)果集創(chuàng)建新行insert 命令的各種形式命令的各種形式 使用使用 insert/values 方法只接收一組數(shù)方法只接收一組數(shù)據(jù),所以它只能一次插入一行數(shù)據(jù)據(jù),所以它只能一次插入一行數(shù)據(jù). INSERT INTO (column_list) VALUES ( values|default|null ,n ) 創(chuàng)建創(chuàng)建 insert 語句的語句的關(guān)鍵關(guān)鍵在于保證以正確在于保證以正確的順序插入列,并確保要插入的值的數(shù)據(jù)類的順序插入列,并確保要插入的值的數(shù)據(jù)類型與對應(yīng)的列列表的數(shù)據(jù)類型是一致的型與對應(yīng)的列列表的數(shù)據(jù)類型是一致的. 2. 2. 插入一行數(shù)據(jù)插入一

5、行數(shù)據(jù) 使用列列表使用列列表 在在 INSERT 語句中可選擇是否搭配使用語句中可選擇是否搭配使用列列表列列表(column_list). 如果未使用列列表如果未使用列列表, 則在則在 VALUES子句中需要根據(jù)表中列定義的順序子句中需要根據(jù)表中列定義的順序, 插入相應(yīng)的數(shù)插入相應(yīng)的數(shù)據(jù)值據(jù)值. 插入部分列插入部分列 插入行時插入行時, 可以根據(jù)實(shí)際情況可以根據(jù)實(shí)際情況, 在指定的表中在指定的表中插入一條完整的行插入一條完整的行, 或是包含或是包含部分列部分列的行的行. 例如例如, 插入一條客戶數(shù)據(jù)插入一條客戶數(shù)據(jù), 如果此客戶沒有傳真如果此客戶沒有傳真機(jī)機(jī), 則在傳真機(jī)號碼這個列中就不會輸入

6、數(shù)據(jù)則在傳真機(jī)號碼這個列中就不會輸入數(shù)據(jù). 如果要使上述的插入操作成功如果要使上述的插入操作成功, 那么在設(shè)計這那么在設(shè)計這樣的列時樣的列時, 需要滿足以下任一條件需要滿足以下任一條件, 于是數(shù)據(jù)庫引擎于是數(shù)據(jù)庫引擎將自動提供列的內(nèi)容值將自動提供列的內(nèi)容值, 使插入語句能夠成功執(zhí)行使插入語句能夠成功執(zhí)行. 含含 identity 屬性屬性, 將使用下一個累加標(biāo)識值將使用下一個累加標(biāo)識值. 有默認(rèn)值有默認(rèn)值, 將使用列的默認(rèn)值將使用列的默認(rèn)值. 如果允許如果允許 null 值值, 將使用將使用 null. 有計算列有計算列, 將使用計算的值將使用計算的值.等等等等. CREATE DATABAS

7、E mydbGOUSE mydbGOCREATE TABLE od01( oid int , oname varchar(30)GOINSERT od01 VALUES ( 1, XBOX )INSERT od01 ( oname , oid ) VALUES ( PS3 , 2 )SELECT * FROM od01 例題例題- 建立范例表建立范例表 od02CREATE TABLE od02( oid int , odate smalldatetime DEFAULT (getdate(),oname varchar(30)GO- 使用使用 DEFAULT 關(guān)鍵字插入數(shù)據(jù)關(guān)鍵字插入數(shù)據(jù)IN

8、SERT od02 VALUES ( 1, DEFAULT, XBOX )- 使用列列表,但不包含有默認(rèn)值的列使用列列表,但不包含有默認(rèn)值的列INSERT od01 ( oname , oid ) VALUES ( PS3 , 2 )- 查看數(shù)據(jù)查看數(shù)據(jù)SELECT * FROM od02 例題例題 在在 insert 命令中不一定要列出表中的每個命令中不一定要列出表中的每個列,但只要列出了某個列列,但只要列出了某個列, 那么就必須在那么就必須在 insert命令中為它提供相應(yīng)的插入值命令中為它提供相應(yīng)的插入值. 對于在列列表中沒有列出的列對于在列列表中沒有列出的列, 系統(tǒng)將根系統(tǒng)將根據(jù)據(jù) i

9、dentity 屬性屬性, 默認(rèn)值默認(rèn)值屬性或?qū)傩曰?null 屬性處理屬性處理. 當(dāng)一個列沒有默認(rèn)值,但卻具有當(dāng)一個列沒有默認(rèn)值,但卻具有 not null約束時,如果在約束時,如果在 insert 命令中沒有為它提供值命令中沒有為它提供值,那么該那么該 insert 語句就不能正常執(zhí)行語句就不能正常執(zhí)行. 注意注意:標(biāo)識列標(biāo)識列是不能夠接受插入的數(shù)據(jù)值是不能夠接受插入的數(shù)據(jù)值的的. 所以在列列表中將該列忽略所以在列列表中將該列忽略, 在插入值的在插入值的列表中也不要為標(biāo)識列提供值列表中也不要為標(biāo)識列提供值. 插入的數(shù)據(jù)值也可以是表達(dá)式計算的結(jié)果插入的數(shù)據(jù)值也可以是表達(dá)式計算的結(jié)果值值. 當(dāng)

10、需要對數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換,或者需要變當(dāng)需要對數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換,或者需要變更、計算、串聯(lián)數(shù)據(jù)時,就需要使用這種方法更、計算、串聯(lián)數(shù)據(jù)時,就需要使用這種方法. 當(dāng)已知要插入的數(shù)據(jù)時(這些數(shù)據(jù)通常是當(dāng)已知要插入的數(shù)據(jù)時(這些數(shù)據(jù)通常是從用戶界面中以變量的形式發(fā)送的),使用命從用戶界面中以變量的形式發(fā)送的),使用命令令 insert/values 是最佳的方法是最佳的方法. 如果數(shù)據(jù)已如果數(shù)據(jù)已經(jīng)存在于數(shù)據(jù)庫中,則最有效、最靈活的插入經(jīng)存在于數(shù)據(jù)庫中,則最有效、最靈活的插入數(shù)據(jù)的方法就是數(shù)據(jù)的方法就是 insert/select. 使用使用 insert/select 語句,可以將一個查語句,可以將一個

11、查詢結(jié)果集合中的數(shù)據(jù)移動到表中詢結(jié)果集合中的數(shù)據(jù)移動到表中. 這種方法的這種方法的真正能力在于:可以使用真正能力在于:可以使用 select 命令從幾乎命令從幾乎所有的數(shù)據(jù)源中獲取數(shù)據(jù),并對其進(jìn)行靈活地所有的數(shù)據(jù)源中獲取數(shù)據(jù),并對其進(jìn)行靈活地加工處理以滿足當(dāng)前的需要加工處理以滿足當(dāng)前的需要. 因?yàn)橐驗(yàn)?select 語句可以返回大量的行,所以語句可以返回大量的行,所以這種方法也就可以一次插入大量的行了這種方法也就可以一次插入大量的行了. 語法如下語法如下, 也要注意列的對應(yīng)及數(shù)據(jù)類型也要注意列的對應(yīng)及數(shù)據(jù)類型. INSERT INTO owner.table SELECT columns FR

12、OM data_sources WHERE conditions 3. 3. 插入多行數(shù)據(jù)插入多行數(shù)據(jù)CREATE TABLE od03( oid int , oname varchar(100), odate datetime)GO- 注意注意 SELECT 子查詢的列順序與表子查詢的列順序與表 od03 中一致否中一致否INSERT od03 SELECT * FROM od02- 查看數(shù)據(jù)查看數(shù)據(jù)SELECT * FROM od03- 將數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)入到表將數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)入到表od03中中INSERT od03SELECT ProductID, Name, GETDATA() FR

13、OM ProductSELECT * FROM od03 - 將將 SELECT 子查詢的結(jié)果集整批插入表子查詢的結(jié)果集整批插入表 od03 中中INSERT od03( oid, odate, oname ) SELECT * FROM od02- 查看數(shù)據(jù)查看數(shù)據(jù)SELECT * FROM od03- 將數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)入到表將數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)入到表od03中中INSERT od03SELECT ProductID, ProductName, GETDATE() FROM Northwind.dbo.ProductsSELECT * FROM od03 代碼修改的結(jié)果代碼修改的結(jié)果- 使用

14、使用 selectinto 建立一個新表建立一個新表. SELECT * INTO mydb.dbo.myauthorsFROM pubs.dbo.authorsWHERE 1=2 - 演示演示 INSERT myauthors(au_id, au_lname, au_fname, phone, state, contract)SELECT au_id, au_lname, au_fname, phone, state, contract FROM pubs.dbo.authorsWHERE state=CA- 查看數(shù)據(jù)查看數(shù)據(jù)SELECT * FROM myauthors 使用使用 inse

15、rt/select 語句的關(guān)鍵在于選擇語句的關(guān)鍵在于選擇正確的結(jié)果集正確的結(jié)果集. 所以,最好在執(zhí)行所以,最好在執(zhí)行 insert 命命令之前,首先單獨(dú)執(zhí)行一下令之前,首先單獨(dú)執(zhí)行一下 select 語句,以語句,以確認(rèn)結(jié)果集是正確的確認(rèn)結(jié)果集是正確的. 其它插入數(shù)據(jù)的方法還有:其它插入數(shù)據(jù)的方法還有: INSERT owner.table(column,) EXEC ProcdureName 以及使用列的默認(rèn)值以及使用列的默認(rèn)值: INSERT owner.table DEFAULT VALUES SQL 的的 update 命令具有強(qiáng)大的功能命令具有強(qiáng)大的功能. 在在其它語言的代碼中,需要

16、用數(shù)十行代碼,使用其它語言的代碼中,需要用數(shù)十行代碼,使用許多嵌套循環(huán)才能完成的工作,現(xiàn)在只需使用許多嵌套循環(huán)才能完成的工作,現(xiàn)在只需使用一個一個 update命令就可以完成了命令就可以完成了. SQL 并不是一種真正的命令語言,而是一并不是一種真正的命令語言,而是一種描述性的語言種描述性的語言. 你只需要使用你只需要使用SQL 代碼向查代碼向查詢優(yōu)化器描述你要做什么,查詢優(yōu)化器就會找詢優(yōu)化器描述你要做什么,查詢優(yōu)化器就會找到一種基于代碼的、優(yōu)化的查詢執(zhí)行計劃來完到一種基于代碼的、優(yōu)化的查詢執(zhí)行計劃來完成這項(xiàng)任務(wù)成這項(xiàng)任務(wù).二、二、 更新數(shù)據(jù)更新數(shù)據(jù) SQL 的的 update 命令非常簡單,

17、也很容易命令非常簡單,也很容易使用使用. 它既可以更新表中某一行中的某一列,它既可以更新表中某一行中的某一列,也可以更新表中的所有行和所有列也可以更新表中的所有行和所有列. update 命令的語法如下:命令的語法如下:UPDATE SET 列名稱列名稱= 表達(dá)式表達(dá)式|DEFAULT|NULL ,n FROM date_sources WHERE conditions SET關(guān)鍵字指定修改的列名稱與要更新的關(guān)鍵字指定修改的列名稱與要更新的值值. 為列指定新值時,可以是常量、表達(dá)式的為列指定新值時,可以是常量、表達(dá)式的結(jié)果甚至是子句中所引用的數(shù)據(jù)源中的另一個結(jié)果甚至是子句中所引用的數(shù)據(jù)源中的另

18、一個列列. 當(dāng)有多個列需要修改時,利用逗號分隔當(dāng)有多個列需要修改時,利用逗號分隔. 對于任何對于任何 update 語句來說,語句來說,where 子句子句都是非常重要的都是非常重要的. 如果不使用它,就會對整個如果不使用它,就會對整個表進(jìn)行更新表進(jìn)行更新. 如果使用了如果使用了 where 子句子句, 那么只那么只有滿足有滿足 where 子句條件的行才會被修改子句條件的行才會被修改. 一定要反復(fù)地檢查一定要反復(fù)地檢查 where 子句子句, 確保萬確保萬無一失無一失. 使用使用 from 子句時子句時, where 子句也可以用子句也可以用來指定來指定 date_sources 表的查詢條

19、件表的查詢條件. 當(dāng)利用當(dāng)利用 update 語句修改列時語句修改列時, 修改的數(shù)修改的數(shù)據(jù)值應(yīng)該兼容列所定義的數(shù)據(jù)類型據(jù)值應(yīng)該兼容列所定義的數(shù)據(jù)類型. 當(dāng)不兼容當(dāng)不兼容時時, SQL Server 會先進(jìn)行隱式轉(zhuǎn)換會先進(jìn)行隱式轉(zhuǎn)換, 自動將自動將數(shù)據(jù)轉(zhuǎn)換成另一種數(shù)據(jù)類型數(shù)據(jù)轉(zhuǎn)換成另一種數(shù)據(jù)類型. 如果隱式轉(zhuǎn)換失如果隱式轉(zhuǎn)換失敗敗, 將會造成語句執(zhí)行失敗將會造成語句執(zhí)行失敗. 下面是使用下面是使用 update 語句修改列的例語句修改列的例.注意注意SELECT ProductID, ProductName, UnitPrice INTO upPD01FROM Northwind.dbo.Pr

20、oductsUPDATE upPD01SET UnitPrice = UnitPrice *1.5WHERE ProductID=59UPDATE upPD01SET UnitPrice = UnitPrice *2UPDATE upPD01SET UnitPrice = UnitPrice /2WHERE ProductID=59SELECT * FROM upPD01ORDER BY UnitPrice DESC 例題例題 在修改列時在修改列時, 若需要按照列的內(nèi)容特性進(jìn)若需要按照列的內(nèi)容特性進(jìn)行相應(yīng)的修改時行相應(yīng)的修改時, 如何撰寫呢如何撰寫呢? 例如例如, 要將要將列列 SalesYT

21、D 的內(nèi)容依據(jù)下面的條件來修改的內(nèi)容依據(jù)下面的條件來修改:SalesYTD大于等于大于等于3000000.00, 將將 Bonus 修修改為改為2; SalesYTD小于小于3000000.00, 將將 Bonus修改為修改為1. 使用使用 update 語句搭配語句搭配 case 即可即可.UPDATE upPD01SET Bonus = CASE WHEN (SalesYTD = 3000.00) THEN 1 WHEN (SalesYTD 3000.00) THEN 2 END- 匯總每本書在匯總每本書在1995年的銷售量年的銷售量.SELECT * INTO titlesls FROM

22、 titlesUPDATE titleslsSET ytd_sales =( SELECT SUM(qty) FROM sales WHERE sales.title_id=titlesls.title_id AND ord_date BETWEEN 01/01/1995 AND 12/31/1995) 例題例題 數(shù)據(jù)庫開發(fā)人員經(jīng)常需要清理數(shù)據(jù)庫中那些有數(shù)據(jù)庫開發(fā)人員經(jīng)常需要清理數(shù)據(jù)庫中那些有問題的數(shù)據(jù)問題的數(shù)據(jù). 幸運(yùn)的是,幸運(yùn)的是,SQL 提供了一個提供了一個 replace()函數(shù),可以將它與函數(shù),可以將它與 update 命令配合使用來進(jìn)行全命令配合使用來進(jìn)行全程搜索和替換程搜索和替換

23、. 下面的例子是在下面的例子是在 titlesls 中將中將 royalty 列中的所列中的所有有10 都替換為都替換為15.USE pubsUPDATE titleslsSET royalty = replace( royslty, 10, 15) 全程搜索和替換全程搜索和替換 delete 命令過于簡單了,以至于使用它時命令過于簡單了,以至于使用它時很容易會出問題很容易會出問題. 使用它的基本形式會從表中使用它的基本形式會從表中刪除所有的行刪除所有的行, 并且因?yàn)椴⑶乙驗(yàn)?delete 命令刪除的是命令刪除的是整個行,所以使用它時也不需要指定任何列的整個行,所以使用它時也不需要指定任何列的

24、名字名字. 在在 delete 命令的語法中,雖然命令的語法中,雖然 where 子子句是可選的,但是,在使用時,卻必須對它加句是可選的,但是,在使用時,卻必須對它加以重點(diǎn)的關(guān)注以重點(diǎn)的關(guān)注.三、三、 刪除刪除數(shù)據(jù)數(shù)據(jù) 下面是下面是 delete 命令的簡明語法:命令的簡明語法: DELETE FROM FROM WHERE 注意注意:在上面的語法中,除了:在上面的語法中,除了 delete 關(guān)鍵字和關(guān)鍵字和表名表名以外,所有其它部分都是可以省略的以外,所有其它部分都是可以省略的. 如:如: DELETE FROM OBX.dbo.Product 它刪除它刪除 Product 表中所有的數(shù)據(jù)表

25、中所有的數(shù)據(jù)- 刪除時不會刪除時不會問你任何問題,也不會給你第二次選擇的機(jī)會問你任何問題,也不會給你第二次選擇的機(jī)會. SQL Server 本身沒有提供本身沒有提供“撤銷撤銷”(undo) 命命令令. 一旦提交了事務(wù),就再也無法撤銷它了一旦提交了事務(wù),就再也無法撤銷它了. 這就這就是為什么是為什么 where 子句對于刪除操作如此重要的原子句對于刪除操作如此重要的原因所在因所在. 到目前為止,在絕大多數(shù)情況下使用到目前為止,在絕大多數(shù)情況下使用 delete都是為了刪除一條記錄都是為了刪除一條記錄. 在這種情況下,通常會使在這種情況下,通常會使用主鍵作為條件來選定要刪除的行用主鍵作為條件來選

26、定要刪除的行.USE OBXDELETE FROM dbo.ProductWHERE productID=DB8D8D60-76F4-45C3 前面所講的前面所講的 update 命令可以使用命令可以使用 from子句將子句將要更新的表和其它的表連接起來要更新的表和其它的表連接起來, 從而在選擇行的從而在選擇行的時候具有更大的靈活性時候具有更大的靈活性. delete 命令也使用了完全命令也使用了完全相同的技術(shù)相同的技術(shù). 使用這項(xiàng)技術(shù)需要第二個使用這項(xiàng)技術(shù)需要第二個 from 關(guān)鍵關(guān)鍵字字. 但要但要注意注意,與使用,與使用 update 命令的命令的 from 子句子句一樣一樣, dele

27、te 命令的第二個命令的第二個 from 子句也不是子句也不是 ANSI的標(biāo)準(zhǔn)語法的標(biāo)準(zhǔn)語法. 如果如果可移植性可移植性對于你的項(xiàng)目非常重要對于你的項(xiàng)目非常重要的話,應(yīng)該使用子查詢來引用其它的表的話,應(yīng)該使用子查詢來引用其它的表. 關(guān)聯(lián)多表刪除關(guān)聯(lián)多表刪除DELETE ProductFROM dbo.Product JOIN ProductCategory ON Product.ProductCategoryID =ProductCategory.ProductCategoryID WHERE ProductCategoryName=Video 例題例題 參照完整性參照完整性要求,要求, 從表

28、中的行不能引用主表從表中的行不能引用主表中不存在的行中不存在的行. 這意味著如果在某個從表中有記錄這意味著如果在某個從表中有記錄行引用了主表中要刪除的行行引用了主表中要刪除的行, 那么刪除主表中行的那么刪除主表中行的操作就會失敗操作就會失敗. 任何違背參照完整性的刪除操作都會被禁止任何違背參照完整性的刪除操作都會被禁止.要解決這個問題要解決這個問題, 首先必須刪除從表中那些引用了首先必須刪除從表中那些引用了要刪除的主表記錄的行,然后再刪除主表中的行要刪除的主表記錄的行,然后再刪除主表中的行.這稱為這稱為級聯(lián)刪除級聯(lián)刪除.級聯(lián)刪除級聯(lián)刪除 用用 truncate 語句清除表語句清除表 在在 SQ

29、L Server 中提供了一種快速刪除表中所中提供了一種快速刪除表中所有行的非記錄方法有行的非記錄方法. 它比不用它比不用 where 子句的子句的 delete語句要快語句要快. 該語句語法如下:該語句語法如下: TRUNCATE TABLE 例題可參見教科書例題可參見教科書.- 一個帶有一個帶有WHERE條件的修改語句條件的修改語句.UPDATE authorsSET state = PC, city = Bay CityWHERE state = CA AND city = Oakland例題例題1- 通過通過 UPDATE 語句使用來自另一個表的信息,其修改表語句使用來自另一個表的信息

30、,其修改表 titles - 中的中的 ytd_sales 列,以反映表列,以反映表 sales 中的最新銷售記錄中的最新銷售記錄.UPDATE titlesSET ytd_sales = titles.ytd_sales + sales.qtyFROM titles, salesWHERE titles.title_id = sales.title_id AND sales.ord_date = ( SELECT MAX (sales.ord_date) FROM sales ) 例題例題2 寫出寫出 SELECT 語句語句 1 從從 titles 表的表的 title_id, type,

31、advance列中查詢所有的列中查詢所有的 advance 不大于不大于 ¥5500 的的business 類型的書類型的書. 2 從從 titles 表查詢出版日期(表查詢出版日期(pubdate)在)在1/1/1991 12/31/1991 之間的書號之間的書號( title_id ) 和出版日期(和出版日期(pubdate). 練習(xí)練習(xí)【例2.54】新建一張學(xué)生表stu3,表結(jié)構(gòu)與學(xué)生表stu相同,并將表stu中成績在80到90之間的學(xué)生信息寫入表stu3中。INSERT INTO stu3SELECT stu.* FROM score ,stuWHERE score.id =stu.i

32、d AND score between 80 AND 90ORDER BY birthday 更新SQL數(shù)據(jù),使用UPDATE語句,如果不加WHERE子句代表修改該表中的所有記錄。如果修改表中部分記錄,需要使用WHERE子句來限定修改條件?!纠?.55】將表stu中學(xué)號為“20040101024”的學(xué)生姓名改為“馮偉華”。UPDATE score SET name =馮偉華WHERE id=20040101024GOUPDATE stu SET name =馮偉華WHERE id=20040101024GO【例2.57】修改表stu中學(xué)號為“20040102007”的學(xué)生的學(xué)號為“20040102006”,姓名為“范嘉琦”。UPDATE stu SET id=20040102006,name =范嘉琦WHERE id=20040102007GOUPDATE score SET i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論