歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

第2章結(jié)構(gòu)化查詢語(yǔ)言sql

  • 資源ID:35122439       資源大?。?span id="nibvcqn" class="font-tahoma">103.01KB        全文頁(yè)數(shù):16頁(yè)
  • 資源格式: DOC        下載積分:10積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開(kāi)放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要10積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫(xiě)的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開(kāi),此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒(méi)有明確說(shuō)明有答案則都視為沒(méi)有答案,請(qǐng)知曉。

第2章結(jié)構(gòu)化查詢語(yǔ)言sql

第2章 結(jié)構(gòu)化查詢語(yǔ)言SQL2.1 概述2.1.1 組成與功能1 SQL是“Structured Query Language(結(jié)構(gòu)式查詢語(yǔ)言)”的縮寫(xiě),1986年SQL語(yǔ)言被批準(zhǔn)為關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言的美國(guó)標(biāo)準(zhǔn)化語(yǔ)言。2SQL語(yǔ)言分類分為四大類:數(shù)據(jù)定義語(yǔ)言,數(shù)據(jù)查詢語(yǔ)言,數(shù)據(jù)操縱語(yǔ)言,數(shù)據(jù)控制語(yǔ)言。(1)數(shù)據(jù)定義語(yǔ)言:主要用創(chuàng)建、修改或刪除數(shù)據(jù)庫(kù)中對(duì)象,如表、視圖、模式、觸發(fā)器和存儲(chǔ)過(guò)程等,與其相關(guān)的主要SQL語(yǔ)句包括CREAT(創(chuàng)建)、ALTER(修改)、DROP(刪除);(2)數(shù)據(jù)操縱語(yǔ)言:主要用于數(shù)據(jù)的增、刪、改操作,主要語(yǔ)句有INSERT(插入)、DELETE(刪除)、UPDATE(修改);(3)數(shù)據(jù)查詢語(yǔ)言:主要用于數(shù)據(jù)的檢索查詢,與其相關(guān)的語(yǔ)句是SELECT(查詢);(4)數(shù)據(jù)控制語(yǔ)言:主要用于控制用戶對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限、完整性規(guī)則描述、事務(wù)控制等操作。控制用戶對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限的主要語(yǔ)句有 GRANT(授予權(quán)利)和REVOKE(取消權(quán)利)等。事務(wù)控制的語(yǔ)句包括 COMMIT(事務(wù)提交)和ROLLBACK(事務(wù)撤消)等。2SQL語(yǔ)言的特點(diǎn)1)非過(guò)程化語(yǔ)言: 非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操縱語(yǔ)言是面向過(guò)程的語(yǔ)言,用其完成某項(xiàng)請(qǐng)求,必須指定存取路徑。而用SQL語(yǔ)言進(jìn)行數(shù)據(jù)操作,用戶只需提出“做什么”,而不必指明“怎么做”,因此用戶無(wú)需了解存取路徑,存取路徑的選擇以及SQL語(yǔ)句的操作過(guò)程由系統(tǒng)自動(dòng)完成。這不但大大減輕了用戶負(fù)擔(dān),而且有利于提高數(shù)據(jù)獨(dú)立性。2)統(tǒng)一的語(yǔ)言: SQL語(yǔ)言集數(shù)據(jù)定義語(yǔ)言DDL、數(shù)據(jù)操縱語(yǔ)言DML、數(shù)據(jù)控制語(yǔ)言DCL的功能于一體,語(yǔ)言風(fēng)格統(tǒng)一,可以獨(dú)立完成數(shù)據(jù)庫(kù)生命周期中的全部活動(dòng),包括定義關(guān)系模式、錄入數(shù)據(jù)以建立數(shù)據(jù)庫(kù)、查詢、更新、維護(hù)、數(shù)據(jù)庫(kù)重構(gòu)、數(shù)據(jù)庫(kù)安全性控制等一系列操作要求,這就為數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開(kāi)發(fā)提供了良好的環(huán)境,例如用戶在數(shù)據(jù)庫(kù)投入運(yùn)行后,還可根據(jù)需要隨時(shí)地逐步地修改模式,并不影響數(shù)據(jù)庫(kù)的運(yùn)行,從而使系統(tǒng)具有良好的可擴(kuò)充性。3).面向集合的操作方式 SQL語(yǔ)言采用集合操作方式,不僅查找結(jié)果可以是元組的集合,而且一次插入、刪除、更新操作的對(duì)象也可以是元組的集合。 非關(guān)系數(shù)據(jù)模型采用的是面向記錄的操作方式,任何一個(gè)操作其對(duì)象都是一條記錄。例如查詢所有平均成績(jī)?cè)?0分以上的學(xué)生姓名,用戶必須說(shuō)明完成該請(qǐng)求的具體處理過(guò)程,即如何用循環(huán)結(jié)構(gòu)按照某條路徑一條一條地把滿足條件的學(xué)生記錄讀出來(lái)。4)是所有關(guān)系數(shù)據(jù)庫(kù)的公共語(yǔ)言。3SQL語(yǔ)言的基本數(shù)據(jù)類型SQL Server提供了數(shù)值型、字符型、日期型、二進(jìn)制型、位型、雙字節(jié)型等6大類數(shù)據(jù)類型。1)數(shù)值數(shù)據(jù)類型一般可以分為整數(shù)型、精確數(shù)值類型、浮點(diǎn)數(shù)值類型和貨幣類型等4類。數(shù)字?jǐn)?shù)據(jù)只包含數(shù)字。數(shù)字?jǐn)?shù)據(jù)類型包括正數(shù)和負(fù)數(shù)、小數(shù)(浮點(diǎn)數(shù))和整數(shù)整數(shù)由正整數(shù)和負(fù)整數(shù)組成,例如 39、25、0-2 和 33967。在 Micrsoft SQL Server 中,整數(shù)存儲(chǔ)的數(shù)據(jù)類型是 Int,Smallint和 Tinyint。Int 數(shù)據(jù)類型存儲(chǔ)數(shù)據(jù)的范圍大于 Smallint 數(shù)據(jù)類型存儲(chǔ)數(shù)據(jù)的范圍,而 Smallint 據(jù)類型存儲(chǔ)數(shù)據(jù)的范圍大于Tinyint 數(shù)據(jù)類型存儲(chǔ)數(shù)據(jù)的范圍。使用 Int 數(shù)據(jù)狗昔存儲(chǔ)數(shù)據(jù)的范圍是從 -2 147 483 648 到 2 147 483 647(每一個(gè)值要求4個(gè)字節(jié)存儲(chǔ)空間)。使用 Smallint 數(shù)據(jù)類型時(shí),存儲(chǔ)數(shù)據(jù)的范圍從 -32 768 到 32 767(每一個(gè)值要求2個(gè)字節(jié)存儲(chǔ)空間)。使用Tinyint 數(shù)據(jù)類型時(shí),存儲(chǔ)數(shù)據(jù)的范圍是從0 到255(每一個(gè)值要求1個(gè)字節(jié)存儲(chǔ)空間)。精確小婁數(shù)據(jù)在 SQL Server 中的數(shù)據(jù)類型是 Decimal 和 Numeric。這種數(shù)據(jù)所占的存儲(chǔ)空間根據(jù)該數(shù)據(jù)的位數(shù)后的位數(shù)來(lái)確定。在SQL Server 中,近似小數(shù)數(shù)據(jù)的數(shù)據(jù)類型是 Float 和 Real。例如,三分之一這個(gè)分?jǐn)?shù)記作。3333333,當(dāng)使用近似數(shù)據(jù)類型時(shí)能準(zhǔn)確表示。因此,從系統(tǒng)中檢索到的數(shù)據(jù)可能與存儲(chǔ)在該列中數(shù)據(jù)不完全一樣。2)字符型常用的字符型有Char、Varchar和Text等3種。(1)char類型。長(zhǎng)度固定。如果字段或變量被定義為char類型,而實(shí)際長(zhǎng)度沒(méi)有達(dá)到定義的長(zhǎng)度,則在字符串尾部添加空格以達(dá)到固定的字符數(shù)。(2)varchar類型。長(zhǎng)度可變。如果字段或變量被定義為varchar類型,而實(shí)際長(zhǎng)度沒(méi)有達(dá)到定義的長(zhǎng)度,SQL Server會(huì)自動(dòng)丟掉尾部的空格以節(jié)省空間。(3)text類型。當(dāng)要存儲(chǔ)的字符型數(shù)據(jù)非常龐大,長(zhǎng)度超過(guò)了8000個(gè)字符時(shí),可選擇text數(shù)據(jù)類型。即文本型,最大可存儲(chǔ)約2G的數(shù)據(jù)。3)日期時(shí)間型主要用來(lái)存儲(chǔ)日期和時(shí)間的組合數(shù)據(jù),根據(jù)取值范圍的大小分為datetime和smalldatetime兩種。日期和時(shí)間數(shù)據(jù)類型由有效的日期和時(shí)間組成。例如,有效的日期和時(shí)間數(shù)據(jù)包括“4/01/98 12:15:00:00:00 PM”和“1:28:29:15:01AM 8/17/98”。前一個(gè)數(shù)據(jù)類型是日期在前,時(shí)間在后一個(gè)數(shù)據(jù)類型是霎時(shí)間在前,日期在后。在 Microsoft SQL Server中,日期和時(shí)間數(shù)據(jù)類型包括Datetime 和 Smalldatetime 兩種類型時(shí),所存儲(chǔ)的日期范圍是從 1753 年 1 月 1 日開(kāi)始,到9999 年12 月 31 日結(jié)束(每一個(gè)值要求 8 個(gè)存儲(chǔ)字節(jié))。使用 Smalldatetime 數(shù)據(jù)類型時(shí),所存儲(chǔ)的日期范圍是 1900年 1 月 1日 開(kāi)始,到 2079 年 12 月 31 日結(jié)束(每一個(gè)值要求 4 個(gè)存儲(chǔ)字節(jié))。日期的格式可以設(shè)定。設(shè)置日期格式的命令如下:Set DateFormat format | format _var|其中,format | format_var 是日期的順序。有效的參數(shù)包括 MDY、DMY、YMD、YDM、MYD 和 DYM。在默認(rèn)情況下,日期格式為MDY。例如,當(dāng)執(zhí)行 Set DateFormat YMD 之后,日期的格式為年 月 日 形式;當(dāng)執(zhí)行 Set DateFormat DMY 之后,日期的格式為日 月有年 形式4)二進(jìn)制數(shù)據(jù)類型二進(jìn)制數(shù)據(jù)類型有定長(zhǎng)和變長(zhǎng)之分,主要用來(lái)存儲(chǔ)二進(jìn)制數(shù)據(jù),如圖形圖像、Word文檔文件等。SQL Server提供了binary、varbinary和image等3種常用二進(jìn)制數(shù)據(jù)類型。5)位型bit(位型)是SQL Server提供的一種支持邏輯數(shù)據(jù)的類型,只用來(lái)存儲(chǔ)1或0兩種,只有一位字節(jié)長(zhǎng),在SQL Server中bit字段的用途很多,可以作為“真/假”、“男/女”、“開(kāi)/關(guān)”這類狀態(tài)信息的標(biāo)志,可以作為活動(dòng)賬號(hào)的指示器或項(xiàng)目的使用標(biāo)志等。6)特殊數(shù)據(jù)類型有兩類不常用的數(shù)據(jù)類型,即雙字節(jié)數(shù)據(jù)類型和時(shí)間戳數(shù)據(jù)(Timestamp)類型。它們主要是為了實(shí)現(xiàn)特殊的用途,稱為特殊數(shù)據(jù)類型。時(shí)間戳數(shù)據(jù)類型往往因?yàn)槠涿侄斐烧`解,實(shí)際上它既不是日期,也不是時(shí)間數(shù)據(jù),而是SQL Server根據(jù)事件的發(fā)生次序自動(dòng)生成的一種二制數(shù)據(jù)。這個(gè)數(shù)據(jù)有很多用途,其中之一是在SQL Server關(guān)閉重新啟動(dòng)時(shí),作為進(jìn)行恢復(fù)工作的重要部分。另外利用timestamp數(shù)據(jù)還可以替代傳統(tǒng)的數(shù)據(jù)庫(kù)加鎖技術(shù)。2.3數(shù)據(jù)定義語(yǔ)言1)空值空值也可稱為NULL值??罩挡皇恰翱崭瘛狈颉?”值,它表示的是沒(méi)有值,是不確定的值。2)數(shù)據(jù)類型:確定后一般不改變2.3.1 數(shù)據(jù)庫(kù)在SQL中,數(shù)據(jù)庫(kù)被定義為對(duì)象的集合,這些對(duì)象主要有表、索引、視圖、存儲(chǔ)過(guò)程等。數(shù)據(jù)庫(kù)在磁盤(pán)上是以文件為單位存儲(chǔ)的,由數(shù)據(jù)文件和日志文件組成。數(shù)據(jù)文件中實(shí)際存放數(shù)據(jù)庫(kù)的所有數(shù)據(jù)和對(duì)象,日志文件用來(lái)存放用戶對(duì)數(shù)據(jù)庫(kù)所進(jìn)行的所有操作,它是維護(hù)數(shù)據(jù)庫(kù)完整性的重要工具。(1)創(chuàng)建數(shù)據(jù)庫(kù)語(yǔ)句格式: CREATE DATABASE <數(shù)據(jù)庫(kù)名>語(yǔ)句功能:創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),就是定義一個(gè)存儲(chǔ)空間。應(yīng)用舉例:CREATE DATABASE 教學(xué)管理庫(kù)(2)刪除數(shù)據(jù)庫(kù)語(yǔ)句格式:DROP DATABASE <數(shù)據(jù)庫(kù)名>語(yǔ)句功能:從計(jì)算機(jī)系統(tǒng)中刪除(撤消)一個(gè)數(shù)據(jù)庫(kù)。當(dāng)然會(huì)同時(shí)把該庫(kù)中的所有信息一并刪除掉。語(yǔ)句舉例:DROP DATABASE 教學(xué)管理232表1)表的概念關(guān)系數(shù)據(jù)庫(kù)的主要特點(diǎn)之一就是用表的方式組織數(shù)據(jù)。表是SQL語(yǔ)言存放數(shù)據(jù)、查找數(shù)據(jù)以及更新數(shù)據(jù)的基本數(shù)據(jù)結(jié)構(gòu)。在SQL語(yǔ)言中,表有嚴(yán)格的定義,它是一個(gè)由行、列組成的二維結(jié)構(gòu),通常把行稱做記錄,把列稱為字段。表2-1 學(xué)生基本情況登記表學(xué)號(hào)姓名性別出生日期專業(yè)年級(jí)2008001張紅女1988-3-6計(jì)算機(jī)應(yīng)用12008002李勇男1988-10-11信息管理1從表2-1可以看出,數(shù)據(jù)表一般具有以下屬性:(1)表名:表的惟一標(biāo)識(shí)。比如學(xué)生基本情況登記表;(2)字段:一張表可以由若干列組成,稱為字段。列名惟一,且同一列的數(shù)據(jù)必須具有相同的數(shù)據(jù)類型。(3)記錄:表中的每一行稱為一條記錄,比如“2008001,張紅,女1988.3.6,計(jì)算機(jī)應(yīng)用,1”,它描述了一名學(xué)生的若干屬性;(4)主關(guān)鍵字:能夠惟一表示數(shù)據(jù)表中的每條記錄的字段或者字段的組合,也稱為主碼、主鍵,比如學(xué)號(hào)。在一個(gè)學(xué)校中,學(xué)生的姓名可能重復(fù),但學(xué)號(hào)必須是惟一的。2)創(chuàng)建表結(jié)構(gòu)(1)語(yǔ)句格式:CREATE TABLE <表名> (<列名1><列的數(shù)據(jù)類型>,<列名2><列的數(shù)據(jù)類型>,.)(2)語(yǔ)句功能:在當(dāng)前數(shù)據(jù)庫(kù)中定義一個(gè)表的結(jié)構(gòu)(即關(guān)系模式)。(3)語(yǔ)句舉例:如果希望在“教學(xué)管理”數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)名為“學(xué)生表”的表結(jié)構(gòu),則可執(zhí)行下列語(yǔ)句:CREATE TABLE 學(xué)生表( 學(xué)號(hào) char(7) Primary Key, 姓名 char(6), 性別 char(2), 出生日期 datetime, 專業(yè) char(10), 年級(jí) int )在上述語(yǔ)句中,數(shù)據(jù)表的名稱為“學(xué)生表”,它包括學(xué)生號(hào)、姓名、性別、出生日期、專業(yè)、年級(jí)等6個(gè)字段(列)。學(xué)名的數(shù)據(jù)類型為Char型(字符型),長(zhǎng)度為7;出生日期的數(shù)據(jù)類型為Datatime型(日期型);年級(jí)的數(shù)據(jù)類型為Int型(整數(shù)型)。3)刪除表結(jié)構(gòu) (1)語(yǔ)句格式:DROP TABLE <表名> (2)語(yǔ)句功能: 從當(dāng)前數(shù)據(jù)庫(kù)中刪除一個(gè)表,當(dāng)然在刪除表結(jié)構(gòu)的同時(shí)也刪除了全部?jī)?nèi)容。(3) 語(yǔ)句舉例:DROP TABLE 學(xué)生表從當(dāng)前數(shù)據(jù)庫(kù)中刪除掉名稱為“學(xué)生表”的表,假定事先已經(jīng)在當(dāng)前庫(kù)建立過(guò)該表。232索引1索引的概念索引(Index)提供了一種快速訪問(wèn)數(shù)據(jù)的途徑。索引具有以下特點(diǎn)。(1)索引是在基本表的列上建立的一種數(shù)據(jù)加對(duì)象,它和基本表分開(kāi)存儲(chǔ),它的建立或撤消對(duì)數(shù)據(jù)的內(nèi)容毫無(wú)影響。(2)索引一經(jīng)創(chuàng)建,就完全由系統(tǒng)自動(dòng)選擇和維護(hù),不需要用戶指定使用索引,也不需要用戶執(zhí)行打開(kāi)索引或進(jìn)行重新索引等操作,所有這些工作都是由SQL Server數(shù)據(jù)庫(kù)管理系統(tǒng)自動(dòng)完成。(3)基本表的記錄數(shù)量越多,記錄越長(zhǎng),越有必要?jiǎng)?chuàng)建索引,這對(duì)加快查詢速度的效率十分明顯。相反,對(duì)于記錄比較少的基本表而言,創(chuàng)建索引的意義不大。(4)索引是為了加速查詢速度而創(chuàng)建的,但同時(shí)會(huì)影響基本表的插入、刪除或修改等更新活動(dòng)的速度,當(dāng)對(duì)基本表的數(shù)據(jù)進(jìn)行增刪改操作時(shí),索引文件也要隨之變化,以保持與基本表的一致,因此只有對(duì)那些數(shù)據(jù)量大、查詢頻度較高、實(shí)時(shí)性要求強(qiáng)的基本表要?jiǎng)?chuàng)建索引,并且一張基本表上不要?jiǎng)?chuàng)建過(guò)多的索引。2創(chuàng)建索引的原則索引是建立在基本表列上的對(duì)象,通??蓞⒖家韵略瓌t:(1)基本表的記錄數(shù)量越多,記錄越長(zhǎng),越有必要?jiǎng)?chuàng)建索引,這對(duì)加快查詢速度的效率十分明顯。相反,對(duì)于記錄比較少的基本表而言,創(chuàng)建索引的意義不大。(2)索引是為了加速查詢速度而創(chuàng)建的,但同時(shí)會(huì)影響基本表的插入、刪除或修改等更新活動(dòng)的速度,當(dāng)對(duì)基本表的數(shù)據(jù)進(jìn)行增、刪、改操作時(shí),索引文件也要隨之變化,以保持與基本表的一致,因此只有對(duì)那些數(shù)據(jù)量大、查詢頻度較高、實(shí)時(shí)性要求強(qiáng)的基本表要?jiǎng)?chuàng)建索引,并且一張基本表上不要?jiǎng)?chuàng)建過(guò)多的索引。(3)索引是建立在基本表列上的對(duì)象,到底在哪個(gè)列上創(chuàng)建索引,通常可改變列在WHERE、ORDER BY、GROUP BY子句中出現(xiàn)的頻率。比如,如果某個(gè)或某些列經(jīng)常出現(xiàn)在ORDER BY子句中,那么就可考慮在之上建立索引。3 不易創(chuàng)建索引的幾種情況(1)包含太多重復(fù)值的列;(2)查詢中很少被引用的列;(3)值特別長(zhǎng)的列。(4)具有很多NULL值的列(5)需要經(jīng)常插入、刪除、修改的列。(6)記錄較少的基本表(7)需要進(jìn)行頻繁、大批量數(shù)據(jù)更新的基本表4 索引的類型索引是創(chuàng)建在基本表列上的一種數(shù)據(jù)對(duì)象,從使用角度可將索引分為以下單列索引、惟一索引、復(fù)合索引三類;從是否改變基本表記錄的物理位置角度可分為聚集索引和非聚集索引兩類。實(shí)際的索引通常是這兩大類5種方式的組合。5 聚集和非聚集索引的對(duì)比聚集索引和非聚集索引是SQL Server中經(jīng)常用到的兩個(gè)概念,是非此即彼的關(guān)系。一個(gè)單列或復(fù)合索引即可以是聚集的也可以是非聚集的。在建立索引時(shí),是采用聚集方式還是非聚集方式主要應(yīng)從以下幾點(diǎn)考慮:(1)存取速度從建立了聚集索引的表中取出數(shù)據(jù)要比建立了非聚集索引的表快。但相對(duì)而言,聚集索引會(huì)降低向表中插入、刪除和修改數(shù)據(jù)的速度。(2)索引的數(shù)據(jù)對(duì)聚集索引的主要限制是每個(gè)表只能建立一個(gè)聚集索引。但是一個(gè)表可以有不止一個(gè)非聚集索引。實(shí)際上,對(duì)每個(gè)表最多可以建立249個(gè)非聚集索引。也可以對(duì)一個(gè)表同時(shí)建立聚集和非聚集索引。(3)所需空間非聚集索引需要較多的硬盤(pán)空間和內(nèi)存。6 創(chuàng)建索引(1)語(yǔ)句格式:CREATE UNIQUECLUSTERED INDEX <索引名>ON <表名>(<列名1>次序,<列名2>次序)(2)語(yǔ)句功能主要參數(shù)的意義是:UNIQUE:為表或視圖創(chuàng)建惟一索引(不允許存在索引值相同的兩行)。CLUSTERED:聚集索引索引名:在實(shí)際使用時(shí),用戶并不需要知道索引名,但在創(chuàng)建階段,索引名應(yīng)符合SQL Server的命名規(guī)則。并且在整個(gè)數(shù)據(jù)庫(kù)中,索引名不能重復(fù)。次序:每個(gè)“列名”后面可以用“次序”指定索引值的排列次序,ASC表示升序,DESC表示降序,默認(rèn)值是ASC。7 刪除索引(1)語(yǔ)句格式: DROP INDEX <索引名>,n(2)語(yǔ)句功能:使用該語(yǔ)句一次可以撤消一個(gè)或多個(gè)指定的索引,索引名之間用逗號(hào)間隔。234視圖1)視圖的概念視圖看上去同表一模一樣,具有一組命名的字段和數(shù)據(jù)項(xiàng),但它其實(shí)是一個(gè)虛擬的表,在數(shù)據(jù)庫(kù)中并不實(shí)際存。在視圖是由查詢數(shù)據(jù)庫(kù)表產(chǎn)生的,它限制了用戶能看到和修改的數(shù)據(jù)。2)視圖的作用視圖是由一個(gè)或多個(gè)基本表導(dǎo)出的表,人們通常把它理解為一組存儲(chǔ)在SQL Server數(shù)據(jù)庫(kù)中,經(jīng)過(guò)預(yù)先編譯的SELECT語(yǔ)句。在SQL Server中可以基本表一樣對(duì)視圖進(jìn)行查詢、刪除、更新操作,但在對(duì)視圖數(shù)據(jù)所進(jìn)行的增加、刪除、修改等更新操作最終都映射到相應(yīng)的基本表上,并有一定的限制,在實(shí)際應(yīng)用中,盡可能不要通過(guò)視圖對(duì)記錄進(jìn)行更新操作。(1)視圖是經(jīng)過(guò)預(yù)編譯的SELECT語(yǔ)句,存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器端,因此執(zhí)行視圖比從客戶端直接執(zhí)行SELECT語(yǔ)句速度更快、效率更高一些。(2)視圖屬于用戶模式范疇,在實(shí)際中,一般的用戶不一定具有SELECT語(yǔ)句方面的專門(mén)知識(shí),從戶友好性角度來(lái)說(shuō),視圖更便于用戶使用。(3)利用視圖可以簡(jiǎn)化的形式表達(dá)復(fù)雜的SELECT語(yǔ)句組,如嵌套查詢等。3)創(chuàng)建視圖(1)語(yǔ)句格式:CREATE VIEW <視圖名> (<列名>,.) AS <SELECT 子句>(2)語(yǔ)句功能:在當(dāng)前數(shù)據(jù)庫(kù)中根據(jù)SELECT子句的查詢結(jié)果建立一個(gè)視圖。4)刪除視圖(1)語(yǔ)句格式:DROP VIEW <視圖名> (2)語(yǔ)句功能:刪除當(dāng)前數(shù)據(jù)庫(kù)的一個(gè)視圖。235存儲(chǔ)過(guò)程1)存儲(chǔ)過(guò)程的概念存儲(chǔ)過(guò)程(Stored Procedure)是一組預(yù)先編譯好的,以一種可執(zhí)行的形式永久地存儲(chǔ)在數(shù)據(jù)中的SQL代碼,在master數(shù)據(jù)庫(kù)中存儲(chǔ)了一些SQL Server事先定義好的系統(tǒng)存儲(chǔ)過(guò)程,通常以sp_xxxx做為存儲(chǔ)過(guò)程的名字。當(dāng)用戶創(chuàng)建數(shù)據(jù)庫(kù)時(shí),也會(huì)自動(dòng)生成一些事先定義好的存儲(chǔ)過(guò)程,通常以dt_xxxx做為名字。使用存儲(chǔ)過(guò)程的好處可歸納為以下幾點(diǎn):(1)執(zhí)行速度快。(2)模塊化的程序設(shè)計(jì)。(3)減少網(wǎng)絡(luò)流量。(4)保證系統(tǒng)的安全性。2)創(chuàng)建存儲(chǔ)過(guò)程(1)語(yǔ)句格式:CREATE PROCEDURE <存儲(chǔ)過(guò)程名> AS <SQL語(yǔ)句>(2)語(yǔ)句功能:創(chuàng)建一個(gè)存儲(chǔ)過(guò)程,<SQL語(yǔ)句>多數(shù)是指利用SQL Server的Transact-SQL編寫(xiě)的程序。(3)create proc dsh_proc1as select * from 學(xué)生表3)執(zhí)行存儲(chǔ)過(guò)程(1)語(yǔ)句格式:EXEC <存儲(chǔ)過(guò)程名> ,或直接運(yùn)行存儲(chǔ)過(guò)程名。(2)語(yǔ)句功能:執(zhí)行當(dāng)前數(shù)據(jù)庫(kù)中事先定義好的一個(gè)存儲(chǔ)過(guò)程。Exec dsh_proc14)修改存儲(chǔ)過(guò)程(1)語(yǔ)句格式:ALTER PROC <存儲(chǔ)過(guò)程名> AS <SQL語(yǔ)句>。(2)語(yǔ)句功能:修改當(dāng)前數(shù)據(jù)庫(kù)中事先定義好的一個(gè)存儲(chǔ)過(guò)程。Alert proc dsh_proc1As select *from 學(xué)生表 where 專業(yè)=軟件5)刪除存儲(chǔ)過(guò)程(1)語(yǔ)句格式:DROP PROC <存儲(chǔ)過(guò)程名>。(2)語(yǔ)句功能:刪除當(dāng)前數(shù)據(jù)庫(kù)中事先定義好的一個(gè)存儲(chǔ)過(guò)程。Drop proc dsh_proc19觸發(fā)器觸發(fā)器是一種特殊的存儲(chǔ)過(guò)程,它基于一個(gè)表創(chuàng)建,但可以針對(duì)多個(gè)表進(jìn)行操作,與表緊密相連,可以看作是表定義的一部分,主要用來(lái)保證數(shù)據(jù)的完整性。在SQL Server中一張表可以有多個(gè)觸發(fā)器,用戶可以針對(duì)UPDATE、DELETE、INSERT語(yǔ)句分別設(shè)置觸發(fā)器,那么當(dāng)用戶進(jìn)行UPDATE、INSER、DELETE等數(shù)據(jù)維護(hù)操作執(zhí)行后,這些事先定義好的觸發(fā)器對(duì)象就會(huì)被“觸發(fā)”,并按事先定義好的規(guī)則自動(dòng)執(zhí)行。觸發(fā)器如果使用不當(dāng),會(huì)影響數(shù)據(jù)庫(kù)的效果,因此初學(xué)者慎用。24數(shù)據(jù)操縱語(yǔ)言SQL數(shù)據(jù)定義語(yǔ)言的主要作用是創(chuàng)建存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu),而數(shù)據(jù)操縱語(yǔ)言的主要作用則是向數(shù)據(jù)庫(kù)中填寫(xiě)數(shù)據(jù),具體包括增加、刪除、修改等操作。1)插入數(shù)據(jù)(1)語(yǔ)句格式INSERT INTO <表名>(<列名>, ) VALUES(<列值>,)(2)語(yǔ)句功能向一個(gè)表中所指定的若干列插入一行記錄。當(dāng)向表中插入一完整的記錄時(shí),可以省略列名表表。(3)語(yǔ)句舉例INSERT INTO 學(xué)生表 VALUES(2007001,王麗,女,1987-10-31,2)在當(dāng)前數(shù)據(jù)庫(kù)中執(zhí)行上述語(yǔ)句后,將在名為“學(xué)生表”的數(shù)據(jù)表中插入一名新同學(xué)的完整信息。由于“學(xué)生表”的學(xué)號(hào)、姓名和性別字段被定義為了字符型(Char型),因此它們對(duì)應(yīng)的字段值必須用半角的單引號(hào)引起來(lái),在SQL Server中日期型(Datetime)也需要用單引號(hào),而數(shù)值型(Int)則不需要這樣做。2)刪除數(shù)據(jù)(1)語(yǔ)句格式DELETE FROM <表名> WHERE <條件>(2)語(yǔ)句功能刪除一個(gè)表中滿足條件的所有記錄。(3)語(yǔ)句舉例DELETE FROM 學(xué)生表 WHERE 性別=男在當(dāng)前數(shù)據(jù)庫(kù)中執(zhí)行上述語(yǔ)句后,將把“學(xué)生表”中所有性別等于“男”的記錄刪除。此處用到的“性別=男”是一種邏輯表達(dá)式,表示刪除的條件,我們將在下一節(jié)詳細(xì)介紹。如果要?jiǎng)h除所有記錄,則可以直接執(zhí)行“DELETE FROM 學(xué)生表”。3)修改數(shù)據(jù)(1)語(yǔ)句格式UPDATE <表名> SET <列名>=<表達(dá)式>, WHERE <條件>(2)語(yǔ)句功能按條件修改一個(gè)表中的某些列的值。(3)語(yǔ)句舉例UPDATE 學(xué)生表 SET 姓名=王莉 WHERE 學(xué)號(hào)=2007001在當(dāng)前數(shù)據(jù)庫(kù)中執(zhí)行上述語(yǔ)句后,將把“學(xué)生表”中學(xué)號(hào)等于“2007001”的記錄的姓名字段的值修改為“王莉”。25數(shù)據(jù)查詢語(yǔ)言1)基本語(yǔ)法格式SQL數(shù)據(jù)查詢語(yǔ)言的主要作用是把數(shù)據(jù)從基本表中提取、展示出來(lái),它只對(duì)應(yīng)一條語(yǔ)句,即SELECT語(yǔ)句。SELECT的英文的選擇的意思,該語(yǔ)句帶有豐富的選項(xiàng)(稱為子句),每個(gè)選項(xiàng)都由一個(gè)關(guān)鍵字標(biāo)識(shí),其基本語(yǔ)法格式如下:SELECT 字段列表 INTO 新表名 FROM 源表名 WHERE 查詢條件 GROUP BY 分組表達(dá)式 HAVING 查找條件 ORDER BY 排序表達(dá)式 ASC | DESC 2)最簡(jiǎn)單的格式SELECT * FROM 表名 3)最常用的格式SELECT * FROM 表名 WHERE 查詢條件這條語(yǔ)句翻譯成中文就是:從(FROM)某張表中選擇(SELECT)出所有滿足條件(WHERE)的所有字段(*)。二、本章涉及的實(shí)際操作以下內(nèi)容均可在SQL Server 的查詢分析器內(nèi)進(jìn)行實(shí)驗(yàn)。1建立數(shù)據(jù)庫(kù)建立名為“教學(xué)管理庫(kù)”的數(shù)據(jù)庫(kù)create database教學(xué)管理庫(kù)2建立表建立名為“學(xué)生表”的表create table 學(xué)生表 (學(xué)號(hào) char (8) primary Key,姓名 char(8),性別 bit,出生日期 datetime,專業(yè) char(10),年齡 int)3數(shù)據(jù)的插入與查詢1)給表中插入一個(gè)數(shù)據(jù)insert into 學(xué)生表 values (2007001,王麗,1,1982-8-5,計(jì)算機(jī)應(yīng)用,26)insert into 學(xué)生表 values (2007002,張華,0,1982-9-5,計(jì)算機(jī)應(yīng)用,26)insert into 學(xué)生表 values (2007003,李敏,1,1982-3-15,計(jì)算機(jī)應(yīng)用,26)2) 查詢剛才輸入的記錄Select * from 學(xué)生表3) 教材29頁(yè)的例子學(xué)生表:create table 學(xué)生表 (學(xué)號(hào) char (8) primary Key,姓名 char(8),性別 bit,出生日期 datetime,專業(yè) char(10),年齡 int)課程表:create table 課程表 (課程號(hào) char (7) primary Key,課程名 char(20),任課教師 char (8)成績(jī)表:create table 成績(jī)表 (學(xué)號(hào) char (8),課程號(hào) char (7),成績(jī) Numeric (4,2)給學(xué)生表中添加的記錄:insert into 學(xué)生表 values (20030001,張青,1,1982-3-15,軟件,21)insert into 學(xué)生表 values (20030002,王麗,0,1984-6-29,軟件,19)insert into 學(xué)生表 values (20030003,趙紅,0,1985-7-21,軟件,18)insert into 學(xué)生表 values (20030004,李明,1,1981-9-21,應(yīng)用,22)insert into 學(xué)生表 values (20030005,趙東,1,1981-8-19,應(yīng)用,22)查看其中的內(nèi)容:Select * from 學(xué)生表給課程表中添加的記錄:insert into 課程表 values (1000044,計(jì)算機(jī)網(wǎng)絡(luò),張向東)insert into 課程表 values (1000045,程序設(shè)計(jì),王洪偉)insert into 課程表 values (1000046,有能力與應(yīng)用數(shù)據(jù)庫(kù),李利)查看其中的內(nèi)容:Select * from 課程表給成績(jī)表中添加的記錄:insert into 成績(jī)表 values (20030001,1000044,80.5)insert into 成績(jī)表 values (20030002,1000044,78.5)insert into 成績(jī)表 values (20030001,1000045,81.5)insert into 成績(jī)表 values (20030003,1000045,83)insert into 成績(jī)表 values (20030001,1000046,0)insert into 成績(jī)表 values (20030003,1000046,0)查看其中的內(nèi)容:Select * from 成績(jī)表4查詢的實(shí)例教材31頁(yè)開(kāi)始的各種涉及查詢的實(shí)例例1:查詢學(xué)生表中的學(xué)號(hào)、姓名、年齡、專業(yè)Select 學(xué)號(hào),姓名,年齡,專業(yè) from 學(xué)生表例2:通配符*的使用Select * from 學(xué)生表例3:基于字段的表達(dá)式,注意str、year、month、as的含義:按*年*月形式顯示出生年月Select 學(xué)號(hào),姓名,str(year(出生日期),4)+年+str(month(出生日期),2)+月 as 年月 from 學(xué)生表例4:distinct短語(yǔ)的使用:列出所有的專業(yè)名Select distinct 專業(yè) from 學(xué)生表例5:使用where子句:查詢所有年齡在19-20的學(xué)生情況Select * from 學(xué)生表 where 年齡 between 19 and 21Select * from 學(xué)生表 where 年齡>=19 and 年齡<=21例6:不顯示null值的記錄Select * from 成績(jī)表 where not (成績(jī) is null)例7:列出所有軟件專業(yè)女同學(xué)的記錄Select * from 學(xué)生表 where 專業(yè)=軟件 and 性別=0例8:練習(xí)日期型字段的使用:列出所有1985-1-1以后出生的學(xué)生信息Select * from 學(xué)生表 where 出生日期>1985-1-1例9:練習(xí)使用in 短語(yǔ):列出所有年齡為19,21的學(xué)生記錄Select * from 學(xué)生表 where 年齡 in (19,21)Select * from 學(xué)生表 where 年齡=19 or 年齡=21例10:練習(xí)使用LIKE短語(yǔ):列出所有姓王的學(xué)生的信息Select * from 學(xué)生表 where 姓名 like 王%例11:練習(xí)使用order by 字句:顯示所有“軟件”專業(yè)學(xué)生記錄Select * from 學(xué)生表 where 專業(yè)=軟件 order by 年齡例12:練習(xí)統(tǒng)計(jì)函數(shù)的使用:在學(xué)生表中列出專業(yè)個(gè)數(shù)Select count (distinct 專業(yè)) AS 專業(yè)數(shù) from 學(xué)生表例13:練習(xí)統(tǒng)計(jì)函數(shù)的使用:統(tǒng)計(jì)“學(xué)生表中”軟件專業(yè)學(xué)生個(gè)數(shù)Select count (*) AS 專業(yè)人數(shù) from 學(xué)生表 where 專業(yè)=應(yīng)用例14:練習(xí)統(tǒng)計(jì)函數(shù)的使用:查詢學(xué)生表中應(yīng)用專業(yè)學(xué)生的最大年齡,最小年齡,平均年齡Select max(年齡) as 最大, min(年齡) as 最小, avg(年齡) as 平均 from 學(xué)生表 where 專業(yè)=應(yīng)用Select max(年齡) as 最大, min(年齡) as 最小, avg(年齡) as 平均 from 學(xué)生表 where 專業(yè)=應(yīng)用例15:列出學(xué)生表中不同專業(yè)中,各專業(yè)的學(xué)生人數(shù)Select 專業(yè), count(*) as學(xué)生數(shù) from 學(xué)生表 group by 專業(yè)例16:練習(xí)into字句的使用Select * into 軟件專業(yè)學(xué)生表 from 學(xué)生表 order by 學(xué)號(hào)復(fù)雜查詢(連接查詢)例17: 列出所有學(xué)生的學(xué)號(hào),姓名,課程號(hào)和成績(jī)Select 學(xué)生表.學(xué)號(hào),姓名,課程號(hào),成績(jī) from 學(xué)生表,成績(jī)表 where 學(xué)生表.學(xué)號(hào)=成績(jī)表.學(xué)號(hào)嵌套查詢例18:列出所有學(xué)生的學(xué)號(hào),姓名,課程號(hào),課程名和成績(jī)Select 學(xué)生表.學(xué)號(hào),姓名,課程表.課程號(hào),課程名,成績(jī) from 學(xué)生表,課程表,成績(jī)表 where 學(xué)生表.學(xué)號(hào)=成績(jī)表.學(xué)號(hào) and 課程表.課程號(hào)=成績(jī)表.課程號(hào)例19:查詢所有女同學(xué)選修的課程號(hào)和課程名。Select課程號(hào),課程名 from 課程表 where 課程號(hào) in (select 課程號(hào) from 成績(jī)表 where 學(xué)號(hào) in (select 學(xué)號(hào) from 學(xué)生表 where 性別=0)例20:平均成績(jī)小于總平均成績(jī)的學(xué)生學(xué)號(hào)、姓名、專業(yè)。Select 學(xué)號(hào),姓名,專業(yè) from 學(xué)生表 where 學(xué)號(hào) in (select distinct 學(xué)號(hào) from 成績(jī)表 where 成績(jī)<(select avg(成績(jī)) from 成績(jī)表)2.6數(shù)據(jù)控制語(yǔ)言數(shù)據(jù)控制語(yǔ)言的種類很多,其中事務(wù)控制是最常用、最重要的一種。1)事務(wù)的概念事務(wù)(Transaction)是并發(fā)控制的基本單位,它反映了現(xiàn)實(shí)世界中需要以一個(gè)完整的單位提交的一項(xiàng)工作。SQL Server通過(guò)事務(wù)機(jī)制,將邏輯相關(guān)的一組操作捆綁在一起,以便服務(wù)器保持?jǐn)?shù)據(jù)的完整性。它是SQL復(fù)雜程序設(shè)計(jì)必不可少的內(nèi)容。在使用事務(wù)的情況下,SQL Server可以保證,要么所有的記錄要么全部處理,要么一行也不處理。如果修改了全部記錄的一半時(shí)服務(wù)器出錯(cuò)了,SQL Server會(huì)返回到以前未執(zhí)行UPDATE操作前的位置,清除它已經(jīng)修改過(guò)的數(shù)據(jù),這就是事務(wù)處理的作用。2)事務(wù)處理控制語(yǔ)句SQL Server中可通過(guò)以下3個(gè)語(yǔ)句完成事務(wù)控制:(1)開(kāi)始一個(gè)事務(wù):BEGIN TRANSACTION 事務(wù)名。(2)提交一個(gè)事務(wù):COMMIT TRANSACTION 事務(wù)名。(3)回滾一個(gè)事務(wù):ROLLBACK TRANSACTION 事務(wù)名在數(shù)據(jù)庫(kù)應(yīng)用程序設(shè)計(jì)中,事務(wù)控制語(yǔ)句的一般用法是:第1步:BEGIN TRAN 事務(wù)名第2步:對(duì)數(shù)據(jù)庫(kù)進(jìn)行增、刪、改等操作第3步:提交事務(wù)或回滾:基本邏輯是,如果沒(méi)有發(fā)生異常情況,則通過(guò)COMMIT語(yǔ)句提交事務(wù),確認(rèn)第2步的操作;否則執(zhí)行ROLLBACK回滾命令,撤消第2步的所有操作。16

注意事項(xiàng)

本文(第2章結(jié)構(gòu)化查詢語(yǔ)言sql)為本站會(huì)員(仙***)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!