




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)庫、表和數(shù)據(jù)操作數(shù)據(jù)庫原理及應(yīng)用基于SQLServer2022(第3版)目錄
目錄
4.1數(shù)據(jù)庫的常用操作
4.2常用的數(shù)據(jù)表操作
4.3數(shù)據(jù)查詢常用操作
4.4數(shù)據(jù)更新常用方法
4.5實(shí)驗(yàn)4數(shù)據(jù)庫、表及數(shù)據(jù)操作4.6本章小結(jié)
教學(xué)目標(biāo)●掌握常用數(shù)據(jù)庫的創(chuàng)建(定義)、修改和刪除操作●熟練掌握常用數(shù)據(jù)表的建立、修改和刪除方法●熟悉常用數(shù)據(jù)查詢的各種方式方法及實(shí)際應(yīng)用●熟練掌握數(shù)據(jù)輸入、修改、插入、刪除等操作●掌握數(shù)據(jù)庫、表及數(shù)據(jù)的常用操作實(shí)驗(yàn)和應(yīng)用教學(xué)目標(biāo)同步實(shí)驗(yàn)(上機(jī))友情提示重點(diǎn)重點(diǎn)重點(diǎn)4.1.1數(shù)據(jù)庫的建立(定義)方法4.1數(shù)據(jù)庫的常用操作1.數(shù)據(jù)庫建立的策劃設(shè)計(jì)
建立(定義)數(shù)據(jù)庫應(yīng)先策劃設(shè)計(jì),主要考慮:(1)數(shù)據(jù)庫擁有/創(chuàng)建者、存取路徑及位置和數(shù)據(jù)庫文件名。(2)相關(guān)的數(shù)據(jù)文件和事務(wù)日志文件的邏輯名、物理名、初始大小、增長(zhǎng)方式及幅度和最大容量(存儲(chǔ)空間大小)等。(3)準(zhǔn)備建立的數(shù)據(jù)庫實(shí)際使用的用戶數(shù)及其使用權(quán)限。(4)數(shù)據(jù)庫存儲(chǔ)空間與存儲(chǔ)設(shè)備配置的匹配和文件組的存放。(5)偶然突發(fā)意外故障時(shí),可以進(jìn)行數(shù)據(jù)庫備份和恢復(fù)。常見的網(wǎng)上購書,實(shí)際上網(wǎng)站需要建立一個(gè)售書數(shù)據(jù)庫,并在其內(nèi)建立客戶、圖書、銷售、庫存等數(shù)據(jù)表并輸入相應(yīng)的數(shù)據(jù),便于客戶查詢、訂書及增刪改等操作。可見數(shù)據(jù)庫是存儲(chǔ)和處理數(shù)據(jù)的重要基礎(chǔ)和條件,數(shù)據(jù)庫的建立實(shí)際上是在指定位置構(gòu)建一個(gè)存儲(chǔ)空間,用于在數(shù)據(jù)庫內(nèi)建立數(shù)據(jù)表(結(jié)構(gòu))并按輸入、存儲(chǔ)、處理和傳輸相關(guān)的圖書數(shù)據(jù)。案例4-1
說明:為了避免建立數(shù)據(jù)庫時(shí),出現(xiàn)疏忽需要先策劃。主要是為了后續(xù)存放同類相關(guān)的多個(gè)業(yè)務(wù)數(shù)據(jù)表(及數(shù)據(jù))準(zhǔn)備一個(gè)存儲(chǔ)空間。數(shù)據(jù)庫主要由數(shù)據(jù)庫名、擁有者的用戶名或賬號(hào)、存儲(chǔ)路徑和位置等確定。
2.數(shù)據(jù)庫建立的常用方法(1)建立數(shù)據(jù)庫的SSMS菜單操作
登錄SQLServer2022,打開SSMS(SQLServerManagementStudio)界面和菜單,用鼠標(biāo)點(diǎn)擊操作建立(定義)數(shù)據(jù)庫,可以通過實(shí)例說明。4.1數(shù)據(jù)庫的常用操作
建立一個(gè)存放高等院校二級(jí)學(xué)院基本信息的數(shù)據(jù)庫School。在SSMS的可視化界面下,利用鼠標(biāo)點(diǎn)擊菜單操作的步驟為:先啟動(dòng)SQLServer并連接,在“對(duì)象資源管理器”選中“數(shù)據(jù)庫”項(xiàng)并右擊出現(xiàn)“快捷菜單”,如圖4-1所示。在快捷菜單中單擊“新建數(shù)據(jù)庫”之后,出現(xiàn)“新建數(shù)據(jù)庫”的界面,如圖4-2所示,然后按照要求進(jìn)行填寫。案例4-2圖4-1創(chuàng)建數(shù)據(jù)庫的快捷菜單
圖4-2新建數(shù)據(jù)庫的界面
在“新建數(shù)據(jù)庫”的對(duì)話框中,將數(shù)據(jù)庫名稱輸入為School,保留其他參數(shù)為默認(rèn)。最后單擊“確定”,返回“資源管理器”刷新后即可看到新建的數(shù)據(jù)庫School。4.1數(shù)據(jù)庫的常用操作(2)建立數(shù)據(jù)庫的SQL語句方法
數(shù)據(jù)庫建立(定義)命令語句的語法格式為:CREATEDATABASE<數(shù)據(jù)庫名>[AUTHORIZATION<用戶名>][ON[PRIMARY](路徑/文件大小)]
說明:(1)“數(shù)據(jù)庫名”是用戶建立數(shù)據(jù)庫文件名。(2)AUTHORIZATION選項(xiàng)用于設(shè)定數(shù)據(jù)庫擁有者(默認(rèn)登錄者),可授權(quán)給指定用戶。(3)ON[PRIMARY](路徑/文件大小)選項(xiàng),主要用于設(shè)定新建立數(shù)據(jù)庫存放的位置及文件初始容量。
注意:新建數(shù)據(jù)庫的擁有者系統(tǒng)默認(rèn)(首次新建無指定)為登錄的注冊(cè)人,存儲(chǔ)路徑(位置)默認(rèn)為當(dāng)前盤及當(dāng)前路徑。<>必選項(xiàng)[]可選項(xiàng)4.1數(shù)據(jù)庫的常用操作4.1數(shù)據(jù)庫的常用操作
建立一個(gè)“圖書銷售”數(shù)據(jù)庫,主要數(shù)據(jù)文件為圖書銷售。數(shù)據(jù)庫擁有者為李杰,存儲(chǔ)位置為F:\數(shù)據(jù)庫\圖書銷售.mdf。CREATEDATABASE圖書銷售AUTHORIZATION李杰ON(NAME=圖書銷售,FILENAME=''F:\數(shù)據(jù)庫\圖書銷售.mdf');案例4-34.1.2數(shù)據(jù)庫的打開、切換和關(guān)閉1.數(shù)據(jù)庫的打開使用
在實(shí)際應(yīng)用中,當(dāng)?shù)卿汼QLServer服務(wù)器并連接后,都需要先打開數(shù)據(jù)庫,然后才能操作(使用)數(shù)據(jù)庫及其中的數(shù)據(jù)表、數(shù)據(jù)、視圖等操作對(duì)象。打開數(shù)據(jù)庫的語法格式為:USE[<數(shù)據(jù)庫名>]
說明:(1)必須先打開指定數(shù)據(jù)庫之后,才能操作此數(shù)據(jù)庫的對(duì)象(數(shù)據(jù)表、視圖、索引等)及其有關(guān)數(shù)據(jù)等。(2)“數(shù)據(jù)庫名”為在指定位置打開的數(shù)據(jù)庫(文件)名。4.1數(shù)據(jù)庫的常用操作4.1.2數(shù)據(jù)庫的打開、切換和關(guān)閉2.數(shù)據(jù)庫的切換/關(guān)閉
數(shù)據(jù)庫的切換/關(guān)閉SQL的語法格式為:USE[<數(shù)據(jù)庫名>]
說明:(1)“數(shù)據(jù)庫名”為所切換(另打開數(shù)據(jù)庫)或關(guān)閉的數(shù)據(jù)庫名。(2)切換是指在已經(jīng)打開某個(gè)數(shù)據(jù)庫的情況下,再打開另一其他數(shù)據(jù)庫時(shí)(當(dāng)前打開的數(shù)據(jù)庫),同時(shí)關(guān)閉原數(shù)據(jù)庫的過程。一個(gè)工作區(qū)只能打開一個(gè)數(shù)據(jù)庫。4.1數(shù)據(jù)庫的常用操作4.1.3數(shù)據(jù)庫修改的操作在應(yīng)用中,數(shù)據(jù)庫修改的操作主要涉及兩個(gè)方面:修改數(shù)據(jù)庫的名稱、修改大小(修改其數(shù)據(jù)文件的大小)。修改操作方法有兩種:利用SSMS修改或使用SQL語句修改。1.數(shù)據(jù)庫修改的SSMS菜單操作圖4-3利用SSMS修改數(shù)據(jù)庫界面4.1數(shù)據(jù)庫的常用操作2.數(shù)據(jù)庫修改的SQL語句方法利用SQL語句修改數(shù)據(jù)庫的基本語法格式為:
ALTERDATABASE<數(shù)據(jù)庫名>
MODIFYNAME|FILE=<新數(shù)據(jù)庫名/文件名>
注意:數(shù)據(jù)庫修改方法及注意問題,參照知識(shí)拓展“修改數(shù)據(jù)庫時(shí)需要注意的問題”。(1)修改數(shù)據(jù)庫名稱的操作方法修改數(shù)據(jù)庫的名稱的操作的基本語法格式為:
ALTERDATABASE<原數(shù)據(jù)庫名>
MODIFYNAME=<新數(shù)據(jù)庫名>4.1數(shù)據(jù)庫的常用操作*(2)修改數(shù)據(jù)庫容量。實(shí)際上是修改數(shù)據(jù)庫中具體數(shù)據(jù)文件的大小,其常用操作的基本語法格式為:
ALTERDATABASE<數(shù)據(jù)庫名>
MODIFYFILE ( name=‘邏輯名’,size=修改后的大小,maxsize=修改后的最大容量(大小), filegrowth=新的增長(zhǎng)方式)
注意:用于修改mdf,ndf,ldf文件大小,修改后大小應(yīng)大于原初始大小,否則無法保存數(shù)據(jù).若超過原最大容量(maxsize)則maxsize更新為修改后的大小.4.1數(shù)據(jù)庫的常用操作
將數(shù)據(jù)庫“圖書銷售”文件名更改為“商品銷售”。
ALTERDATABASE
圖書銷售
(存儲(chǔ)位置略)
MODIFYNAME=商品銷售案例4-4
注意:修改數(shù)據(jù)庫容量的操作需要注意:1)具有建立數(shù)據(jù)庫權(quán)限者,才能執(zhí)行修改命令。此命令可更改數(shù)據(jù)庫名稱、增加或刪除數(shù)據(jù)庫中的文件(組),也可改文件(組)屬性。2)為了防止文件中信息被損壞,文件容量只能增加。3)主要用于修改mdf、ndf、ldf文件容量,修改后的容量應(yīng)當(dāng)大于原初始容量,否則無法保存數(shù)據(jù)。若超過最大容量將會(huì)更新為修改后容量。4.1數(shù)據(jù)庫的常用操作4.1.4數(shù)據(jù)庫刪除的操作
數(shù)據(jù)庫刪除的方法有兩種:利用SSMS刪除或使用SQL語句刪除。
1.數(shù)據(jù)庫刪除的SSMS菜單方法
用界面菜單刪除數(shù)據(jù)庫的步驟:“對(duì)象資源管理器”中展開“數(shù)據(jù)庫”,選擇數(shù)據(jù)庫,右鍵選擇“刪除”,在打開“刪除對(duì)象”窗口,確定要?jiǎng)h除的數(shù)據(jù)庫,選擇“關(guān)閉現(xiàn)有連接”復(fù)選框確定刪除備份及關(guān)閉已存在數(shù)據(jù)庫連接.
圖4-4利用SSMS刪除數(shù)據(jù)庫界面4.1數(shù)據(jù)庫的常用操作
2.數(shù)據(jù)庫刪除的SQL語句方法
利用SQL語句刪除數(shù)據(jù)庫的語法格式為:
DROPDATABASE<數(shù)據(jù)庫名>
說明:
(1)只有處于關(guān)閉狀態(tài)下的數(shù)據(jù)庫,才能使用DROP語句刪除,當(dāng)數(shù)據(jù)庫打開正在使用,或數(shù)據(jù)庫正在恢復(fù)等狀態(tài)時(shí)不可被刪除。(2)執(zhí)行刪除數(shù)據(jù)庫的SQL命令后,數(shù)據(jù)庫及其數(shù)據(jù)表、視圖等對(duì)象將全部被刪除。
討論思考(1)數(shù)據(jù)庫的建立和修改SQL命令有哪些?(2)數(shù)據(jù)庫的打開、切換和關(guān)閉命令及用法?(3)數(shù)據(jù)庫刪除命令及方式,具體有哪幾種?4.1數(shù)據(jù)庫的常用操作
刪除“圖書銷售”數(shù)據(jù)庫。DROPDATABASE
圖書銷售
(此后存儲(chǔ)位置略)案例4-5
注意:刪除數(shù)據(jù)庫一定慎重.刪除前請(qǐng)做好備份,以免誤刪除。4.2.1數(shù)據(jù)表建立的操作方法數(shù)據(jù)庫中的數(shù)據(jù)表主要用于存儲(chǔ)數(shù)據(jù),通常可以根據(jù)需要建立幾個(gè)相關(guān)的數(shù)據(jù)表(結(jié)構(gòu)),已利于用輸入、存儲(chǔ)和處理相關(guān)數(shù)據(jù)。在建立表(結(jié)構(gòu))前需要先:表(結(jié)構(gòu))的列(屬性)及名稱、存放數(shù)據(jù)的類型、寬度策劃(設(shè)計(jì))、小數(shù)位數(shù)、主鍵和外鍵等。
數(shù)據(jù)表的建立(定義)操作方法有兩種:
1.數(shù)據(jù)表建立的菜單操作方法
數(shù)據(jù)基本表的創(chuàng)立,也稱為數(shù)據(jù)庫基本表定義.用SSMS界面菜單創(chuàng)建表:下面結(jié)合具體應(yīng)用實(shí)例,概述操作方法。4.2常用的數(shù)據(jù)表操作產(chǎn)品ID名稱品牌型號(hào)價(jià)格…………18.65…產(chǎn)地,企業(yè)ID..圖4-5利用SSMS創(chuàng)建表的界面4.2常用的數(shù)據(jù)表操作增刪改:對(duì)于已建的表,可以輸入、修改、刪除其中數(shù)據(jù)。
在School數(shù)據(jù)庫中,建立可以保存學(xué)生信息的表(結(jié)構(gòu))Student。在可視化界面SSMS下,右擊表出現(xiàn)“快捷菜單”,在快捷菜單中選擇“新建表”,如圖4-5所示.案例4-6
點(diǎn)擊“新建表”后,出現(xiàn)如圖4-6所示的“設(shè)計(jì)表結(jié)構(gòu)”界面,可依據(jù)實(shí)際業(yè)務(wù)數(shù)據(jù)需求考慮(設(shè)計(jì)),輸入列名(屬性名,即字段名)、擬存放數(shù)據(jù)的類型、寬度、小數(shù)位數(shù)等設(shè)計(jì)完成表(結(jié)構(gòu))。圖4-6設(shè)計(jì)表結(jié)構(gòu)的界面輸入列名4.2數(shù)據(jù)表的常用操作
建表完成后右擊“Id”項(xiàng),可將其設(shè)置為主鍵,用于唯一確定指定記錄且可快速查詢,對(duì)以后數(shù)據(jù)操作很重要.如圖4-7.圖4-7設(shè)置主鍵的界面
注意:設(shè)置主鍵后,Id前面會(huì)將出現(xiàn)小鑰匙圖標(biāo)。在“標(biāo)識(shí)規(guī)范”中的“標(biāo)識(shí)”選擇“是”,可以設(shè)置主鍵自增長(zhǎng)方法。4.2數(shù)據(jù)表的常用操作
2.數(shù)據(jù)表建立的命令語句方法
數(shù)據(jù)表建立(定義)操作,主要是構(gòu)建數(shù)據(jù)表的結(jié)構(gòu)(屬性列),使用SQL語言建立數(shù)據(jù)表結(jié)構(gòu)的語句格式:
CREATETABLE<基本表名>(<列名1><列數(shù)據(jù)類型>[列完整性約束],<列名2><列數(shù)據(jù)類型>[列完整性約束],
……[表級(jí)完整性約束])
說明:(1)“數(shù)據(jù)表名”是指新建的數(shù)據(jù)表名,注意在同一個(gè)數(shù)據(jù)庫中不允許有兩個(gè)表名同。(2)“列名”是指該列(屬性)的名稱。一個(gè)表中不能有兩列同名。(3)“列數(shù)據(jù)類型”是指該列將存儲(chǔ)數(shù)據(jù)的類型。如單價(jià)為數(shù)值型。4.2數(shù)據(jù)表的常用操作(4)“列完整性約束”是指對(duì)數(shù)據(jù)表的列(屬性)設(shè)定的約束條件。
常用的列(級(jí))完整性約束條件有5種:
①
PRIMARYKEY:主鍵約束用于唯一地標(biāo)識(shí)表中的各行,主鍵約束列值不能為NULL,同時(shí)也不能與其他行的列值有重復(fù),以免造成無法唯一標(biāo)識(shí)行。實(shí)際上是非空約束與唯一性約束的合并。②UNIQUE約束:設(shè)置該列只存放唯一(不重復(fù))的屬性值。。③NOTNULL與NULL約束:分別確定該列值不為空或?yàn)榭铡"蹹EFAULT約束:默認(rèn)約束指該列在未定義時(shí)的默認(rèn)取值。⑤CHECK約束:檢查約束可以通過約束條件表達(dá)式設(shè)置其列值應(yīng)當(dāng)滿足的具體條件(要求)。如,只能輸入正數(shù)等。(5)“表級(jí)完整性約束”:主要用于規(guī)定數(shù)據(jù)表的主鍵、外鍵和用戶自定義完整性約束(具體要求及條件)。鏈接網(wǎng)站動(dòng)畫視頻4.2數(shù)據(jù)表的常用操作CREATETABLE圖書(圖書編號(hào)CHAR(4)NOTNULLUNIQUE,圖書名VARCHAR(50)NOTNULL,出版社VARCHAR(50)NULL,價(jià)格DECIMAL(6,2)NOTNULL,出版時(shí)間CHAR(20)NULL,);CREATETABLE售書網(wǎng)站(網(wǎng)站編號(hào)CHAR(6),名稱VARCHAR(50)NOTNULL,所在城市CHAR(8)NOTNULL,成立時(shí)間DATETIME,PRIMARYKEY(網(wǎng)站編號(hào)));CREATETABLE售書(圖書編號(hào)CHAR(4),售書網(wǎng)站編號(hào)CHAR(6),數(shù)量INT,PRIMARYKEY(圖書編號(hào),網(wǎng)站編號(hào)),F(xiàn)OREIGNKEY(圖書編號(hào))REFERENCES圖書(圖書編號(hào)),F(xiàn)OREIGNKEY(網(wǎng)站編號(hào))REFERENCES售書網(wǎng)站(網(wǎng)站編號(hào)),);4.2數(shù)據(jù)表的常用操作在“圖書銷售”數(shù)據(jù)庫中,用SQL語言建立(定義)三個(gè)表,三個(gè)數(shù)據(jù)表的關(guān)系模式如下所示:圖書(圖書編號(hào),圖書名,出版社,作者,價(jià)格,出版時(shí)間);售書網(wǎng)站(網(wǎng)站編號(hào),名稱,所在城市,成立時(shí)間);售書(圖書編號(hào),網(wǎng)站編號(hào),數(shù)量)。案例4-74.2.2數(shù)據(jù)表的修改和刪除1.數(shù)據(jù)表修改的操作在數(shù)據(jù)庫建立數(shù)據(jù)表之后,可能出現(xiàn)業(yè)務(wù)及數(shù)據(jù)需要變更情況,應(yīng)對(duì)數(shù)據(jù)表(結(jié)構(gòu))及時(shí)修改,操作方法有三種:增加新的列、刪除原某列、修改原某列的數(shù)據(jù)類型。
修改表結(jié)構(gòu)的語法格式為:
ALTERTABLE<基本表名>[ADD<新列名><列數(shù)據(jù)類型>[列完整性約束]][DROPCOLUMN<列名>[ALTERCOLUMN<列名><列數(shù)據(jù)類型>]4.2數(shù)據(jù)表的常用操作
說明:(1)ADD選項(xiàng)可在指定的數(shù)據(jù)表中增加新的列(屬性),要求滿足指定的“列數(shù)據(jù)類型”和“列完整性約束”的具體條件。(2)DROPCOLUMN選項(xiàng)用于刪除指定原數(shù)據(jù)表的列。(3)ALTER選項(xiàng)用于修改原有列,應(yīng)滿足“列數(shù)據(jù)類型”等要求。4.2數(shù)據(jù)表的常用操作4.2數(shù)據(jù)表的常用操作在售書網(wǎng)站的數(shù)據(jù)表中對(duì)圖書增加一評(píng)價(jià)列。ALTERTABLE售書網(wǎng)站ADD評(píng)價(jià)VARCHAR(50);【案例4-在圖書數(shù)據(jù)表中刪除出版時(shí)間列。ALTERTABLE圖書DROPCOLUMN出版時(shí)間;
在圖書數(shù)據(jù)表中,修改數(shù)據(jù)表的“出版社地址”列的數(shù)據(jù)類型為VARCHAR(22)。ALTERTALBE圖書ALTERCOLUMN
所在出版社地址VARCHAR(22)
注意:新增加的列(屬性)不可定義為“NOTNULL”。不管原來數(shù)據(jù)表中是否已有數(shù)據(jù),新增加的列一定為空值(NULL)。
注意:一定要慎重修改,修改原有列(含數(shù)據(jù)類型)之后,可能改變?cè)屑s束條件或破壞原有數(shù)據(jù)類型等。案例4-8案例4-9案例4-10
2.數(shù)據(jù)表刪除的操作方法在企事業(yè)的業(yè)務(wù)拓展變化或數(shù)據(jù)表過時(shí)淘汰,不再保留某個(gè)數(shù)據(jù)表時(shí),可以根據(jù)實(shí)際需要備份后將其刪除。
常用的數(shù)據(jù)表刪除的語法格式為:DROPTABLE<數(shù)據(jù)表名>
說明:
刪除數(shù)據(jù)表的操作應(yīng)慎重,以防誤刪最好留有備份。
刪除指定數(shù)據(jù)表的同時(shí),表中的所有數(shù)據(jù)連及建立的索引都將一起被刪除,而系統(tǒng)將保留該表上的視圖定義,但不可使用。4.2數(shù)據(jù)表的常用操作
說明:上述各種操作都以SQL的命令語句方式為重點(diǎn)。若采用SSMS界面菜單方式打開、修改或刪除表的操作與前述基本類似。(1)數(shù)據(jù)表的定義(建立)操作是哪兩種方法?(2)數(shù)據(jù)表結(jié)構(gòu)修改四種方法的語句分別是什么?(3)舉例說明怎樣具體刪除一個(gè)指定的數(shù)據(jù)表?
討論思考4.2數(shù)據(jù)表的常用操作
刪除圖書數(shù)據(jù)庫中計(jì)算機(jī)表,并同時(shí)刪除相關(guān)的視圖和索引等相關(guān)對(duì)象。DROPTABLE計(jì)算機(jī)
案例4-114.3數(shù)據(jù)查詢常用操作
數(shù)據(jù)查詢是計(jì)算機(jī)管理數(shù)據(jù)庫的重要應(yīng)用之一,是數(shù)據(jù)庫應(yīng)用的核心功能。數(shù)據(jù)查詢或查詢數(shù)據(jù)是指從指定數(shù)據(jù)表中通過篩選得到滿足條件數(shù)據(jù)(記錄)的過程。在此介紹語句查詢方法。4.3.1數(shù)據(jù)查詢語句及用法
數(shù)據(jù)查詢常用的SQL語句的語法格式為:
SELECT[ALL|DISTINCT]表列名或列表達(dá)式[,表列名或列表達(dá)式]…
FROM<表名或視圖名>[,表名或視圖名]…
[WHERE<條件表達(dá)式>][GROUPBY列名[HAVING組條件表達(dá)式]][ORDERBY列名[ASC|DESC],...]退出
說明:在數(shù)據(jù)查詢過程中,需要準(zhǔn)確運(yùn)用有關(guān)操作語句。
1)ALL選項(xiàng)(為默認(rèn)選項(xiàng))可以顯示滿足查詢條件的全部記錄,DISTINCT選項(xiàng)使查詢的結(jié)果只含不同記錄,取消后面其他相同的記錄。2)用“*”選項(xiàng)將顯示數(shù)據(jù)表中全部字段的滿足查詢條件的所有查詢記錄
3)從FROM子句指定的表或視圖中,篩選出滿足“條件表達(dá)式”的記錄,再按SELECT子句中的表的列名或列表達(dá)式,選取出記錄中的列(屬性)值形成最后的結(jié)果。4)WHERE子句中用“條件表達(dá)式”確定查詢的條件,常用的查詢條件和謂詞如表4-1所示表4-1WHERE子句常用的查詢條件查詢條件謂詞比較(比較運(yùn)算符)=,>,<,>=,<=,!=,<>,!>,!<;NOT+比較運(yùn)算符確定范圍BETWEENaANDb,NOTBETWEENaANDb確定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重條件(邏輯謂詞)AND,OR表4-12WHERE子句常用的查詢條件4.3數(shù)據(jù)查詢常用操作
WHERE子句中的條件表達(dá)式作用于數(shù)據(jù)表中的記錄,不同于HAVING子句中的條件表達(dá)式。HAVING子句中的條件表達(dá)式作用于分組后的查詢結(jié)果。
5)GROUPBY子句,將查詢結(jié)果按指定選取列(名)值分組,該屬性列值相同的記錄為一個(gè)組,各組產(chǎn)生結(jié)果表中的一條記錄。6)HAVING子句出現(xiàn)在GROUPBY子句之后,其作用是將分組后的查詢結(jié)果中不滿足“組條件表達(dá)式”的記錄去掉。常在每組中用聚合函數(shù)完成計(jì)算個(gè)數(shù)、求和或求平均等統(tǒng)計(jì)任務(wù)。7)ORDERBY子句,使查詢結(jié)果對(duì)指定的列值按升降次序排列,其中,ASC(或默認(rèn)無選項(xiàng))選項(xiàng)為升序,DESC為降序。*說明:數(shù)據(jù)查詢結(jié)果等價(jià)于關(guān)系代數(shù)中按照條件選擇運(yùn)算后投影4.3數(shù)據(jù)查詢常用操作查詢出版“數(shù)據(jù)庫原理及應(yīng)用”圖書的出版社。SELECTDISTINCT出版社FROM圖書WHERE書名=’數(shù)據(jù)庫原理及應(yīng)用’案例4-124.3.2條件查詢和模糊查詢?cè)谑褂肧ELECT語句進(jìn)行查詢操作時(shí),應(yīng)注意一些條件限定。1.輸出查詢結(jié)果的數(shù)據(jù)輸出查詢(篩選)結(jié)果的表結(jié)構(gòu)和數(shù)據(jù)的方法:①當(dāng)指定表的列名或列表達(dá)式前加DISTINCT選項(xiàng)時(shí),在輸出滿足“條件”的查詢結(jié)果表中只出現(xiàn)(相同)重復(fù)記錄的首記錄。②“列表達(dá)式”可指定單列求聚合值的表達(dá)式,或用加減乘除及列名、常數(shù)等算術(shù)表達(dá)式。在2.5.4中介紹過聚合函數(shù),常用的如表4-2所示,利用GROUPBY子句可對(duì)查詢結(jié)果數(shù)據(jù)分組。聚合函數(shù)功能說明COUNT(*)統(tǒng)計(jì)記錄的個(gè)數(shù),如人數(shù)、客戶數(shù)等COUNT(列名)對(duì)一列中的值計(jì)算個(gè)數(shù),如貨物件數(shù)等SUM(列名)求某一列值的總和(以下列必須是數(shù)值型)AVG(列名)求某一列值的平均值(同上)MAX(列名)求某一列值的最大值MIN(列名)求某一列值的最小值表4-13聚合函數(shù)4.3數(shù)據(jù)查詢常用操作表4-2常用的聚合函數(shù)③“*”號(hào)用于輸出FROM子句中表或視圖的所有列的查詢數(shù)據(jù)。④當(dāng)在結(jié)果表中輸出的列名與表或視圖的列名不一致時(shí),可用“舊名[AS]新名”的形式改名。使用時(shí)AS也可省略。4.3數(shù)據(jù)查詢操作
在圖書銷售數(shù)據(jù)庫中,查詢各售書網(wǎng)站銷售圖書的數(shù)量。在查詢結(jié)果表中,圖書數(shù)量顯示的列名為“數(shù)量”。USE圖書銷售(后續(xù)案例此語句暫略)SELECT售書網(wǎng)站編號(hào),COUNT(*)AS數(shù)量FROM售書GROUPBY售書網(wǎng)站編號(hào)案例4-14
查詢所有售書網(wǎng)站的編號(hào)、名稱和成立年限。SELECT售書網(wǎng)站編號(hào),名稱,2023-成立時(shí)間AS成立年限FROM售書網(wǎng)站注意:如果在FROM子句中多次引用同一個(gè)數(shù)據(jù)表時(shí),可用AS增加別名進(jìn)行區(qū)分,具體使用格式為:AS別名。案例4-13
2.條件查詢方法
條件查詢是指在SELECT語句中使用WHERE<條件表達(dá)式>子句的查詢方式。常見的條件查詢方法有:比較條件查詢、謂詞條件查詢和其他條件查詢方法。(1)比較條件查詢比較條件查詢方法主要在WHERE<條件表達(dá)式>子句中的“條件表達(dá)式”采用比較運(yùn)算符:=、<、>、>=、<=、!=、<>、!>、!<等。例如:where專業(yè)=‘網(wǎng)絡(luò)工程’;where年齡>20and年齡<=25。4.3數(shù)據(jù)查詢操作
查詢圖書的書價(jià)小于86元的《數(shù)據(jù)庫原理及應(yīng)用》圖書的基本信息。SELECT*FROM圖書WHERE書名=‘?dāng)?shù)據(jù)庫原理及應(yīng)用’and價(jià)格<86;案例4-154.3數(shù)據(jù)查詢操作
查詢價(jià)格在68元到86元之間的“網(wǎng)絡(luò)安全技術(shù)及應(yīng)用”圖書的有關(guān)基本信息。SELECT*FROM圖書WHERE價(jià)格BETWEEN68AND86AND書名=‘網(wǎng)絡(luò)安全技術(shù)及應(yīng)用’;案例4-16(2)謂詞條件查詢常用的謂詞條件查詢方法,主要有兩種:①指定范圍查詢。“條件表達(dá)式”使用謂詞BETWEEN...AND...,在指定范圍內(nèi)篩選出使“表達(dá)式值”為真的數(shù)據(jù)(記錄)。常用語法格式:<表達(dá)式>[not]betweenAandB。其中,A是范圍的下限(即低值),B是范圍的上限(即高值)。例如:where年齡between20and25;where任職時(shí)間notbetween10and15;4.3數(shù)據(jù)查詢操作
查詢售書網(wǎng)站所在地為上海或廣東的信息。SELECT*FROM售書網(wǎng)站W(wǎng)HERE所在城市IN(’上海’,‘廣東’)案例4-17②屬于(包含)查詢。指“條件表達(dá)式”中用特殊運(yùn)算符IN表示判斷屬性值是否屬于(包含)某個(gè)集合(為其中的元素)。也可用NOTIN表示判斷屬性值不屬于某個(gè)集合(不是其中的元素)。如:where專業(yè)in(‘財(cái)務(wù)會(huì)計(jì)’,’電子商務(wù)’,‘金融工程’)注意:謂詞BETWEEN...AND...常用于數(shù)值型數(shù)據(jù)和日期型數(shù)據(jù)的范圍表示。【案例4-18
對(duì)圖書數(shù)據(jù)表,查詢沒有填寫作者信息的具體數(shù)據(jù)(記錄)便于填寫。SELECT*FROM圖書
WHERE作者ISNULL4.3數(shù)據(jù)查詢操作③空值數(shù)據(jù)查詢。指定條件為ISNULL和ISNOTNULL查詢。空值表示沒有(暫時(shí)沒定或沒填寫)其值,以符號(hào)NULL表示,既不是零,也不是長(zhǎng)度為零的字符串。如,在圖書表中某些圖書的出版社不詳,暫時(shí)沒填寫就是空值NULL常用空值數(shù)據(jù)查詢語句格式:<表達(dá)式>IS[NOT]NULL
注意:上述中的NULL前面“IS”不可用等號(hào)“=”進(jìn)行代替,如出版社=NULL會(huì)出現(xiàn)錯(cuò)誤,將無法得到結(jié)果。案例4-18【案例4-19】
查詢已經(jīng)填寫出版社信息的圖書信息。
SELECT*
FROM圖書
WHERE出版社ISNOTNULL案例4-19【案例4-20】查詢售書數(shù)據(jù)表,統(tǒng)計(jì)圖書銷售總量大于等于200的售書網(wǎng)站編號(hào)及其銷售圖書的總數(shù)量。SELECT售書網(wǎng)站編號(hào),SUM(數(shù)量)AS銷售總量FROM售書GROUPBY售書網(wǎng)站編號(hào)HAVINGSUM(數(shù)量)>=200;4.3數(shù)據(jù)查詢操作案例4-20
(3)統(tǒng)計(jì)查詢
在對(duì)數(shù)據(jù)庫進(jìn)行查詢時(shí),人們經(jīng)常會(huì)碰到需要對(duì)數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行分組統(tǒng)計(jì)的任務(wù)。解決分組統(tǒng)計(jì)問題需要在查詢語句中加入GROUPBY子句,并輔以聚合函數(shù)和HAVING子句。
注意:在帶GROUPBY子句的SQL查詢中,SELECT語句中列表達(dá)式必須包含出現(xiàn)在聚合函數(shù)、以及GROUPBY子句中的屬性列,即SELECT語句中的目標(biāo)列表達(dá)式必須包含分組標(biāo)簽。3.模糊查詢方法模糊查詢是指對(duì)滿足局部匹配條件的查詢方式。實(shí)際是一種特殊的條件查詢,主要是利用字符串匹配比較篩選數(shù)據(jù)結(jié)果。
在“條件表達(dá)式”中,字符串匹配采用LIKE操作符語法格式:
<列名>[NOT]LIKE<字符串常數(shù)>[ESCAPE<轉(zhuǎn)義字符>]
說明:格式中的<字符串常數(shù)>主要使用以下兩個(gè)通配符:①%(百分號(hào))。表示任意長(zhǎng)度(含0)的字符串。如a%b表示以a開頭且以b結(jié)尾的任意長(zhǎng)度的字符串。如ab、akb、akdcgb等都滿足該匹配字符串。②_(下劃線)。表示任意一個(gè)單字符。如a_b表示以a開頭,以b結(jié)尾的長(zhǎng)度為3的任意字符串。如acb,afb等都滿足該匹配串。
注意:ESCAPE’\’短語中的“\”表示換碼字符,此時(shí)匹配串中緊跟在“\”后面的字符“_”不再具有通配符的含義,轉(zhuǎn)義為原“_”字符。4.3數(shù)據(jù)查詢操作4.3數(shù)據(jù)查詢操作
查詢所有銷售“大學(xué)英語”圖書的售書網(wǎng)站的售書網(wǎng)站編號(hào)和圖書名的信息。SELECT售書網(wǎng)站編號(hào),書名FROM售書,圖書WHERE售書.圖書編號(hào)=圖書.圖書編號(hào)AND圖書.書名LIKE‘%大學(xué)英語%’案例4-214.3.3排序查詢、連接查詢和嵌套查詢?cè)诰唧w應(yīng)用中,SELECT語句可以形成靈活查詢語句。下面通過案例說明SELECT語句的功能.下面結(jié)合案例說明排序查詢、多表連接查詢和嵌套查詢的方法。1.?dāng)?shù)據(jù)排序查詢數(shù)據(jù)排序查詢主要是指在查詢語句中,利用ORDERBY排序子句對(duì)查詢結(jié)果的數(shù)據(jù)(記錄)進(jìn)行排序后輸出。4.3數(shù)據(jù)查詢操作
查詢銷售了圖書編號(hào)為“T006”圖書的售書網(wǎng)站的編號(hào)和銷售數(shù)量,并按數(shù)量降序排列。SELECT售書網(wǎng)站編號(hào),數(shù)量FROM售書WHERE圖書編號(hào)='T006'ORDERBY數(shù)量DESC案例4-224.3數(shù)據(jù)查詢操作
2.連接查詢和其他用法
連接查詢是指同時(shí)涉及兩個(gè)以上的表的查詢。連接查詢是數(shù)據(jù)庫高級(jí)查詢中常見的操作。此查詢有兩類:自身連接查詢和多表連接查詢。語句格式:①SELECT子句中要指明各表查詢的結(jié)果表中出現(xiàn)的列名。②FROM子句要指明進(jìn)行連接的各表名且多表之間用“,”隔開.
③WHERE子句要指定連接的“表名.列名”及連接條件:多表連接查詢中常用子句的語法格式為:
[<表名1>.]<列名1><比較運(yùn)算符>[<表名2>.]<列名2>[<表名1>.]<列名1>BETWEEN[<表名2>.]<列名2>AND[<表名3>.]<列名3>
說明:使用多表連接列(字段)時(shí)需要注意:①連接字段指連接謂詞中的“列名”(即屬性名)。②連接條件中只有各連接列(值)的數(shù)據(jù)類型相同才可連接。③“比較運(yùn)算符”只對(duì)相同數(shù)據(jù)類型的列值才可比較。④注意BETWEEN…AND…、AND等運(yùn)算符及謂詞等用法。4.3數(shù)據(jù)查詢操作
注意:在此案例中,由于多表連接中“圖書”和“售書”兩個(gè)表內(nèi)均有圖書編號(hào)屬性,為了明確表示屬性的來源,在屬性前面加上屬性所屬的基本表名,如圖書.圖書編號(hào)。查詢上海售書網(wǎng)站賣出圖書的數(shù)量。SELECT售書.數(shù)量FROM售書網(wǎng)站,售書WHERE售書網(wǎng)站.售書網(wǎng)站編號(hào)=售書.售書網(wǎng)站編號(hào)AND售書網(wǎng)站.所在城市=‘上海’在售書網(wǎng)站上,查詢中國(guó)圖書網(wǎng)站所銷售過的圖書的編號(hào)和圖書名。SELECT圖書.書名,售書.數(shù)量FROM圖書,售書網(wǎng)站,售書WHERE圖書.圖書編號(hào)=售書.圖書編號(hào)AND售書網(wǎng)站.售書網(wǎng)站編號(hào)=售書.售書網(wǎng)站編號(hào)AND售書網(wǎng)站.名稱=’中國(guó)圖書’案例4-23案例4-244.3數(shù)據(jù)查詢操作圖書數(shù)據(jù)表中,查詢機(jī)械工業(yè)出版社出版的圖書“數(shù)據(jù)庫系統(tǒng)”的作者的其他圖書名稱和出版社信息。SELECTTWO.書名,TWO.出版社,ONE.作者FROM圖書ONE,圖書TWOWHEREONE.作者=TWO.作者ANDONE.書名=‘?dāng)?shù)據(jù)庫系統(tǒng)’ANDONE.出版社=‘機(jī)械工業(yè)出版社’案例4-25
注意:
進(jìn)行表的自身連接查詢時(shí),需要將where子句中的兩個(gè)表起別名進(jìn)行區(qū)分。
查詢?cè)?jīng)銷售過編號(hào)為T001或T002圖書的售書網(wǎng)站的編號(hào)。SELECT售書網(wǎng)站編號(hào)FROM售書WHERE圖書編號(hào)=’T001’UNIONSELECT售書網(wǎng)站編號(hào)FROM售書WHERE圖書編號(hào)=’T002’案例4-26
注意:查詢結(jié)果的結(jié)構(gòu)完全一致時(shí)的兩個(gè)查詢,可以進(jìn)行并(UNION)、交(INTERSECT)、差(EXCPT)操作.實(shí)際上,在兩個(gè)查詢的WHERE子句,也可合并為IN(‘E001’,’E002’)。4.3數(shù)據(jù)查詢操作3.嵌套查詢及應(yīng)用
嵌套查詢是指在一個(gè)SELECT查詢語句的WHERE子句中,嵌入另一SELECT語句的查詢方式.其中外層查詢稱為父查詢,內(nèi)層查詢稱為子查詢.運(yùn)行時(shí)從里到外,先運(yùn)行最里面的子查詢4.3數(shù)據(jù)查詢操作
查詢銷售《網(wǎng)絡(luò)安全技術(shù)及應(yīng)用》的售書網(wǎng)站的編號(hào)和相應(yīng)的銷售數(shù)量。
SELECT售書網(wǎng)站編號(hào),數(shù)量
FROM售書WHERE圖書編號(hào)=(SELETE圖書編號(hào)FROM圖書WHERE書名=‘網(wǎng)絡(luò)安全技術(shù)及應(yīng)用’)
說明:對(duì)此應(yīng)用案例,也可用多表連接查詢語句:SELECT售書網(wǎng)站.售書網(wǎng)站編號(hào),售書.數(shù)量FROM圖書,售書WHERE圖書.圖書編號(hào)=售書.圖書編號(hào)AND圖書.書名=‘網(wǎng)絡(luò)安全技術(shù)及應(yīng)用’案例4-274.3數(shù)據(jù)查詢操作
說明:在上述兩個(gè)應(yīng)用案例中,通常使用SOME運(yùn)算符表示“某一(個(gè))”,使用ALL運(yùn)算符表示“所有”或“每個(gè)”。查詢至少比某一個(gè)售書網(wǎng)站銷售G009圖書的銷售數(shù)量多的售書網(wǎng)站的編號(hào)。SELECT售書網(wǎng)站編號(hào)FROM售書WHERE數(shù)量>SOME(SELECT數(shù)量FROM售書WHERE圖書編號(hào)=’G009’)查詢銷售數(shù)量多于所有G008圖書的售書網(wǎng)站的編號(hào)。SELECT售書網(wǎng)站編號(hào)FROM售書WHERE數(shù)量>ALL(SELECT數(shù)量FROM售書WHERE圖書編號(hào)=’G008’)案例4-29案例4-28
注意:系統(tǒng)對(duì)子查詢中含有EXISTS謂詞作為存在量詞運(yùn)行后,只得到“真”或“假”。利用EXISTS后,若內(nèi)層查詢結(jié)果非空,則外層WHERE子句返回真,否則返回假;用存在量詞NOTEXISTS后,若內(nèi)層查詢結(jié)果為空,則外層的WHERE子句返回真,否則返回假。4.3數(shù)據(jù)查詢操作
查詢銷售過“航天”的售書網(wǎng)站的編號(hào)。SELECT售書網(wǎng)站編號(hào)FROM售書WHEREEXISTS(SELECT*FROM圖書WHERE圖書.圖書編號(hào)=售書.圖書編號(hào)AND書名=‘航天’)
查詢沒有銷售“航天”的售書網(wǎng)站的編號(hào)。SELECT售書網(wǎng)站編號(hào)FROM售書WHERENOTEXISTS(SELECT*
FROM圖書
WHERE圖書.圖書編號(hào)=售書.圖書編號(hào)AND書名=‘航天’)(1)SELECT語句的語法格式和含義是什么?(2)SQL提供了哪些聚合函數(shù)?怎樣進(jìn)行應(yīng)用?(3)舉出一個(gè)多表查詢的實(shí)例?
討論思考案例4-30案例4-314.4數(shù)據(jù)更新常用方法
數(shù)據(jù)更新的常用操作主要包括插入數(shù)據(jù)、修改數(shù)據(jù)和刪除數(shù)據(jù)。具體有兩種操作方式:利用SSMS界面菜單和SQL語句。鑒于教學(xué)重點(diǎn)及篇幅,主要概述利用SQL語句方式的常用操作方法。4.4.1數(shù)據(jù)插入的操作
當(dāng)數(shù)據(jù)表(結(jié)構(gòu))建立之后,可以根據(jù)實(shí)際業(yè)務(wù)需要向指定的數(shù)據(jù)表中插入數(shù)據(jù)。利用SQL語句插入數(shù)據(jù)的操作有兩種形式:插入單個(gè)數(shù)據(jù)(記錄)和插入查詢結(jié)果(成批數(shù)據(jù))。
1.單個(gè)數(shù)據(jù)的操作方法對(duì)指定表,插入單個(gè)記錄的語法格式為:
INSERTINTO<基本表名>[(<列名1>,<列名2>,…,<列名n>)]VALUES(<列值1>,<列值2>,…,<列值n>)[,(<列值1>,<列值2>,…,<列值n>),…];4.4數(shù)據(jù)更新常用方法
說明:在指定表中,插入幾條新記錄應(yīng)注意:①“數(shù)據(jù)表名”為指定插入的表名.若某些列(屬性)在INTO子句中沒出現(xiàn),則新記錄在未出現(xiàn)的對(duì)應(yīng)列上取空值.若沒指明(缺省)任何列名,則插入新記錄須在指定表各一一對(duì)應(yīng)列上都有值。②在VALUES后面列值,要求新插入列值及前后順序同原數(shù)據(jù)表對(duì)應(yīng)的列名一一對(duì)應(yīng),否則插入的值不一致(列相同)或無法操作。③在列名序列中應(yīng)包括所有不可取空值的列,以免操作受限。向圖書數(shù)據(jù)表中插入一個(gè)記錄(’J006’,’網(wǎng)絡(luò)安全’,’高等教育’,’2017/05/18’)INSERTINTO圖書(圖書編號(hào),書名,出版社,出版時(shí)間)VALUES(’J006’,’網(wǎng)絡(luò)安全’,’高等教育’,’2017/05/18’);案例4-32
說明:在數(shù)據(jù)表中插入單個(gè)新數(shù)據(jù)后,可以通過查看當(dāng)前數(shù)據(jù)表中新插入的數(shù)據(jù)(記錄)進(jìn)行查看檢驗(yàn)。4.4數(shù)據(jù)更新常用方法
向售書網(wǎng)站數(shù)據(jù)表中插入三個(gè)記錄(’N05’,’1號(hào)店’,’上海’,’2008/07/11’),(’N06’,’亞馬遜’,’西雅圖’,’1995/07/28’),(’N07’,’淘寶’,’杭州’,’2003/05/10/’)INSERTINTO售書網(wǎng)站VALUES(’N05’,’1號(hào)店',’上海','
2008/07/11’);INSERTINTO售書網(wǎng)站VALUES(’N06’,’亞馬遜’,’西雅圖’,’
1995/07/28’);INSERTINTO售書網(wǎng)站VALUES(’N07’,’淘寶’,’杭州’,’
2003/05/10/’);案例4-33*
拓展閱讀:另外,可以通過如圖4-27所示的“SQLServer導(dǎo)入和導(dǎo)出向?qū)А边M(jìn)行“導(dǎo)入/導(dǎo)出”數(shù)據(jù)庫中的數(shù)據(jù)。圖4-27數(shù)據(jù)庫導(dǎo)入導(dǎo)出向?qū)?.4數(shù)據(jù)更新常用方法2.成批插入查詢結(jié)果的方法
通過利用SELECT語句得到的查詢結(jié)果(篩選數(shù)據(jù)),可以成批地插入到指定表中,常用的操作語法格式為:
INSERETINTO<表名>[(<列名1>,<列名2>,…,<列名n>)]<子查詢>;
說明:將查詢結(jié)果(篩選數(shù)據(jù))成批插入表應(yīng)注意:(1)格式中的<表名>,為指定當(dāng)前準(zhǔn)備插入的“數(shù)據(jù)表名”。(2)其后的<列名>分別為擬插入的數(shù)據(jù)表的“列名”及順序。若指定“列名”序列,則要求<子查詢>結(jié)果與這些列名序列(列名及順序)一一對(duì)應(yīng)。若省略“列名”序列,則子查詢所得到的數(shù)據(jù)列應(yīng)同指定數(shù)據(jù)表的數(shù)據(jù)列完全對(duì)應(yīng)且一致,以免無法操作(列數(shù)不同)或混亂。(3)“子查詢”為指定的SELECT語句確定的查詢(篩選)。4.4數(shù)據(jù)更新常用方法
若已建有“銷售_統(tǒng)計(jì)(售書網(wǎng)站編號(hào),銷售總量)”的銷售統(tǒng)計(jì)表,其中“銷售總量”表示每個(gè)售書網(wǎng)站銷售圖書的總數(shù)量,向銷售_統(tǒng)計(jì)表中插入各售書網(wǎng)站的銷售總量。INSERTINTO銷售_統(tǒng)計(jì)(售書網(wǎng)站編號(hào),銷售總量)SELECT售書網(wǎng)站編號(hào),SUM(數(shù)量)FROM售書GROUPBY售書網(wǎng)站編號(hào)4.4數(shù)據(jù)更新常用方法案例4-344.4.2數(shù)據(jù)修改的方法
當(dāng)企事業(yè)機(jī)構(gòu)的業(yè)務(wù)數(shù)據(jù)發(fā)生變更時(shí),需要及時(shí)對(duì)有關(guān)數(shù)據(jù)(記錄)進(jìn)行修改,常用命令語句操作的語法格式為:
UPDATE<基本表名>SET<列名>=<表達(dá)式>[,<列名>=<表達(dá)式>]…[WHERE<條件表達(dá)式>]
說明:修改(替換)指定數(shù)據(jù)應(yīng)注意:①“數(shù)據(jù)表名”為指定擬修改數(shù)據(jù)(記錄)所在的數(shù)據(jù)表名。②SET子句主要用于指定“替換”修改具體值,即用“表達(dá)式”的結(jié)果值替換對(duì)應(yīng)的列(指定“列名”)的值。③WHERE語句用于修改指定表中滿足條件(“條件表達(dá)式”)的記錄。如果省略WHERE子句,則表示要修改表中的所有記錄。④常用的三種修改方法:修改某個(gè)或多個(gè)(滿足條件)記錄的值、批量修改帶子查詢(篩選)的滿足條件的記錄的值。
注意:在利用UPDATE進(jìn)行批量更新(替換)時(shí),需要特別注意后面的WHERE語句(篩選條件)的具體應(yīng)用。4.4數(shù)據(jù)更新常用方法
4-34】將圖書編號(hào)為T002的圖書價(jià)格提高2%。UPDATE圖書SET價(jià)格=價(jià)格*1.02WHERE商品編號(hào)=’T002’;
案例4-35】將數(shù)據(jù)表Student中,將學(xué)生姓名(SName)為李四的記錄的家庭地址Address的值改為BBBBB,結(jié)果如圖4-8圖所示。UPDATEStudentSETAddress='BBBBB'WHERESName='李四';圖
修改數(shù)據(jù)的界面4.4數(shù)據(jù)更新常用方法案例4-35案例4-364.4.3數(shù)據(jù)刪除的操作
在業(yè)務(wù)數(shù)據(jù)處理中,當(dāng)數(shù)據(jù)表中的數(shù)據(jù)不再需要時(shí),可以從指定的數(shù)據(jù)表中刪除。常用刪除數(shù)據(jù)操作的語法格式為:
DELETEFROM<基本表名>[WHERE<條件表達(dá)式>]
說明:刪除數(shù)據(jù)的操作一定要慎重。①<數(shù)據(jù)表名>為指定擬刪除的數(shù)據(jù)(記錄)所在的數(shù)據(jù)表名。②WHERE子句用于指定刪除滿足“條件”的數(shù)據(jù)(記錄)。如果省略WHERE子句,則刪除表中的全部記錄(只留表結(jié)構(gòu))。③每次只能對(duì)一個(gè)表中的數(shù)據(jù)進(jìn)行刪除,而不能一次從多個(gè)表中刪除記錄。若刪除多表記錄,需要多次使用DELETE語句操作。
注意:在刪除記錄時(shí),應(yīng)當(dāng)注意WHERE條件,以免誤刪。4.4數(shù)據(jù)更新常用方法
刪除數(shù)據(jù)庫原數(shù)據(jù)表Student中的第5條記錄,即Id為5的記錄,如圖4-8所示。
DELETEFROMStudentWHEREId=5圖4-8
刪除數(shù)據(jù)的界面(1)怎樣將查詢結(jié)果插入到指定的數(shù)據(jù)表中?(2)SQL中數(shù)據(jù)修改包括哪些操作語句?(3)舉例說明如何使用DELETE語句刪除一個(gè)記錄?
討論思考4.4數(shù)據(jù)更新常用方法案例4-384.5實(shí)驗(yàn)4數(shù)據(jù)庫、表及
數(shù)據(jù)操作4.5.1實(shí)驗(yàn)?zāi)康模?)熟悉常用數(shù)據(jù)庫的創(chuàng)建(定義)、修改和刪除操作(2)熟練掌握數(shù)據(jù)表的創(chuàng)建(定義)、修改和刪除方法(3)熟悉業(yè)務(wù)數(shù)據(jù)查詢的各種方式方法及實(shí)際應(yīng)用(4)熟練掌握數(shù)據(jù)的輸入、修改、插入、刪除等操作4.5.2實(shí)驗(yàn)內(nèi)容主要的實(shí)驗(yàn)內(nèi)容包括:(1)數(shù)據(jù)庫的創(chuàng)建(定義)、修改和刪除操作(2)數(shù)據(jù)表的創(chuàng)建(定義)、修改和刪除操作(3)輸入、編輯、插入和修改數(shù)據(jù)庫記錄操作(4)多種數(shù)據(jù)的各種查詢的具體方式方法注:由于實(shí)驗(yàn)內(nèi)容多,可分多次課內(nèi)外結(jié)合完成。4.5實(shí)驗(yàn)4數(shù)據(jù)庫、表及
數(shù)據(jù)操作4.5.3實(shí)驗(yàn)步驟1.創(chuàng)建、修改和刪除數(shù)據(jù)庫1)建立數(shù)據(jù)庫。建立一個(gè)“教學(xué)”數(shù)據(jù)庫teachingDB,該數(shù)據(jù)庫的主數(shù)據(jù)文件邏輯名稱為teachingDB,物理文件名為teachingDB.mdf,初始大小為10MB,最大容量無限制,增長(zhǎng)速度為10%;數(shù)據(jù)庫的日志文件邏輯名稱為teachingDB_log,物理文件名為teachingDB_log.ldf,初始大小為1MB,最大容量為5MB,增長(zhǎng)速度為1MB。建數(shù)據(jù)庫兩種方法:通過SSMS界面菜單操作/用T-SQL語句.下面主要介紹第二種操作方法。單擊SSMS工具欄的“新建查詢”,打開查詢窗口,輸入下列SQL語句,并在工具欄上單擊“執(zhí)行”按鈕,即可建立指定的數(shù)據(jù)庫。CREATEDATABASEteachingDB
--注意數(shù)據(jù)庫所在盤及目錄ONPRIMARY
--建立主數(shù)據(jù)文件(NAME='teachingDB',
--邏輯文件名FILENAME='E:\teachingDB.mdf',
--物理文件路徑和名字SIZE=10240KB,
--初始大小MAXSIZE=UNLIMITED,
--最大尺寸為無限大FILEGROWTH=10%)
--增長(zhǎng)速度LOGON(NAME='teachingDB_log',
--建立日志文件FILENAME='E:\teachingDB_log.ldf',--物理文件路徑和名字SIZE=1024KB,MAXSIZE=5120KB,FILEGROWTH=1024KB}4.5實(shí)驗(yàn)4數(shù)據(jù)庫、表及
數(shù)據(jù)操作2)用SSMS查看或修改數(shù)據(jù)庫設(shè)置啟動(dòng)SSMS,在“對(duì)象資源管理器”中,選中所要修改的“數(shù)據(jù)庫”右擊,從彈出的快捷菜單中選擇“屬性”,出現(xiàn)“數(shù)據(jù)庫屬性設(shè)置”對(duì)話框。可以看到修改或查看數(shù)據(jù)庫屬性時(shí),“屬性”對(duì)話框中比建立數(shù)據(jù)庫時(shí)多了選項(xiàng),如文件、更改數(shù)據(jù)跟蹤、權(quán)限等。可以分別在常規(guī)、文件、文件組、選項(xiàng)和權(quán)限對(duì)話框里,根據(jù)要求查看或修改數(shù)據(jù)庫的相應(yīng)設(shè)置。3)添加數(shù)據(jù)庫。將兩個(gè)數(shù)據(jù)文件添加到teachingDB數(shù)據(jù)庫中。4.5實(shí)驗(yàn)4數(shù)據(jù)庫、表及
數(shù)據(jù)操作ALTERDATABASEteachingDB
--注意建立數(shù)據(jù)庫所在盤及目錄ADDFILE--添加兩個(gè)次數(shù)據(jù)文件(NAME=teachingDB1,FILENAME
=
'E:\
teachingDB1.ndf
',SIZE=5MB,MAXSIZE=100MB,FILEGROWTH=5MB),(NAME=teachingDB2,FILENAME
=
'E:\
teachingDB2.ndf
',SIZE=3MB,MAXSIZE=10MB,FILEGROWTH=1MB)GO4.5實(shí)驗(yàn)4數(shù)據(jù)庫、表及
數(shù)據(jù)操作4)刪除數(shù)據(jù)庫操作●用T-SQL語句刪除數(shù)據(jù)庫為:DROPDATABASEteachingDB(注意所在的盤及目錄)●在“對(duì)象資源管理器”窗口,選定“數(shù)據(jù)庫”單擊鼠標(biāo)右鍵,彈出快捷菜單,選擇“刪除”命令。出現(xiàn)“刪除對(duì)象”對(duì)話框,確認(rèn)是否為目標(biāo)數(shù)據(jù)庫,并通過選擇復(fù)選框決定是否要?jiǎng)h除備份以及關(guān)閉已存在的數(shù)據(jù)庫連接,單擊“確定”按鈕,完成數(shù)據(jù)庫刪除操作。4.5實(shí)驗(yàn)4數(shù)據(jù)庫、表及
數(shù)據(jù)操作4.5實(shí)驗(yàn)4數(shù)據(jù)庫、表及
數(shù)據(jù)操作2.創(chuàng)建和修改數(shù)據(jù)表在“教學(xué)”teaching數(shù)據(jù)庫中,建立:系部表(department),課程表(course),學(xué)生表(student)和教師表(teacher),教師開課表(teacher_course),學(xué)生選課表(student_c)。教務(wù)管理系統(tǒng)的數(shù)據(jù)模型:系部表(系部編號(hào),系部名稱,系部領(lǐng)導(dǎo),系部電話,系部地址),主鍵:系部編號(hào)課程表(課程編號(hào),系部編號(hào),課程名稱),主鍵:課程編號(hào);外鍵:系部編號(hào)。學(xué)生表(學(xué)生編號(hào),系部編號(hào),姓名,性別,出生日期,地址,總分,民族,年級(jí),學(xué)院,專業(yè)),主鍵:學(xué)生編號(hào),外鍵:系部編號(hào)。教師表(教師編號(hào),系部編號(hào),教師姓名,職稱),主鍵:教師編號(hào),外鍵:系部編號(hào).教師開課表(教師編號(hào),課程編號(hào),學(xué)期),主鍵:教師編號(hào),外鍵是:課程編號(hào)。學(xué)生選課表(學(xué)生編號(hào),課程編號(hào),教師編號(hào),學(xué)期,成績(jī)),主鍵:學(xué)生編號(hào),外鍵:課程編號(hào)和教師編號(hào)。1)建立數(shù)據(jù)表操作(1)使用SSMS圖形界面方法;1)使用SSMS圖形界面方法:在“對(duì)象資源管理器”窗口中,右擊指定數(shù)據(jù)庫teachingDB的“表”文件夾,從彈出的快捷菜單中選擇“新建表”選項(xiàng),依次輸入字段名稱和該字段的數(shù)據(jù)類型,以及允許空或非空的設(shè)置,即可建立數(shù)據(jù)庫表。2)使用命令語句方法:選擇teachingDB數(shù)據(jù)庫,在“新建查詢”窗口中輸入下列SQL語句(列名即“屬性名”采用英文),每輸入一條SQL命令,單擊一下“執(zhí)行”即可:4.5實(shí)驗(yàn)4數(shù)據(jù)庫、表及
數(shù)據(jù)操作createtabledepartment(dept_idchar(6)notnull,dept_namechar(20)null,dept_headchar(6)null,dept_phonechar(12)null,dept_addrchar(40)null,constraintPK_DEPARTMENTprimarykeynonclustered(dept_id))gocreatetablecourse(course_idchar(6)notnull,dept_idchar(6)notnull,course_namechar(20)null,constraintPK_COURSEprimarykeynonclustered(course_id))Go4.5實(shí)驗(yàn)4數(shù)據(jù)庫、表及
數(shù)據(jù)操作createtable
student(stu_idchar(6)notnull,dept_idchar(6)notnull,name
char(8)null,
sex
char(2)null,birthdaydatetimenull,addresschar(40)null,totalscore
intnull,nationalitychar(8)null,gradechar(2)null,schoolchar(20)null,class
char(16)null,major
char(30)null,constraintPK_STUDENTprimarykeynonclustered(stu_id))go4.5實(shí)驗(yàn)4數(shù)據(jù)庫、表及
數(shù)據(jù)操作createtableteacher(teacher_idchar(6)notnull,dept_idchar(6)notnull,teacher_namechar(8)null,rankchar(6)null,constraintPK_TEACHERprimarykeynonclustered(teacher_id))……
--此處省略,同上類似;4.5實(shí)驗(yàn)4數(shù)據(jù)庫、表及
數(shù)據(jù)操作(2)修改表操作將表student_c
中term列刪除,并將score的數(shù)據(jù)類型改為float。實(shí)驗(yàn)操作步驟;在“新建查詢”窗口中輸入SQL語句:USEteachingDBGOALTERTABLEstudent_cDROPCOLUMNtermGOALTERTABLEstudent_cALTERCOLUMNscorefloatGO/*修改表結(jié)構(gòu),添加一個(gè)外鍵*/altertablecourseaddconstraintFK_COURSE_DEPARTMENTforeignkey(dept_id)referencesdepartment(dept_id)go4.5實(shí)驗(yàn)4數(shù)據(jù)庫、表及
數(shù)據(jù)操作altertablecourseaddconstraintFK_COURSE_DEPARTMEN_DEPARTMEforeignkey(dept_id)referencesdepartment(dept_id)goaltertablestudentaddconstraintFK_STUDENT_DEPARTMEN_DEPARTMEforeignkey(dept_id)referencesdepartment(dept_id)goaltertablestudent_caddconstraintFK_STUDENT__STUDENT_T_COURSEforeignkey(course_id)referencescourse(course_id)……
--此處省略,同上類似;4.5實(shí)驗(yàn)4數(shù)據(jù)庫、表及
數(shù)據(jù)操作(3)刪除表操作1)使用SSMS刪除表。在“對(duì)象資源管理器”窗口中,展開“數(shù)據(jù)庫”結(jié)點(diǎn),再展開所選擇的具體“表”,右鍵點(diǎn)擊要?jiǎng)h除的表,選擇“刪除”或按下DELETE鍵。2)使用T-SQL語句刪除表。在數(shù)據(jù)庫teachingDB中建一個(gè)表Test1,然后刪除。USEteachingDBGODROPTABLETest1說明:在刪除表的時(shí)可能會(huì)出現(xiàn)“刪除對(duì)象”的對(duì)話框,如刪除department表。這是因?yàn)樗鶆h除的表中擁有被其他表設(shè)置了外鍵約束的字段,如果刪除了該表,必然對(duì)其他表的外鍵約束造成影響,數(shù)據(jù)庫系統(tǒng)禁止刪除被設(shè)置了外鍵的表。4.5實(shí)驗(yàn)4數(shù)據(jù)庫、表及
數(shù)據(jù)操作4.5實(shí)驗(yàn)4數(shù)據(jù)庫、表及
數(shù)據(jù)操作3.插入或修改數(shù)據(jù)庫記錄(1)使用SSMS和T-SQL添加記錄。在系部表(department),課程表(course),學(xué)生表(student)和教師表(teacher),教師開課表(teacher_c),學(xué)生選課表(student_c)添加適當(dāng)?shù)挠涗洝L砑佑涗浿袘?yīng)注意先后次序。先給無外鍵約束的表添加記錄,然后再給有外鍵的表添加記錄,否則無法添加。①使用SSMS添加記錄在“對(duì)象資源管理器”窗口中,展開“數(shù)據(jù)庫”結(jié)點(diǎn),再展開所選擇的具體數(shù)據(jù)庫結(jié)點(diǎn),展開“表”結(jié)點(diǎn),右鍵要插入紀(jì)錄的表,選擇“編輯前200行”命令,即可輸入紀(jì)錄值和修改記錄。②使用T-SQL添加記錄如給教務(wù)管理系統(tǒng)數(shù)據(jù)庫的表添加指定的記錄:USEteachingDBGO/*添加課程表記錄*/INSERTcourse(course_id,dept_id,course_name)VALUES('100001','1001','網(wǎng)絡(luò)安全')INSERTcourse(course_id,dept_id,course_name)VALUES(N'100002',N'1001',N'數(shù)據(jù)結(jié)構(gòu)')/*添加系部表記錄*/INSERTdepartment(dept_id,dept_name,dept_head,dept_phone,dept_addr)VALUES('1001','信息學(xué)院','張老師','1391001011','圖書館7樓')INSERTdepartment(dept_id,dept_name,dept_head,dept_phone,dept_addr)VALUES('1002','機(jī)械學(xué)院','李老師','1891020202','文理樓2樓')INSERTdepartment(dept_id,dept_name,dept_head,dept_phone,dept_addr)VALUES('1003','電氣學(xué)院','王老師','1893774737','東華路16號(hào)')4.5實(shí)驗(yàn)4數(shù)據(jù)庫、表及
數(shù)據(jù)操作/*添加學(xué)生表記錄*/INSERTstudent(stu_id,dept_id,name,sex,birthday,address,totalscore,nationality,grade,school,class,major)VALUES('1201',N'1001','周敏','女',CAST(0x0000806800000000ASDateTime),'上海',NULL,'漢族','1','信息','1001','計(jì)算機(jī)')INSERTstudent(stu_id,dept_id,name,sex,birthday,address,totalscore,nationality,grade,school,class,major)VALUES('1202','1001','趙凱','男',CAST(0x000081F400000000ASDateTime),'北京',NULL,'漢族','1','信息','1001','計(jì)算機(jī)')/*添加老師表記錄*/
(同上,從略)/*添加老師開課表記錄*/(同上,從略)/*添加學(xué)生選課表記錄*/(同上,從略)GO4.5實(shí)驗(yàn)4數(shù)據(jù)庫、表及
數(shù)據(jù)操作說明:INSERTcourse(course_id,dept_id,course_name)VALUES(N'100002',N'1001',N'數(shù)據(jù)結(jié)構(gòu)')中“N”表示采用UNICODE編碼方式。有N,插入數(shù)據(jù)庫時(shí)用unicode編碼格式(無論是漢字,還是字母,統(tǒng)一用兩個(gè)字節(jié)表示)存放數(shù)據(jù),這一規(guī)則只對(duì)字段類型是nvarchar/ntext/nchar的字段有效。若無N,則按非unicode編碼來存儲(chǔ),即漢字是雙字節(jié)存儲(chǔ),字母單字節(jié)存儲(chǔ)。N'string'表示string在數(shù)據(jù)庫中是以Unicode編碼格式存放。(2)數(shù)據(jù)庫及表的常用操作
在“新建查詢”窗口中輸入下列SQL語句,并另存為test.sql文件,單擊“執(zhí)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年項(xiàng)目管理考試探討試題及答案
- 2024年項(xiàng)目管理難點(diǎn)試題及答案
- 長(zhǎng)豐鋼結(jié)構(gòu)夾層施工方案
- 行政管理師考試策略與解決方案及答案
- 項(xiàng)目的持續(xù)改進(jìn)與優(yōu)化試題及答案
- 項(xiàng)目管理市場(chǎng)環(huán)境試題及答案
- 2025年證券從業(yè)資格證考試的重點(diǎn)考查試題及答案
- 威迪斯管道施工方案
- 證券從業(yè)資格證考試學(xué)習(xí)策略試題及答案
- 理解項(xiàng)目管理中的團(tuán)隊(duì)沖突處理的考點(diǎn)試題及答案
- 高二下學(xué)期《家校攜手凝共識(shí)齊心協(xié)力創(chuàng)輝煌》家長(zhǎng)會(huì)
- 2025年人教版七年級(jí)下冊(cè)英語全冊(cè)教學(xué)設(shè)計(jì)
- 2024-2025學(xué)年人教版數(shù)學(xué)八年級(jí)下冊(cè)期中檢測(cè)卷(含答案)
- 江蘇省南京市聯(lián)合體2023-2024學(xué)年七年級(jí)下學(xué)期期中英語試卷
- 建筑垃圾處理廠可行性研究報(bào)告
- 日標(biāo)JIS法蘭標(biāo)準(zhǔn)
- 固體物理(黃昆)第一章
- 認(rèn)識(shí)餐飲環(huán)境(課堂PPT)
- 常用拉鉚螺母規(guī)格表
- 橡膠壩畢業(yè)設(shè)計(jì)
- 農(nóng)村飲用水安全衛(wèi)生評(píng)價(jià)指標(biāo)體系
評(píng)論
0/150
提交評(píng)論