《SQLServer2005數(shù)據(jù)庫案例教程》第5章DML數(shù)據(jù)操縱語言_第1頁
《SQLServer2005數(shù)據(jù)庫案例教程》第5章DML數(shù)據(jù)操縱語言_第2頁
《SQLServer2005數(shù)據(jù)庫案例教程》第5章DML數(shù)據(jù)操縱語言_第3頁
《SQLServer2005數(shù)據(jù)庫案例教程》第5章DML數(shù)據(jù)操縱語言_第4頁
《SQLServer2005數(shù)據(jù)庫案例教程》第5章DML數(shù)據(jù)操縱語言_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章DML數(shù)據(jù)操縱語言

本章根據(jù)“教學(xué)管理系統(tǒng)”數(shù)據(jù)庫中各表的關(guān)系,介紹增添、更新、刪除記錄的操作。另外,為了便于介紹基于多個表之間數(shù)據(jù)的基本操作,本章在教學(xué)管理系統(tǒng)中新建總評成績表,表中信息如圖5.1所示。圖5.1創(chuàng)建總評成績表5.1增添記錄

數(shù)據(jù)表是數(shù)據(jù)庫存儲數(shù)據(jù)的一種邏輯結(jié)構(gòu),然而表創(chuàng)建之后,往往是一張空表。因此,向表中插入數(shù)據(jù)可能是創(chuàng)建表后的首要操作,即使表中原來有數(shù)據(jù),用戶也可以根據(jù)需要增添數(shù)據(jù)。所以,增添記錄往往與用戶業(yè)務(wù)事件密切關(guān)聯(lián)。本節(jié)主要介紹表中增添記錄的語法格式和增添記錄的基本操作方法。5.1.1實現(xiàn)過程

對數(shù)據(jù)表中的增添記錄的操作,可以通過以下步驟實現(xiàn)(如向成績表中插入一條數(shù)據(jù)):

1.選擇“教學(xué)管理系統(tǒng)”數(shù)據(jù)庫,如不存在先添加該數(shù)據(jù)庫,然后選擇成績表。

2.打開查詢編輯窗口。方法一:右擊數(shù)據(jù)庫中的“成績表”,選擇【編寫表腳本為】選項,彈出二級子菜單選擇【INSERT到】,在彈出的三級子菜單中選擇【新查詢編輯器窗口】,出現(xiàn)如圖5.2所示的窗口。方法二:點擊工具欄中【新建查詢】按鈕,出現(xiàn)查詢編輯窗口,與方法一打開的查詢編輯窗口的區(qū)別是沒有提示性的標(biāo)注。

圖5.2增添數(shù)據(jù)編輯窗口3.在查詢編輯窗口中編寫INSERT語句。如在成績表中增添一條記錄。

4.選擇【執(zhí)行】后,執(zhí)行結(jié)果如圖5.3所示。

圖5.3增添一條記錄5.1.2本節(jié)知識點1.增添記錄語法格式2.增添記錄的規(guī)則(1)插入指定屬性列時,插入數(shù)據(jù)的順序必須與指定列的順序一致。(2)如果INSERT語句違反約束或規(guī)則,或者插入的數(shù)據(jù)與該列定義的數(shù)據(jù)類型不兼容,則插入語句將失敗,并且數(shù)據(jù)庫引擎顯示錯誤消息。(3)字符串類型的值要用單引號括起來。(4)對插入列的類型如果是char、varchar或varbinary,SQLServer2005數(shù)據(jù)庫引擎對尾隨空格的填充或截斷由創(chuàng)建表時為該列定義的SETANSI_PADDING設(shè)置確定。具體的默認(rèn)操作如表5-1所示:

表5-1SQLServer2005數(shù)據(jù)庫引擎對尾隨空格的默認(rèn)操作

(5)如果INSERT語句中使用SELECT語句增添多記錄,那么一旦加載的值出現(xiàn)任何違反規(guī)則或約束的情況,就會導(dǎo)致終止整個語句,且不會加載任何行。3.增添記錄的基本操作1)整行數(shù)據(jù)的插入 【例5.1】在教師表中插入一名新教師的信息。該教師的編號是“10070108”,姓名為“田寧”,性別為“男”,出生日期為1982年9月3日,所在部門為計算機系。 程序清單如下:

--打開教學(xué)管理系統(tǒng)數(shù)據(jù)庫

USE教學(xué)管理系統(tǒng)

GO

--增添一名教師的信息

INSERTINTO教師表數(shù)據(jù)類型默認(rèn)操作char將含有空格的值填充到已定義的列寬。varchar刪除最后非空字符后面的空格,而對于只由空格組成的字符串,一直刪除到只留下一個空格。varbinary刪除尾隨的零。(教工編號,姓名,性別,出生日期,所在部門)

--若對所有字段賦值,此行可以省略

VALUES

('10070108','田寧','男','1982-9-2','計算機系')

GO

SELECT*FROM教師表WHERE姓名='田寧' 運行結(jié)果如圖5.4所示:圖5.4插入整行數(shù)據(jù)示例

2)插入部分?jǐn)?shù)據(jù)

在使用INSERT語句向表中增添記錄,有時某些字段的數(shù)據(jù)是未知的,所以可以對該字段插入空值或默認(rèn)值,但前提是這些列具有允許NULL、TIMESTAMP、INENTITY、DEFAULT四種定義的條件之一,并跳過的列以NULL或默認(rèn)值填充。3)表中增添一條全部是默認(rèn)值的記錄【例5.3】在教師表中增添一條默認(rèn)值記錄程序清單如下:USE教學(xué)管理系統(tǒng)GOINSERTINTO教師表DEFAULTVALUES運行結(jié)果如圖5.6所示:

4)插入多條記錄

在INSERT語句中可以使用子查詢,其作用是將檢索到的結(jié)果插入到同一張表或其它表中,所以可以插入多條記錄,但要插入數(shù)據(jù)列的數(shù)據(jù)類型必須與SELECT查詢返回的數(shù)據(jù)類型相容。

圖5.6使用DEFAULTVALUES子句插入數(shù)據(jù)示例5)基于多張表插入操作

有時在插入記錄時需要從多張表中提取不同數(shù)據(jù),所以就需要多表關(guān)聯(lián)實現(xiàn)復(fù)雜記錄的插入。6)將數(shù)據(jù)插入到帶有標(biāo)識列的表

IDENTITY屬性列的值是單項的,所以在表創(chuàng)建后,不能對該列插入數(shù)據(jù),因為該列是按照規(guī)定自動增長的。但如果在具有IDENTITY屬性列中刪除大量信息,可能造成序號空缺,所以解決這個問題我們可以更改屬性列的插入狀態(tài)解決.【例5.10】在例5.9的基礎(chǔ)上,向T_test表中插入ID為200510,姓名為李斯的記錄程序清單如下:USE教學(xué)管理系統(tǒng)GOSETIDENTITY_INSERTT_testON;--更改屬性列的插入狀態(tài)GOINSERTINTOT_test(ID,name)VALUES(200510,'李斯');GOselect*fromT_test運行結(jié)果如圖5.12所示:

圖5.12手動插入IDENTITY屬性列數(shù)據(jù)的示例5.2更新記錄

數(shù)據(jù)庫是十分重要的數(shù)據(jù)管理工具,所以用戶要求數(shù)據(jù)庫中的的數(shù)據(jù)必須具有實時性和準(zhǔn)確性,如果數(shù)據(jù)庫中過時的數(shù)據(jù)沒有更新,或是錯誤的信息沒有更改,有時會對操作帶來很大的麻煩。所以在一定條件下,我們需要對數(shù)據(jù)進行更新操作,以免影響數(shù)據(jù)庫系統(tǒng)的執(zhí)行可靠性。5.2.1實現(xiàn)過程對數(shù)據(jù)表中的更新記錄的操作,可以通過以下步驟實現(xiàn):

(1)選擇需要更新的數(shù)據(jù)庫,如不存在先附加該數(shù)據(jù)庫,然后選擇需要更新的數(shù)據(jù)表。

(2)打開查詢編輯窗口。

圖5.13更新數(shù)據(jù)操作(3)將查詢編輯窗口中的編寫UPDATE語句。(4)選擇【執(zhí)行】后,完成更新操作。5.2.2本節(jié)知識點1.更新數(shù)據(jù)語法格式2.更新添記錄的規(guī)則

(1)如果對行的更新違反了某個約束或規(guī)則,或違反了對列的NULL設(shè)置,或者新值是不兼容的數(shù)據(jù)類型,則取消該語句、返回錯誤并且不更新任何記錄。

(2)當(dāng)UPDATE語句在表達(dá)式求值過程中遇到算術(shù)錯誤(溢出、被零除或域錯誤)時,則不進行更新。批處理的剩余部分不再執(zhí)行,并且返回錯誤消息。

(3)所有的char和nchar列向右填充至定義長度。3.更新數(shù)據(jù)操作

1)更新一行記錄中的某一列

【例5.11】將課程表中《C程序設(shè)計》的學(xué)分更新為4學(xué)分程序清單如下:USE教學(xué)管理系統(tǒng)GOUPDATE課程表SET學(xué)分=4WHERE課程名='C程序設(shè)計'GOSELECT*FROM課程表WHERE課程名='C程序設(shè)計'運行結(jié)果如圖5.14所示:圖5.14更新一行記錄中的某一列數(shù)據(jù)示例2)更新一行記錄【例5.12】將課程表中的《C程序設(shè)計》的所有信息程序清單如下:USE教學(xué)管理系統(tǒng)GOUPDATE

課程表SET課程編號='704',課程名='C語言程序設(shè)計',學(xué)分=3WHERE課程名='C程序設(shè)計'GoSELECT*FROM課程表WHERE課程編號='704'運行結(jié)果如圖5.15所示:圖5.15更新一行記錄示例3)更新所有記錄中的某一列【例5.13】將課程表內(nèi)所有課程的學(xué)分減少1學(xué)分程序清單如下:USE教學(xué)管理系統(tǒng)UPDATE課程表SET學(xué)分=學(xué)分-1GOSELECT*FROM課程表運行結(jié)果如圖5.16所示:

圖5.16更新所有記錄中的某一列示例4)帶有TOP子句的更新語句【例5.14】將課程表中前5個課程的學(xué)分加1學(xué)分程序清單如下:USE教學(xué)管理系統(tǒng)GOUPDATETOP(5)課程表SET學(xué)分=學(xué)分-1GOSELECT*FROM課程表運行結(jié)果如圖5.17所示:圖5.17帶有TOP子句的更新語句示例5)帶有子查詢的更新語句【例5.15】將教學(xué)管理系統(tǒng)中第一學(xué)期所受課程的學(xué)分均更新為2學(xué)分程序清單如下:USE教學(xué)管理系統(tǒng)GOUPDATE課程表SET學(xué)分=2WHERE課程編號=ANY(select課程編號from授課表where授課學(xué)期='1')GOSELECT*FROM課程表WHERE課程編號=ANY(select課程編號from授課表where授課學(xué)期='1')運行結(jié)果如圖5.18所示圖5.18帶有子查詢的更新語句示例6)帶有FROM子句的更新語句【例5.16】將例5.15用帶有FROM子句改編程序清單如下:USE教學(xué)管理系統(tǒng)GOUPDATE課程表SET學(xué)分=2FROM課程表

askc,授課表asskWHEREkc.課程編號=sk.課程編號andsk.授課學(xué)期='1'運行結(jié)果同圖5.18所示。5.3刪除記錄為了提高數(shù)據(jù)庫的執(zhí)行效率,我們時常要對數(shù)據(jù)庫中的數(shù)據(jù)進行清理,即對數(shù)據(jù)庫中不需要的或重復(fù)的數(shù)據(jù)進行刪除,本節(jié)將介紹數(shù)據(jù)表中記錄的刪除操作。5.3.1實現(xiàn)過程(1)選擇需刪除數(shù)據(jù)的數(shù)據(jù)庫,如不存在先附加數(shù)據(jù)庫,然后選擇需刪除記錄的數(shù)據(jù)表。(2)打開查詢編輯窗口方法一:右擊需刪除記錄的數(shù)據(jù)表,選擇【編寫表腳本為】選項,彈出二級子菜單選擇【DELECT到】,在彈出的三級子菜單中選擇【新查詢編輯器窗口】,選擇后出現(xiàn)如圖5.20所示的窗口。方法二:單擊工具欄中【新建查詢】按鈕,出現(xiàn)查詢編輯窗口,與方法一打開的查詢編輯窗口的區(qū)別是沒有提示性的標(biāo)注。

圖5.20SQLServer管理平臺提供的刪除數(shù)據(jù)操作(3)將查詢編輯窗口中的編寫DELETE語句。(4)選擇【執(zhí)行】后,完成刪除操作。5.3.2本節(jié)知識點1.刪除數(shù)據(jù)語法格式2.

刪除記錄的規(guī)則(1)如果DELETE語句違反了某個約束或規(guī)則,或試圖刪除另一個有FOREIGNKEY約束的表內(nèi)的數(shù)據(jù)被引用行,則可能會失敗。如果DELETE刪除了多行,而在刪除的行中有任何一行違反某個約束或規(guī)則,則將取消該語句,返回錯誤且不刪除任何行。(2)當(dāng)DELETE語句如果存在的算術(shù)錯誤(溢出、被零除或域錯誤)時,數(shù)據(jù)庫引擎將處理這些錯誤。(3)如果要刪除表中的所有行,請使用未指定WHERE子句的DELETE語句,或者使用TRUNCATETABLE。3.刪除數(shù)據(jù)操作1)刪除表中所有記錄刪除表中所有記錄【例5.18】刪除總評成績中所有記錄程序清單如下:USE教學(xué)管理系統(tǒng)GODELETEFROM總評成績GOselect*from總評成績運行結(jié)果如圖5.21所示:圖5.21刪除數(shù)據(jù)表中說有記錄示例2)刪除表中的指定行【例5.19】刪除成績表中成績?yōu)?9分的學(xué)生程序清單如下:USE教學(xué)管理系統(tǒng)GODELETEFROM成績表WHERE成績=89SELECT*FROM成績表運行結(jié)果如圖5.22所示:圖5.22刪除表中的指定行示例3)帶有TOP子句的刪除語句【例5.20】刪除成績表中3.5%的記錄程序清單如下:USE教學(xué)管理系統(tǒng)GODELETETOP(3.5)PER

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論