數(shù)據(jù)庫基礎(chǔ)與實例教程(達夢DM8) 課件 4.2數(shù)據(jù)的插入、刪除和修改_第1頁
數(shù)據(jù)庫基礎(chǔ)與實例教程(達夢DM8) 課件 4.2數(shù)據(jù)的插入、刪除和修改_第2頁
數(shù)據(jù)庫基礎(chǔ)與實例教程(達夢DM8) 課件 4.2數(shù)據(jù)的插入、刪除和修改_第3頁
數(shù)據(jù)庫基礎(chǔ)與實例教程(達夢DM8) 課件 4.2數(shù)據(jù)的插入、刪除和修改_第4頁
數(shù)據(jù)庫基礎(chǔ)與實例教程(達夢DM8) 課件 4.2數(shù)據(jù)的插入、刪除和修改_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)庫基礎(chǔ)(基于達夢DM8)數(shù)據(jù)查詢及管理44.2數(shù)據(jù)的插入、刪除和修改02數(shù)據(jù)的修改01數(shù)據(jù)的插入03掌握WHERE子句用法04數(shù)據(jù)的刪除數(shù)據(jù)的插入4.2.14.2.1數(shù)據(jù)的插入1.INSERT語句

數(shù)據(jù)插入語句INSERT用于向已定義好的表中插入單個或成批的數(shù)據(jù)。

INSERT語句有兩種形式。一種形式是值插入,即構(gòu)造一行或者多行,并將它們插入到表中;另一種形式為查詢插入,它通過<查詢表達式>返回一個查詢結(jié)果集以構(gòu)造要插入表的一行或多行。

無論使用哪一種形式,插入的數(shù)據(jù)都必須符合對應(yīng)列的數(shù)據(jù)類型,且符合相應(yīng)的約束,以保證表中數(shù)據(jù)的完整性。4.2.1數(shù)據(jù)的插入1.INSERT語句

INSERT[INTO][<模式名>.]<表名><[(<列名>{,<列名>})]

VALUES(<插入的列值>{,<插入的列值>})>|

<查詢表達式> --詳見任務(wù)4.3

①<列名>:列名是可以省略的,如果此列表被省略,則在VALUES子句和查詢中必須為表中的所有列指定值,且對應(yīng)值的順序與表結(jié)構(gòu)中列的順序一一對應(yīng);對于選擇部分列的列名作為插入指定的數(shù)據(jù)時,列的順序沒有特定要求,被未被選中的列要滿足相應(yīng)的約束(如允許為空、定義了默認約束、為自增列等),且對應(yīng)的值的順序要與選中列的順序一一對應(yīng);4.2.1數(shù)據(jù)的插入1.INSERT語句

INSERT[INTO][<模式名>.]<表名><[(<列名>{,<列名>})]

VALUES(<插入的列值>{,<插入的列值>})>|

<查詢表達式> --詳見任務(wù)4.3

②<插入的列值>:指明在列名列表中對應(yīng)的列的插入的列值。如果省略了列名列表,插入的列值按照表結(jié)構(gòu)中列的定義順序排列;

4.2.1數(shù)據(jù)的插入1.INSERT語句

INSERT[INTO][<模式名>.]<表名><[(<列名>{,<列名>})]

VALUES(<插入的列值>{,<插入的列值>})>|

<查詢表達式> --詳見任務(wù)4.3

③<查詢表達式>:將一個SELECT語句所返回的記錄插入表中,子查詢中選擇的列表必須和INSERT語句中列名清單中的列具有相同的數(shù)量;帶有<查詢表達式>的插入方式,稱查詢插入。插入中使用的<查詢表達式>也稱為查詢說明。詳細說明見任務(wù)4.3。4.2.1數(shù)據(jù)的插入【案例4-7】通過執(zhí)行SQL語句將下表前6名職工插入數(shù)據(jù)庫中職工表STAFF中。職工號姓名性別年齡電話號碼籍貫部門號3001張童女26023-8888881江西1000013002徐六女25023-8888882安徽1000023003梁一男27023-8888883重慶1000033004劉思女27023-8888884重慶1000013005李厚男26023-8888885山東1000013006梁花女25023-8888886山東1000023007徐瓜女29023-8888887江西1000023008梁東男31023-8888888山西1000033009徐謙女31023-8888889江蘇1000034.2.1數(shù)據(jù)的插入【案例4-7】通過執(zhí)行SQL語句將表4-1前6名職工插入數(shù)據(jù)庫中職工表STAFF中。1)列名列表指定部分列

先通過指定部分列,插入前5名職工。INSERTINTOSCH_FACTORY.STAFF(部門號,姓名,性別,籍貫,年齡,電話號碼)VALUES(100001,'張童','女','江西',26,),(100002,'徐六','女','安徽',25,),(100003,'梁一','男','重慶',27,),(100001,'劉思','女','重慶',27,),(100001,'李厚','男','山東',26,);

4.2.1數(shù)據(jù)的插入【案例4-7】通過執(zhí)行SQL語句將表4-1前6名職工插入數(shù)據(jù)庫中職工表STAFF中。2)不指定列名列表

不指定列名列表來插入第6名職工。INSERTINTOSCH_FACTORY.STAFFVALUES('梁花','女',25,,'山東',100002)數(shù)據(jù)的修改4.2.24.2.2數(shù)據(jù)的修改2.視圖的作用

對于已經(jīng)插入數(shù)據(jù)庫的數(shù)據(jù),時常要根據(jù)實際情況變化的需求、業(yè)務(wù)需求變化的需求或者更正的需求進行修改。UPDATE[<模式名>.]<基表名>SET<列名>=<<值表達式>|DEFAULT>{,<列名>=<<值表達式>|DEFAULT>}[<WHERE子句>]

<WHERE字句>詳見4.2.3。需要特別注意的是,當省略WHERE子句時,表示對所有的行進行相同的修改。一般情況下UPDATE語句都會指定WHERE子句,所以在實際操作中應(yīng)仔細檢驗,避免產(chǎn)生誤操作。4.2.2數(shù)據(jù)的修改【案例4-9】將STAFF表中所有職工的性別都修改為“女”,年齡都修改為35。

UPDATESCH_FACTORY.STAFFSET性別='女',年齡=35;掌握WHERE子句用法4.2.34.2.3掌握WHERE子句用法

WHERE子句用于提取那些滿足指定條件的行,指明操作所作用的行必須符合的條件。如果省略此子句,則相關(guān)操作作用在表或視圖中所有的行。

WHERE字句可以與數(shù)據(jù)修改、數(shù)據(jù)刪除、數(shù)據(jù)查詢等操作結(jié)合使用。4.2.3掌握WHERE子句用法1.比較條件

當使用比較條件時,數(shù)值數(shù)據(jù)根據(jù)它們代數(shù)值的大小進行比較,字符串的比較則按序?qū)ν豁樞蛭恢玫淖址鹨贿M行比較。若兩字符串長度不同,短的一方應(yīng)在其后增加空格,使兩串長度相同后再作比較。

1.比較條件案例UPDATESCH_FACTORY.STAFFSET年齡=40WHERE年齡>30;

【案例4-11】執(zhí)行SQL語句將STAFF表中年齡大于30歲的職工的年齡改為40歲。

此處是WHERE子句在UPDATE語句中發(fā)揮作用,使UPDATE只作用在“年齡”大于30的行。1.比較條件案例UPDATESCH_FACTORY.STAFFSET年齡=31WHERE年齡=40;

【案例4-12】執(zhí)行SQL語句將STAFF表中年齡為40歲的職工的年齡改為31歲。2.邏輯條件

當WHERE子句需要指定較復(fù)雜的查詢條件時,則需要使用邏輯運算符AND、OR和NOT將其連接成復(fù)合的邏輯表達式。

其優(yōu)先級由高到低為:NOT、AND、OR,可以使用括號改變優(yōu)先級。

2.邏輯條件

AND:組合兩個條件,當兩個條件都為真時,組合后的條件為真。OR:組合兩個條件,當兩個條件中有一個條件為真時,組合后的條件為真。NOT:對指定的條件取反。

2.邏輯條件案例UPDATESCH_FACTORY.STAFFSET姓名='張童'WHERE年齡=26AND籍貫='江西';【案例4-13】執(zhí)行SQL語句將STAFF表中年齡為26且籍貫為“江西”的職工的名字修改為“張童”。2.邏輯條件案例UPDATESCH_FACTORY.STAFFSET姓名='梁一一'WHERE職工號=3003OR電話號碼=;【案例4-14】執(zhí)行SQL語句將STAFF表中職工號為3003或電話號碼為的職工的名字改為“梁一一”。2.邏輯條件案例UPDATESCH_FACTORY.STAFFSET姓名='劉思'WHERE姓名=’梁一一’ANDNOT性別='男';【案例4-15】執(zhí)行SQL語句將STAFF表中姓名為“梁一一”且性別不為“男”且的職工名字改為“劉思”。3.范圍條件

在WHERE字句中限定某個取值范圍的數(shù)據(jù)時,除了使用邏輯條件的組合外,還可以使用更加簡便的范圍條件。

3.范圍條件案例UPDATESCH_FACTORY.STAFFSET籍貫='上海'WHERE年齡BETWEEN27AND29;

【案例4-16】執(zhí)行SQL語句將STAFF表中年齡在27(含)-29(含)范圍內(nèi)的職工的籍貫更改為“上?!薄?/p>

從結(jié)果可見,AND關(guān)鍵字左右兩邊的數(shù)值都是包含在范圍內(nèi)的。其結(jié)果等價于。UPDATESCH_FACTORY.STAFFSET籍貫='上海'WHERE年齡>=27AND年齡<=29;4.模糊匹配條件

使用模糊匹配條件的WHERE字句語法如下。WHERE<列名>[NOT]LIKE‘<匹配字符串>’

模糊匹配條件用于對條件不完全確定的情況,如查找所有姓“李”的員工、查找名字包含某個字的項目等。

4.模糊匹配條件

使用模糊匹配條件的WHERE字句語法如下。WHERE<列名>[NOT]LIKE‘<匹配字符串>’

其中,<列名>必須是可以轉(zhuǎn)化為字符類型的數(shù)據(jù)類型的列。為了匹配這種部分確定的條件,<匹配字符串>由確定的字符和“通配符”組成。

4.模糊匹配條件案例UPDATESCH_FACTORY.STAFFSET姓名='徐瓜瓜',籍貫='江西'WHERE姓名LIKE'徐%'AND電話號碼LIKE'%7';

【案例4-17】執(zhí)行SQL語句將STAFF表中姓“徐”且電話號碼以“7”結(jié)束的職工的姓名改為“徐瓜瓜”,籍貫改為“江西”

'徐%'代表以“徐”開頭后方包含任意長度字符的字符串;'%7'代表以“7”結(jié)尾,前方包含任意長度字符的字符串。4.模糊匹配條件案例UPDATESCH_FACTORY.STAFFSET電話號碼=WHERE姓名LIKE'徐__';

【案例4-18】執(zhí)行SQL語句將STAFF表中姓“徐”,且名字為三個字的職工的電話號碼改

'徐__'代表以“徐”開頭后方包含兩個字符的字符串。5.列表條件

如果列取值的范圍不是一個連續(xù)的區(qū)間,可以使用列表條件來實現(xiàn)數(shù)據(jù)行的篩選。其語法形式如下。WHERE列名[NOT]IN(<列表值>)

5.列表條件案例UPDATESCH_FACTORY.STAFFSET部門號=100001WHERE職工號IN(3006,3008,3009);

【案例4-19】執(zhí)行SQL語句將STAFF表中職工號3006、3008、3009的職工的部門調(diào)整至100001。

6.空值判斷條件

空值是未知的值。當列的類型為數(shù)值類型時,NULL并不表示0;當列的類型為字符串類型時,NULL也并不表示空串。因為0和空串也是確定值。NULL只能是一種標識,表示它在當前行中的相應(yīng)列值還未確定或未知。對于空值判斷的語法形式如下。WHERE列名IS[NOT]NULL6.空值判斷條件案例UPDATESCH_FACTORY.MANAGERSET備注='備注2'WHERE備注ISNULL;

【案例4-20】執(zhí)行SQL語句將MANAGER表中備注為空的備注內(nè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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論