數(shù)據(jù)更新與查詢14_第1頁
數(shù)據(jù)更新與查詢14_第2頁
數(shù)據(jù)更新與查詢14_第3頁
數(shù)據(jù)更新與查詢14_第4頁
數(shù)據(jù)更新與查詢14_第5頁
已閱讀5頁,還剩61頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

數(shù)據(jù)更新與查詢課前預(yù)習(xí)將手機(jī)調(diào)到靜音認(rèn)真做筆記及時(shí)完成作業(yè)上課要求本節(jié)內(nèi)容插入數(shù)據(jù)(重點(diǎn))修改數(shù)據(jù)(重點(diǎn))刪除數(shù)據(jù)查詢語句簡(jiǎn)單查詢(重點(diǎn))多表查詢(難點(diǎn))嵌套查詢使用T-SQL語句插入記錄使用INSERTINTO語句也可以向表中插入數(shù)據(jù)。INSERTINTO語句的語法格式如下:INSERT[INTO]表名

[(列名[,...n])]VALUES(表達(dá)式[,...n])向Students表中插入一行數(shù)據(jù)。sno:2009207104sname:李吉sex:男birthday:1981-5-31professional:信息管理telephonemail:liji@126.cominsert

intostudents(sno,sname,sex,birthday,professional,telephone,email)values('2009207104','李吉','男','1981-5-31','信息管理',,'liji@126.com')在insertinto插入數(shù)據(jù)時(shí),可以省略列名列表,在這種情況下,values后數(shù)值的順序一定要與表中定義列的順序相同。否則,要么插入數(shù)據(jù)不成功,要么插入數(shù)據(jù)成功但不正確。

使用insertinto語句一次只能插入一行數(shù)據(jù)。使用T-SQL語句修改記錄

使用UPDATE語句修改表中已經(jīng)存在的數(shù)據(jù),該語句既可以一次更新一行數(shù)據(jù),也可以一次更新表中的全部數(shù)據(jù)行。

使用UPDATE要求修改前后的數(shù)據(jù)類型和數(shù)據(jù)個(gè)數(shù)相同。UPDATE語句語法格式如下:UPDATE表名SET{列名=表達(dá)式}[,...n][WHERE邏輯表達(dá)式]當(dāng)省略where子句時(shí),表示對(duì)所有行的指定列進(jìn)行修改,否則只對(duì)滿足邏輯表達(dá)式的數(shù)據(jù)行的指定列進(jìn)行修改。修改的列值由表達(dá)式給定。將Students表中學(xué)號(hào)為“2009207104”的電話update

studentssettelephone=wheresno='2009207104'使用T-SQL語句刪除記錄對(duì)表中數(shù)據(jù)的刪除可以使用DELETE語句實(shí)現(xiàn)。該語句可以從一個(gè)表中刪除一行或多行數(shù)據(jù)。DELETE語句基本語法格式如下:DELETE[FROM]表名[WHERE邏輯表達(dá)式]在delete語句中,如果使用了where子句,表示從指定的表中刪除滿足where子句條件的數(shù)據(jù)行。如果沒有where子句,表示刪除指定表中的全部數(shù)據(jù),使用時(shí)應(yīng)小心謹(jǐn)慎。刪除students表中學(xué)號(hào)為“2009207104”的數(shù)據(jù)記錄。deletefromstudentswheresno='2009207104'練習(xí)12023/2/11、192例6-18----6-22數(shù)據(jù)查詢

查詢是對(duì)已經(jīng)存在于數(shù)據(jù)庫中的數(shù)據(jù)按特定的組合、條件或次序進(jìn)行檢索。

把所有的被選擇的行組織在一起,形成另外一個(gè)類似于表的結(jié)構(gòu),這便是查詢的結(jié)果,通常叫做記錄集。記錄集的結(jié)構(gòu)與表的結(jié)構(gòu)是相同的,都是由多行組成的,在記錄集上依然可以進(jìn)行再次查詢。SELECT語句

T-SQL語言中用于數(shù)據(jù)查詢的語句是SELECT語句。SELECT語句是功能最強(qiáng)也是最復(fù)雜的SQL語句,既可以實(shí)現(xiàn)對(duì)單表的數(shù)據(jù)查詢,也可以完成復(fù)雜的多表、視圖連接查詢和嵌套查詢等。SELECT語句的基本語法格式如下:SELECT[ALL|DISTINCT][TOPn]表達(dá)式列表[AS別名]FROM表名或視圖名[WHERE條件表達(dá)式][GROUPBY列名][HAVING搜索表達(dá)式][ORDERBY列名[ASC|DESC]]其中:SELECT子句用于指定輸出的內(nèi)容。FROM子句用于指定要檢索的數(shù)據(jù)的來源表或來源視圖。WHERE子句用于指定對(duì)記錄的過濾條件。GROUPBY子句用于指定對(duì)檢索到的記錄進(jìn)行分組的條件。HAVING子句用于在分組的基礎(chǔ)上指定選取某些組的條件,必須與GROUPBY一起使用。ORDERBY子句用于對(duì)檢索到的記錄進(jìn)行排序。注意:在SELECT語句中可以省略可選語句(“[]”括起來的子句),但這些子句的順序非常重要。各子句在使用時(shí)必須按照語法格式中的順序出現(xiàn),否則會(huì)出錯(cuò)。查詢Readersys表中的所有讀者的姓名,專業(yè)和借書數(shù)量。selectrname,professional,borrownumberfromReadersys查詢Borrowsys表中的讀者編號(hào),圖書編號(hào)。selectrno,bnofromBorrowsys查詢Booksys表的所有記錄。select*fromBooksys條件查詢大部分查詢都是從整個(gè)表中選出符合條件的部分信息,這時(shí)就需要對(duì)結(jié)果集中的記錄進(jìn)行過濾。

在SELECT語句中,可以使用WHERE子句來指定查詢條件,將不符合條件的記錄排除在結(jié)果集之外。查詢Readersys表中借書數(shù)量2本及以上的讀者信息。select*fromReadersyswhereborrownumber>=2消除重復(fù)數(shù)據(jù)行

指定ALL關(guān)鍵字(默認(rèn))將保留查詢結(jié)果集中的全部數(shù)據(jù)行,因此,在查詢結(jié)果集中可能會(huì)出現(xiàn)重復(fù)的數(shù)據(jù)行。使用DISTINCT關(guān)鍵字可消除查詢結(jié)果集中重復(fù)的數(shù)據(jù)行。selectdistinctprofessionalfromReadersyswhereborrownumber>=2selectprofessionalfromReadersyswhereborrownumber>=2自定義列標(biāo)題默認(rèn)情況下,在結(jié)果集中顯示的列名為表中的列名,可以使用AS關(guān)鍵字指定一個(gè)更加容易理解的別名取代原來的列名。

例如:sno:學(xué)號(hào)sname:姓名professional:專業(yè)

查詢Readersys表中讀者的編號(hào)和姓名。selectrnoas'讀者編號(hào)',rnameas'讀者姓名'fromReadersys注意:指定的列標(biāo)題是一個(gè)字符串,可以用單引號(hào)括起來,也可以不用,關(guān)鍵字as也可以省略。

使用聚集函數(shù)聚集函數(shù)的主要功能是對(duì)表在指定列名表達(dá)式的值上進(jìn)行縱向統(tǒng)計(jì)和計(jì)算,也稱為聚合函數(shù)。

在SELECT查詢語句中,常用的聚集函數(shù)如下:COUNT:統(tǒng)計(jì)列中選取的項(xiàng)目個(gè)數(shù)或查詢輸出的行數(shù)。SUM:計(jì)算指定的數(shù)值型列名表達(dá)式的總和。AVG:計(jì)算指定的數(shù)值型列名表達(dá)式的平均值。MAX:求出指定的數(shù)值、字符或日期型列名表達(dá)式的最大值。MIN:求出指定的數(shù)值、字符或日期型列名表達(dá)式的最小值。統(tǒng)計(jì)Readersy數(shù)據(jù)表中讀者的數(shù)量。selectcount(*)as讀者數(shù)fromReadersys查詢Booksys表中price最高的和最低的圖書。selectmax(price)as價(jià)格最高,min(price)as價(jià)格最低fromBooksys范圍查詢

WHERE子句中可用關(guān)鍵字BETWEEN和AND判定某個(gè)表達(dá)式值是否在某個(gè)區(qū)間范圍之內(nèi)。要實(shí)現(xiàn)這種查詢,必須知道查找的初值(最小值)和終值(最大值),初值和終值之間用AND分開。查詢借書日期在2010-5-1日至2010-8-1日之間的讀者編號(hào)、圖書編號(hào)和借書日期。selectrno,bno,borrowdatefromBorrowsyswhereborrowdatebetween'2010-5-1'and'2010-8-1'模糊查詢通常在查詢字符類型的數(shù)據(jù)時(shí),提供的查詢條件并不是十分精確,如查詢條件僅僅是包含或類似某種樣式的字符,這種查詢稱為模糊查詢。在WHERE子句中,可以使用LIKE關(guān)鍵字實(shí)現(xiàn)模糊查詢。LIKE關(guān)鍵字的語法形式如下:<字符串表達(dá)式>[NOT]LIKE<模式表達(dá)式>模式表達(dá)式可以是一個(gè)完整的字符串,也可以包含有通配符%、_、[]或[^],這4種通配符的含義如表所示。通配符含義%代表0個(gè)或多個(gè)字符_代表1個(gè)字符[]代表指定范圍或集合中的1個(gè)字符[^]代表不在指定范圍或集合中的1個(gè)字符查詢Booksys表中與“數(shù)據(jù)庫”相關(guān)的圖書的圖書編號(hào)、圖書名稱及出版社。selectbno,bname,pressfromBooksyswherebnamelike'數(shù)據(jù)庫%'查詢Booksys表中出版社名包含“教育”的圖書名稱、圖書類別和出版社。selectbname,category,pressfromBooksyswherepresslike'%教育%'查詢Booksys表中作者名為_志明的圖書名稱和出版日期。selectbname,publicationdatefromBooksyswhereauthorlike'_志明'查詢Booksys表中出版社名包含人民的圖書名稱、圖書類別和出版社。selectbname,category,pressfromBooksyswherepresslike'[人、民]%'查詢Booksys表中出版社名不包含人民的圖書名稱、圖書類別和出版社。selectbname,category,pressfromBooksyswherepresslike'[^人、民]%'排序查詢使用ORDERBY子句可以按一個(gè)或多個(gè)屬性列對(duì)數(shù)據(jù)進(jìn)行排序,排序方式有升序(ASC)和降序(DESC)2種,默認(rèn)的排序方式為升序。查詢Booksys表中的圖書編號(hào)、圖書名稱和圖書價(jià)格,圖書價(jià)格按照升序排列。selectbno,bname,pricefromBooksysorderbyprice練習(xí)22023/2/11、189例6-7—6-12

連接(多表)查詢

在設(shè)計(jì)表時(shí),經(jīng)常把相關(guān)的數(shù)據(jù)分散在不同的表中。但在實(shí)際使用時(shí),往往需要同時(shí)從兩個(gè)或兩個(gè)以上的表中檢索數(shù)據(jù),并且每一個(gè)表中的數(shù)據(jù)仍以單獨(dú)的列出現(xiàn)在結(jié)果集中。

連接查詢:實(shí)現(xiàn)從兩個(gè)或兩個(gè)以上表中檢索數(shù)據(jù)且結(jié)果集中出現(xiàn)的列來自于多個(gè)表的檢索操作。內(nèi)連接內(nèi)連接是指多個(gè)數(shù)據(jù)源通過相關(guān)列的值滿足連接條件進(jìn)行的匹配連接,并從這些表中提取數(shù)據(jù)組合成新的行輸出。

內(nèi)連接用INNERJOIN關(guān)鍵字來指定,其語法格式如下:FROM表1{[INNER]JOIN表2ON條件表達(dá)式}[…n]外連接內(nèi)連接返回的結(jié)果集是符合連接條件和查詢條件的數(shù)據(jù)行,外連接是其中一個(gè)表的全集和另一個(gè)表與其匹配的數(shù)據(jù)。外連接與內(nèi)連接最大的不同是外連接返回from子句中指定的至少一個(gè)表的所有行。全外連接全外連接將左表所有數(shù)據(jù)分別于右表每一條數(shù)據(jù)進(jìn)行連接,返回的結(jié)果集中除了滿足連接條件的數(shù)據(jù)行外,還有左、右表中不滿足連接條件的數(shù)據(jù)行,分別在左、右表的相應(yīng)列上填上NULL值。全外連接的語法如下:From左表fullouterjoin右表on連接條件交叉連接交叉連接也叫非限制連接,它將兩個(gè)表不加任何限制的組合起來。

沒有WHERE子句的交叉連接返回的結(jié)果集的行數(shù)等于兩個(gè)表的數(shù)據(jù)行數(shù)的乘積,因此可能產(chǎn)生龐大的結(jié)果集。

交叉連接的語法如下:FROM表名1CROSSJOIN表名2自連接表可以通過自連接實(shí)現(xiàn)自身的連接運(yùn)算。自連接可以看作是一張表的兩個(gè)副本之間進(jìn)行的連接。

在自連接中,必須為表指定兩個(gè)不同的別名,使之邏輯上成為兩張表。練習(xí)32023/2/11、190例6-13—6-15子查詢

SELECT語句可以嵌套在其他語句中,這些語句包括SELECT、INSERT、UPDATE、DELETE等,這些嵌套的SELECT語句被稱為子查詢。

外層的SELECT語句被稱為外部查詢,內(nèi)層的SELECT語句被稱為內(nèi)部查詢(或子查詢)。當(dāng)一個(gè)查詢依賴于另外一個(gè)查詢結(jié)果時(shí),則可以使用子查詢。子查詢分為IN子查詢、EXISTS子查詢和比較子查詢。IN子查詢

IN子查詢通過使用IN關(guān)鍵字可以把原表中目標(biāo)列的值和子查詢的返回結(jié)果進(jìn)行比較。

如果列值與子查詢的結(jié)果一致或存在與之匹配的數(shù)據(jù)行,則查詢結(jié)果集中就包含該數(shù)據(jù)行。查詢“C語言程序設(shè)計(jì)”或“面向?qū)ο蟪绦蛟O(shè)計(jì)”課程的課程號(hào)。selectcnofromCourseWherecnamein('C語言程序設(shè)計(jì)','面向?qū)ο蟪绦蛟O(shè)計(jì)')查詢選修了“C語言程序設(shè)計(jì)”或“面向?qū)ο蟪绦?/p>

設(shè)計(jì)”課程的學(xué)生學(xué)號(hào)。selectsnofromElectivewherecnoin(selectcnofromCoursewherecnamein('C語言程序設(shè)計(jì)','面向?qū)ο蟪绦蛟O(shè)計(jì)')

)EXISTS子查詢

EXISTS關(guān)鍵字的作用是在WHERE子句中測(cè)試子查詢的結(jié)果是否為空,若子查詢的結(jié)果不為空,則EXISTS返回TRUE,否則返回FALSE。使用EXISTS關(guān)鍵字的子查詢實(shí)際上不返回任何數(shù)據(jù)。查詢至少選修了一門課程的學(xué)生學(xué)號(hào)和姓名。selectStudents.sno,snamefromStudentswhere

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論