快速提高用友U8系統(tǒng)維護(hù)??痏第1頁(yè)
快速提高用友U8系統(tǒng)維護(hù)??痏第2頁(yè)
快速提高用友U8系統(tǒng)維護(hù)??痏第3頁(yè)
快速提高用友U8系統(tǒng)維護(hù)??痏第4頁(yè)
快速提高用友U8系統(tǒng)維護(hù)專刊_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、引言 本??饕槍?duì)于剛剛加入用友維護(hù)隊(duì)伍、希望快速提高個(gè)人 面向 U8 軟件維護(hù)工作的 SQLServer 應(yīng)用能力的人員而編寫,特別 適用于 SQLServer 初學(xué)者。注意 :本專刊是為 SQLServer 快速入門而編寫,內(nèi)容簡(jiǎn)單概括,讀 者要使自己的 SQLServer 水平有質(zhì)的提高,在實(shí)際工作中要充分利 用 SQLServer 聯(lián)機(jī)幫助 ,它是最具權(quán)威的參考資料。本專刊主要內(nèi)容 :第一章 概述 U8 數(shù)據(jù)庫(kù)特點(diǎn)、常用的 SQL 工具、語法格式,以及SQLServer 數(shù)據(jù)庫(kù)中的一些常用的術(shù)語。第二章和第三章主要介紹 SQL 的基礎(chǔ)、高級(jí)應(yīng)用。第四章 簡(jiǎn)要介紹事件探查器的使用。事件

2、探查器是 U8 維護(hù)工作中最為常用的分析工具。附錄 內(nèi)容包括組成數(shù)據(jù)庫(kù)對(duì)象的概念、 SQLSERVER 的系統(tǒng)組 成以及 Transact_SQL 小手冊(cè), 可以作為查詢 SQLServer 信 息的快速參考。信息反饋:由于時(shí)間和水平有限,不當(dāng)之處和錯(cuò)誤在所難免,如果在閱讀 中發(fā)現(xiàn)本??绣e(cuò)誤之處,懇請(qǐng)讀者批評(píng)指正!如果讀者對(duì)本刊的編制或SQLServer學(xué)習(xí)方面有好的意見或建議,敬請(qǐng)email至如下地址:陳 媛 陳湘林 馬大岡 致謝:本期SQLServer專刊是在兩期新員工、部分分公司維護(hù)人員進(jìn) 行的SQLServer培訓(xùn)的基礎(chǔ)上整理而成。參與培訓(xùn)人員對(duì)本???編制提供了很多有益的意見和建

3、議,在這里對(duì)他們積極支持和配合 (特別是新員工李丹,對(duì)最后定稿的排版、勘誤做了大量工作)致以衷心的感謝!目錄第一章概述4第一節(jié)U8數(shù)據(jù)庫(kù)簡(jiǎn)述4第二節(jié)常用的SQL工具簡(jiǎn)介6第三節(jié)數(shù)據(jù)庫(kù)中的常用術(shù)語和概念 7第四節(jié)SQL語法格式說明 8第二章 SQL基礎(chǔ)應(yīng)用10第一節(jié)簡(jiǎn)單的SELECT查詢 11第二節(jié)Select語句中的常用子句及函數(shù) 11第三節(jié)連接(JOIN)語句13第四節(jié)數(shù)據(jù)操作語句 17第五節(jié)select子查詢語句 18第三章 SQL高級(jí)應(yīng)用21第一節(jié)創(chuàng)建、刪除數(shù)據(jù)庫(kù)和表 21第二節(jié)創(chuàng)建視圖和索引 22第三節(jié)創(chuàng)建和執(zhí)行存儲(chǔ)過程、觸發(fā)器和游標(biāo) 24第四節(jié)系統(tǒng)存儲(chǔ)過程、系統(tǒng)表 27第四章 事件探

4、查器 30第一節(jié)創(chuàng)建跟蹤30第二節(jié)事件探查器的精確跟蹤 34第三節(jié)實(shí)際工作中事件探查器的應(yīng)用 35附錄:37第一早概述SQL (Structured Query Language,結(jié)構(gòu)化查詢語言)是一種現(xiàn)今流行的數(shù)據(jù)庫(kù)語言,目前主流的數(shù)據(jù)庫(kù)產(chǎn)品都支持這種語言, 如常見的 Microsoft Access 、Microsoft SQLServer 、Oracle、 Sybase、MySQL等,并且這些數(shù)據(jù)庫(kù)產(chǎn)品都不同程度上對(duì)標(biāo)準(zhǔn)的SQL進(jìn)行了擴(kuò)展,以使 SQL應(yīng)用更為高效。用友產(chǎn)品以 Microsoft Access (如 8.12A 版本)或 MicrosoftSQLServer (如U8以上

5、版本)作為后臺(tái)數(shù)據(jù)庫(kù),目前(8.x、 U8)不支持其他的數(shù)據(jù)庫(kù)產(chǎn)品。第一節(jié)U8數(shù)據(jù)庫(kù)簡(jiǎn)述1.1 U8數(shù)據(jù)庫(kù)用友U8系列產(chǎn)品的后臺(tái)數(shù)據(jù)庫(kù)是采用Microsoft SQLServer 。U8系列產(chǎn)品的數(shù)據(jù)庫(kù)按功能主要可分為三類:A. 系統(tǒng)數(shù)據(jù)庫(kù)UFSystem;B. 賬套數(shù)據(jù)庫(kù) UFData_xxx_xxxx (如 UFData_999_2003,其中999表示賬套號(hào),2003表示會(huì)計(jì)年度);C. 模板數(shù)據(jù)庫(kù)UFModel。其中UFSystem庫(kù)用于存儲(chǔ)一些公共系統(tǒng)信息,如操作員信息、賬套系統(tǒng)信息等,UFData_xxx_xxxx庫(kù)用于存儲(chǔ)賬套數(shù)據(jù),UFModel 庫(kù)在新建賬套時(shí)作為模板數(shù)據(jù)庫(kù)使用

6、。每個(gè)SQLServer數(shù)據(jù)庫(kù)是由兩類文件組成:一類是數(shù)據(jù)文件, 包括主數(shù)據(jù)文件(擴(kuò)展名為mdf)和次要數(shù)據(jù)文件(擴(kuò)展名為ndf,該類文件不是必須的,U8數(shù)據(jù)庫(kù)通常沒有該文件);一類是日志文件(擴(kuò)展名為Idf )。1.2 8.X數(shù)據(jù)庫(kù)用友早期產(chǎn)品以 Access為后臺(tái)數(shù)據(jù)庫(kù),這些產(chǎn)品(如 8.12A) 目前仍有很多用戶在使用。大部分8.X產(chǎn)品的系統(tǒng)庫(kù)和賬套數(shù)據(jù)庫(kù)都是 Access數(shù)據(jù)庫(kù)類 型。每個(gè)Access數(shù)據(jù)庫(kù)只對(duì)應(yīng)一個(gè)文件,以mdb為擴(kuò)展名。以Access為后臺(tái)數(shù)據(jù)庫(kù)的產(chǎn)品,用Access軟件可以直接打開對(duì)應(yīng)的數(shù)據(jù)庫(kù)文件,該數(shù)據(jù)庫(kù)文件可以作為參考的數(shù)據(jù)字典使用(點(diǎn)擊每個(gè)表的設(shè)計(jì)模式,內(nèi)有

7、詳盡的字段含義解釋)。另外,以Access為后臺(tái)數(shù)據(jù)庫(kù)的產(chǎn)品安裝盤中有壓縮的演示賬 套數(shù)據(jù)庫(kù)文件,直接用Win zip解壓縮后,手工將該文件擴(kuò)展名更改 為以.mdb為結(jié)尾,就可以作為參照的數(shù)據(jù)字典使用。1.3 SQLServer 和 MSDE 的關(guān)系MSDE是SQLServer的一個(gè)簡(jiǎn)版,該版本是免費(fèi)使用的,功能 和SQLServer基本相同,只是在多用戶條件下運(yùn)行效率低于 SQLServer產(chǎn)品,而且,MSDE本身沒有一個(gè)可視化的操作界面, 只是在后臺(tái)運(yùn)行,不過, SQLServer等數(shù)據(jù)庫(kù)軟件仍可以在遠(yuǎn)程訪 問控制該數(shù)據(jù)庫(kù)。雖然用友支持SQLServer的產(chǎn)品也支持MSDE,但用友產(chǎn)品需

8、要的某些數(shù)據(jù)庫(kù)高級(jí)功能則要求用戶必須使用SQLServer作為后臺(tái)數(shù)據(jù)庫(kù)(如數(shù)據(jù)庫(kù)的數(shù)據(jù)抽取功能)。而且在實(shí)際的維護(hù)實(shí)踐中,也 會(huì)發(fā)現(xiàn),MSDE出現(xiàn)異常的情況遠(yuǎn)多于 SQLServer。所以,在維護(hù) 中如果遇到以 MSDE作為后臺(tái)數(shù)據(jù)庫(kù)的情況應(yīng)多加注意此方面的 問題。1.4 Microsoft SQLServer、MSDE 與 Access數(shù)據(jù)庫(kù)的比較Microsoft SQLServer 和 MSDE 支持的功能遠(yuǎn)多于Access,Access通常不支持SQL的高級(jí)功能,如:存儲(chǔ)過程、觸發(fā)器等。Microsoft SQLServer配有強(qiáng)大的輔助工具,特別是事件探查器 工具,而Access產(chǎn)

9、品沒有實(shí)現(xiàn)此類功能的工具。另外,Access的產(chǎn)品的安全性也遠(yuǎn)低于 SQLServer產(chǎn)品。第二節(jié)常用的SQL工具簡(jiǎn)介SQL本身是一種語言,需要在特定的環(huán)境中運(yùn)行。U8產(chǎn)品的Microsoft SQLServer、MSDE 以及 8.12A 產(chǎn)品的 Access 都為 SQL 提 供了運(yùn)行環(huán)境。為了使8.X、U8系列產(chǎn)品正常運(yùn)行,必須要先安裝好對(duì)應(yīng)的后 臺(tái)數(shù)據(jù)庫(kù)產(chǎn)品(關(guān)于 Microsoft Access 和 Microsoft SQLServer 如何 安裝,請(qǐng)參閱安裝盤幫助文件)。2.1 Microsoft SQLServerSQLServer中常用的工具包括:企業(yè)管理器、查詢分析器、事

10、件探查器等。如圖1所示:*1 Bicrosoft AccessMi er101 Mi erosoft FrontPage|W1 Mi crcsoft Word呂 Mi crosoft SQL Server 1勺查詢分析器烏用友ERT-U8甕導(dǎo)入和導(dǎo)出敎據(jù)L芻 MiVi sual卜宦服務(wù)管理器Mi crosoft Visual Studio 6. 0丸服務(wù)器網(wǎng)絡(luò)實(shí)用工員與 終端服務(wù)客尸端至客戶端網(wǎng)絡(luò)實(shí)用工具固V8知識(shí)庫(kù)S聯(lián)機(jī)叢書企業(yè)管理黑事件探直器墟在IIS中配置SQL XHL支持1圖1企業(yè)管理器:可進(jìn)行各種可視化的操作,功能強(qiáng)大,但由于其運(yùn)行 時(shí)消耗資源較大,所以當(dāng)計(jì)算機(jī)硬件條件不好或者SQL

11、Server負(fù)載太大時(shí),會(huì)有操作反映遲鈍等問題。查詢分析器:是交互式圖形工具,它使數(shù)據(jù)庫(kù)管理員或開發(fā)人員能 夠編寫查詢、,同時(shí)執(zhí)行多個(gè)查詢、,查看結(jié)果、,分析查詢計(jì)劃和獲得提高查詢性能的幫助。事件探查器:是圖形工具,使系統(tǒng)管理員得以監(jiān)視Microsoft? SQLServer?實(shí)例中的事件??梢圆东@有關(guān)每個(gè)事件的數(shù)據(jù)并將其保存 到文件或SQL Server表中供以后分析。2.2 Microsoft Access快捷方式如圖1所示。第三節(jié) 數(shù)據(jù)庫(kù)中的常用術(shù)語和概念本節(jié)主要介紹一些常用的SQLServer術(shù)語和概念,更多術(shù)語請(qǐng)參考聯(lián)機(jī)幫助中的“詞匯表”內(nèi)容,查詢位置如圖2所示。SQL Server

12、 .聯(lián)機(jī)叢書文件()編輯查看辺跳轉(zhuǎn)幫助令 4 上一步下一步后退 前逬活動(dòng)子集Al符可金立隸引守目錄 索引|搜索|書簽| 田施使用SQL Srvsr工具A鼻嶽難解咎Active -種易于使F 程序的VisL Basic腳本電3心詞匯養(yǎng)詞匸表圖2數(shù)據(jù)庫(kù)(database):為特定目的(如搜索、排序和重新組織數(shù)據(jù)) 而組織和提供的信息、表和其它對(duì)象的集合。數(shù)據(jù)庫(kù)存儲(chǔ)在文件中。如:UFData_999_2003就是一個(gè)數(shù)據(jù)庫(kù)。表(table): 一種二維數(shù)據(jù)對(duì)象,由行和列組成,用于存儲(chǔ)關(guān)系數(shù) 據(jù)庫(kù)中的數(shù)據(jù)。每個(gè)表存儲(chǔ)有關(guān)由數(shù)據(jù)庫(kù)建模的一類對(duì)象的信息。例如,某個(gè)教育數(shù)據(jù)庫(kù)將具有一個(gè)教師表、一個(gè)學(xué)生表和一

13、個(gè)課程 表。字段(field):存儲(chǔ)單個(gè)數(shù)據(jù)值的窗口或記錄中的某個(gè)區(qū)域。某些 數(shù)據(jù)庫(kù)(如 Microsoft Access)將字段用作列的同義詞。如 Accinformation 表中的 cSysID 字段。記錄(record):視作一個(gè)單元信息的一組相關(guān)字段(列)。在SQL數(shù)據(jù)庫(kù)中記錄更經(jīng)常被稱作行。第四節(jié)SQL語法格式說明在SQLServer聯(lián)機(jī)幫助中,可看到如下語句語法:SELECT ALL | DISTINCT TOP n PERCENT WITH TIES := *| table_ name | view_ name | table_alias .*| column_ name |

14、expression | IDENTITYCOL |ROWGUIDCOL AS column_alias | colu mn _alias = expressi on如何理解上句“ Tran sact-SQL,.n 中的各種符號(hào)的涵義呢?在聯(lián)機(jī)幫助中搜索 語法規(guī)則”,會(huì)找到如圖3所示內(nèi)容,其中包含了詳細(xì)的SQL語法符號(hào)的具體涵義。目錄監(jiān)|索引逼|援索麗)|卜Transact-SQL語袪規(guī)則Transact-SQL弓I用中的語慢黃聚團(tuán)便文件 騙輯 查看遡 跳轉(zhuǎn)簡(jiǎn) 幫助m劇上 歩盤蟲巍鼻Trjnsact-5QL 參考:=L1 Jttj|逢部集臺(tái))Transact-SQL語法規(guī)則因入門 E 新特性

15、匡唾安裝SQL Server + 垂 Q(L Server 構(gòu)架 穆晉理 SQL Server 1+ 0創(chuàng)逹和錐護(hù)數(shù)據(jù)庫(kù) F 創(chuàng)建租使用數(shù)據(jù)倉(cāng)庫(kù) E望訪問和更改關(guān)系數(shù)據(jù) S XML 和 Internet 支持3 IjJ Triitsi3 + (符串串聯(lián))自-【減本章小結(jié):本章只是簡(jiǎn)要介紹了一些比較基礎(chǔ)的術(shù)語和概念,目的是使讀 者對(duì)SQLServer有個(gè)總體的印象,以便能有效的進(jìn)行后續(xù)的學(xué)習(xí)。 更多的內(nèi)容還請(qǐng)參閱聯(lián)機(jī)幫助。第二章 SQL基礎(chǔ)應(yīng)用讓我們從Select語句開始對(duì)SQL語法的學(xué)習(xí)。本??兴褂?的SQL語句均在SQLServer查詢分析器中執(zhí)行。對(duì) SQL語言的學(xué) 習(xí),關(guān)鍵是要邊學(xué)習(xí)

16、邊實(shí)踐,讀者可以在SQLServer查詢分析器中實(shí)際練習(xí)本專刊提供的語句。Select語句的功能為從數(shù)據(jù)庫(kù)中檢索行,并允許從一個(gè)或多個(gè) 表中選擇一個(gè)或多個(gè)行或列,該語句包含眾多的子句,功能強(qiáng)大, 使用靈活。下面先簡(jiǎn)要說明在 SQLServer查詢分析器中執(zhí)行 SQL語句的步 驟:第一步:運(yùn)行查詢分析器,如圖3所示:棗甜L萱詢分折器-查詢 YA. UPDATAj38T_20a4.強(qiáng)碼 衣件(V 漏輯 查詢)工具 窗口血 幫助QP 沽I221圖3第二步:執(zhí)行選中待操作的數(shù)據(jù)庫(kù)語句。如圖3所示:選中useufdata_887_2004后,點(diǎn)擊綠色箭頭(或直接按F5)執(zhí)行,該語句中,use為連接目標(biāo)數(shù)

17、據(jù)庫(kù)的 SQL關(guān)鍵字,ufdata_887_2004是要進(jìn) 行相應(yīng)操作的目標(biāo)數(shù)據(jù)庫(kù)。第三步:執(zhí)行相應(yīng)的 SQL語句(如圖 3中的select * from accinformation 語句)。第一節(jié) 簡(jiǎn)單的SELECT查詢?cè)赟QLServer的查詢分析器中執(zhí)行如下兩句SQL語句:USE Northwi ndSELECT * FROM Order Details執(zhí)行該語句返回 Order Details表中包含所有列的記錄。這兩句SQL語句也可以合并為一條語句:SELECT * FROM Northwind.Order DetailsNorthwind.Order Details表示Order

18、 Details表是 Northwind 數(shù)據(jù)庫(kù)中的表,使用這種形式,就不用再提前連接數(shù)據(jù)庫(kù)了(即不 用使用use語句來連接數(shù)據(jù)庫(kù))。注意:由于上面語句中表名Order Details兩個(gè)單詞之間存在空格,所以使用中括號(hào),如果表名中不存在空格,如表名為 Orderdetails,則中括號(hào)可以省略。第二節(jié)Select 語句中的常用子句及函數(shù)2.1 SQL中函數(shù)的使用在SQL中的函數(shù)可以執(zhí)行一些儲(chǔ)如對(duì)某一列進(jìn)行匯總或?qū)⒁?個(gè)字符串中的字符轉(zhuǎn)換為大寫的操作。比較常用的函數(shù)有聚合函數(shù)、日期與時(shí)間函數(shù)、數(shù)學(xué)函數(shù)、轉(zhuǎn)換函數(shù)和字符函數(shù)等,具體內(nèi)容參 見附錄。在這里以一個(gè)最常用的聚合函數(shù)為例。sum()就如同

19、它的本意一樣, 返回某一列的所有數(shù)值的和??梢缘讲樵兎治銎髦袌?zhí)行如下語句(求數(shù)量的總和):SELECT sum(quantity) FROM Northwind.Order Details注意:此處必須指定要合計(jì)的具體列而不能使用*,并且該列必須是數(shù)值型。2.2 Select語句的常用子句Select 中的常用子句包括: Where, Order By , Group by , Having , Join等。Join語句會(huì)在第三節(jié)重點(diǎn)講解。本節(jié)主要講解前四個(gè)子句 的用法。2.2.1 Where 子句Where子句的作用是指定查詢返回行的條件。如:返回Northw ind數(shù)據(jù)庫(kù)中Order De

20、tails 表中的數(shù)量(quantity )字段值大于100的 記錄,SQL語句可寫為:SELECT* FROMNorthwind.Order DetailsWhere quantity1OO2.2.2 Order By 子句Order By子句是用來指定在 SELECT語句返回的列中所使用的 排序次序。女口:根據(jù)某一列排序(如OrderlD列),SQL語句可寫為:USE Northwi ndSELECT * FROM Order Details ORDER BY OrderID2.2.3 Group By 子句Group By子句主要和函數(shù)連用(如 sum函數(shù)),按指定列匯總。 如:返回 N

21、orthwind 數(shù)據(jù)庫(kù)中 Order Details 表中,productID 字段相 同的數(shù)量之和,SQL語句可寫為:SELECT ProductID, sum( qua ntity ) FROM Northw in d.Order Details Group By ProductID2.2.4 Havi ng子句Having子句一般要和 GROUP BY子句連用。如:上句中要再加一 個(gè)條件,數(shù)量之和大于1000的返回記錄,SQL語句可寫為:SELECT ProductID, sum( qua ntity ) FROM Northw in d.Order Details Group By

22、ProductID Having sum (quantity)10002.2.5 Where 子句和Having子句的區(qū)別Where子句和Having子句的主要區(qū)別: 和Group By連用時(shí),Where 后面的條件是先排除再進(jìn)行Group By匯總;而Having是在Group By匯總后,再用后面的條件進(jìn)行篩選。另外Having語句后的條件可以是聚合函數(shù)(如 sum函數(shù)、Max函數(shù)),而 where后不能接聚合函數(shù)。如 下面的語句:SELECT ProductID, sum( qua ntity ) FROM Northw in d.Order Details Group By Produ

23、ctID Having sum (quantity)1OOO如果用 Where語句后加相同篩選條件則無法實(shí)現(xiàn)目標(biāo)功能。第三節(jié) 連接(Join )語句Join子句的主要作用,就是將兩個(gè)表橫向連接起來。Join分為內(nèi)連接和外連接。內(nèi)連接為Inner Join (默認(rèn)形式,Inner可以省略); 外連接分為三個(gè) Left Outer Join、Right Outer Join、Full Outer Join (其 中的Outer可以省略)。下面舉一個(gè)例子來說明 Join子句的用法。有兩個(gè)表father和son 結(jié)構(gòu)如下(其中father表的Fid字段和Son表的Fid字段是對(duì)應(yīng)的): father

24、表FidName1A2B3CSon表SidNameFid1Aso n112Aso n213Aso n314Cson135Cson236Dsonl43.1 使用內(nèi)連接語句 Inner Join 連接Inner Join返回兩個(gè)表中匹配的行。兩個(gè)表中不匹配的行不在結(jié) 果中顯示。如果未指定聯(lián)接類型,則該連接形式為默認(rèn)形式。在SQLServer查詢分析器中執(zhí)行如下語句:Select * From father Join son On father.fid = son.fid結(jié)果如下:FidNameSidNameFid11A1Aso n1121A2Aso n2131A3Aso n3143C4Cson13

25、53C5Cson233.2 使用左連接語句 Left Outer Join 連接Left Outer Join指定在結(jié)果集中除包含左右表中匹配的數(shù)據(jù)外,還返回左表中所有不滿足聯(lián)接條件的行,且右表中相應(yīng)字段值 為NULL。其中Outer可以省略,但 Left和Join關(guān)鍵字不可省略。在SQLServer查詢分析器中執(zhí)行如下語句:Select * From father Left Join son On father.fid = son.fid結(jié)果如下(注意下表中的NULL):FidNameSidNameFid11A1Aso n1121A2Aso n2131A3Aso n3142BNULLNULL

26、NULL53C4Cson1363C5Cson23在SQLServer查詢分析器中執(zhí)行如下語句:Select * fromson.n ame is null實(shí)現(xiàn)的功能為:father left join son on father.fid = son.fid where找出在 father表中有,而在 son表中沒有對(duì)應(yīng)的記錄。3.3 使用右連接語句 Right Outer Join 連接Right Outer Join語句和Left Outer Join 語句的用法原理相 同。Right Outer Join語句是在結(jié)果集中除包含左右表中匹配的數(shù) 據(jù)外,還返回右表中所有不滿足聯(lián)接條件的行,且左

27、表中相應(yīng)字段 值為 NULL。其中Outer可以省略,但 Right和Join關(guān)鍵字不可省 略。在SQLServer查詢分析器中執(zhí)行如下語句:Select * From father Right Join son On father.fid = son.fid結(jié)果如下(注意下表中的NULL):FidNameSidNameFid11A1Aso n1121A2Aso n2131A3Aso n3143C4Cson1353C5Cson236NULLNULL6Dson14在SQLServer查詢分析器中執(zhí)行如下語句:Select * from father Right join son on fathe

28、r.fid = son.fid where father. name is null實(shí)現(xiàn)的功能為:找出在Son表中有,而在father表中沒有對(duì)應(yīng)的記錄。3.4 使用全連接語句 Full Outer Join 連接Full Outer Join是指定在結(jié)果集中包含左表或右表中不滿足聯(lián)接條件的行,并將對(duì)應(yīng)于另一個(gè)表的輸出列設(shè)為NULL。這是對(duì)通常由INNER JOIN返回的所有行的補(bǔ)充。其中Outer可以省略,但Full和Join關(guān)鍵字不可省略。在SQLServer查詢分析器中執(zhí)行如下語句:Select * From father Full Join son On fathered = son.

29、fid結(jié)果如下(注意下表中的NULL):FidNameSidNameFid11A1Aso n1121A2Aso n2131A3Aso n3143C4Cson1353C5Cson236NULLNULL6Dson1472BNULLNULLNULL在SQLServer查詢分析器中執(zhí)行如下語句:Select * from father Full join son on father.fid = son.fid where father. name is null Or is null實(shí)現(xiàn)的功能為:找出在Son表中有,而在father表中沒有對(duì)應(yīng)的記錄以及在 Father表中有,而在s

30、on表中沒有對(duì)應(yīng)的記錄。3.5 Join子句小結(jié)在 U8 產(chǎn)品中,大量使用了Inner Join、Left Join、Right Join 和Full Join 子句。Join語句以其靈活的應(yīng)用方式,可以方便的實(shí)現(xiàn)各種的復(fù)雜查 詢功能。有些簡(jiǎn)單的功能也能用另外的一個(gè)子句:IN子句可以實(shí)現(xiàn),但I(xiàn)N子句實(shí)現(xiàn)的功能要比Join語句簡(jiǎn)單很多。因此一定要重點(diǎn)學(xué)習(xí)Join語句的各種靈活使用的方法。In子句會(huì)在Select語句子查詢語句中講解。3.6 Union 子句的用法Join子句是用來將兩個(gè)表橫向連接起來組成一個(gè)新表,而Union子句是將兩個(gè)表縱向連接起來組成一個(gè)新表。當(dāng)然,Union縱向連接兩個(gè)表是

31、有限制條件的:兩個(gè)表的列數(shù) 相等,且對(duì)應(yīng)列的類型兼容(可以簡(jiǎn)單的理解為類型相同)。具體的Union語法請(qǐng)查詢聯(lián)機(jī)幫助。第四節(jié)數(shù)據(jù)操作語句數(shù)據(jù)操作語句包括INSERT、 UPDATE和DELETE等4.1 插入Insert Into子句使用方法可以使用INSERT INTO在當(dāng)前表中創(chuàng)建新行。在SQLServer查詢分析器中執(zhí)行如下語句:INSERT INTO pubs.titles(title_id, title, type, pub_id, price)VALUES (BU9876, Creat ing Web Pages, busi ness,1389, 29.99)Pubs.titles

32、 是插入操作的目標(biāo)數(shù)據(jù)表,title_id 、title 、type、pub_id、price 是目標(biāo)數(shù)據(jù)表的列名字, Values關(guān)鍵字后 面是要插入對(duì)應(yīng)列的具體數(shù)據(jù)。4.2 DELETE刪除子句使用方法DELETE從表中刪除行。為了盡可能的減少誤操作最好在執(zhí)行 delete語句之前,先執(zhí)行對(duì)應(yīng)的select語句,以確定 Where后面條件的準(zhǔn)確性。在SQLServer查詢分析器中執(zhí)行如下語句(刪除剛才插入的記 錄):select * from pubs.titles where title_id =BU9876delete from pubs.titleswhere title_id =

33、BU98764.3 UpDate子句使用方法UPDATE子句是用于更改表中的現(xiàn)有數(shù)據(jù)。為了盡可能的減少誤操作最好在執(zhí)行 UPDATE語句之前,先執(zhí)行對(duì)應(yīng)的 select語句,以 確定 Where后面條件的準(zhǔn)確性。在SQLServer查詢分析器中執(zhí)行如下語句(更改剛才插入的記 錄,如果已經(jīng)刪除,請(qǐng)重新用In sert Into插入語句插入相應(yīng)的數(shù)據(jù)):select * from pubs.titles where title_id =BU9876UpDate pubs.titles set price = 200 where title_id =BU98764.4 Select Into子句使用

34、方法SELECTINTO new_tableFrom子句創(chuàng)建新表并將查詢的結(jié)果行插入新表中。在SQLServer查詢分析器中執(zhí)行如下語句:Select *Into pubs.new_table1From pubs.titles用語句 Select * from pubs.new_table1可以查詢出剛才新生成的表及其中剛剛插入的數(shù)據(jù)。注意:Select Into子句并不能將原來表的一些關(guān)系復(fù)制到新表中(如外鍵等),它只能插入相應(yīng)的數(shù)據(jù)。所以要想既復(fù)制表關(guān)系又復(fù)制其中的數(shù)據(jù),請(qǐng)使用SQLServer企業(yè)管理器中提供的導(dǎo)表功能。第五節(jié)Select子查詢語句5.1 子查詢使用方法子查詢是一個(gè) SE

35、LECT查詢,任何允許使用表達(dá)式的地方都 可以使用子查詢。在SQLServer查詢分析器中執(zhí)行如下語句(一個(gè)子查詢用作SELECT語句中名為 MaxUnitPrice 的列表達(dá)式):SELECT Ord.OrderlD, Ord.OrderDate,(SELECT MAXQrdDet.UnitPrice)FROM Northwind.dbo.Order Details AS OrdDetWHERE Ord.OrderID = OrdDet.OrderID) AS Max Un itPriceFROM AS Ord其中的As關(guān)鍵字用于指定別名。5.2 In子句的使用方法IN子句是確定給定的值是否

36、與子查詢或列表中的值相匹配。下面的示例選擇名稱和州的列表,列表中列出所有居住在加利 福尼亞、印地安納或馬里蘭州的作者:SELECTa un ame, stateFROhpubs.authorsWHEREtate IN (CA, IN, MD)請(qǐng)參看3.2 左連接語句Left Outer Join ”的例子(找出在 father表中有,而在son表中沒有對(duì)應(yīng)的記錄):Select * from father left join son on father.fid = son.fid where son.n ame is null對(duì)等的In子句是(注意這個(gè)語句并沒有將兩個(gè)表橫向連接起 來,同時(shí)也用

37、了子查詢語句):Select * from father where father.fid Not In (Select fid from son)本章小結(jié):本章主要講解了 SQL語句的常用語法。Select語句及其子句 靈活的語法是學(xué)習(xí)的難點(diǎn), 在U8維護(hù)工作中,Join子句是最為常 用的語法,必須重點(diǎn)學(xué)習(xí)。本專刊附錄部分,詳盡講解了本章所涉及SQL語句一些較為高級(jí)靈活的用法,另外學(xué)習(xí)這些語法時(shí),一定要結(jié)合SQLServer的聯(lián)機(jī)幫助。第三章SQL高級(jí)應(yīng)用有了 SQL基礎(chǔ),本章開始講解一些 SQL的高級(jí)應(yīng)用。包括如 何創(chuàng)建數(shù)據(jù)庫(kù)、表、索引,視圖、存儲(chǔ)過程、觸發(fā)器、游標(biāo)的簡(jiǎn)單 應(yīng)用等,同時(shí)本章

38、也講解一些能有效提高維護(hù)效率的SQL知識(shí):系統(tǒng)存儲(chǔ)過程、系統(tǒng)表的應(yīng)用。第一節(jié)創(chuàng)建、刪除數(shù)據(jù)庫(kù)和表1.1創(chuàng)建、刪除數(shù)據(jù)庫(kù)的 SQL語法創(chuàng)建數(shù)據(jù)庫(kù)的語法:create database數(shù)據(jù)庫(kù)名在查詢分析器中寫:Create Database testData,選中該語句,按F5執(zhí)行,創(chuàng)建了一個(gè)名字為testData的數(shù)據(jù)庫(kù)。刪除數(shù)據(jù)庫(kù)的語法:drop database數(shù)據(jù)庫(kù)名在查詢分析器中寫:Drop Database testData,選中該語句,按F5執(zhí)行,刪除名字為testData的數(shù)據(jù)庫(kù)。1.2創(chuàng)建、修改、刪除數(shù)據(jù)庫(kù)中表的SQL語法創(chuàng)建表的語法:create table表名(列名1數(shù)據(jù)類型

39、(長(zhǎng)度)not NULL NULL,列名2數(shù)據(jù)類型(長(zhǎng)度)not NULL NULL,)在查詢分析器中寫:use testDataCreate table testTablel(id int.n ame varchar(20)選中上面的SQL語句,按 F5執(zhí)行,創(chuàng)建一個(gè)名字為testTablel 的表。修改表的關(guān)鍵字是:Alter table (其后可能跟隨 ALTERCOLUMN ADD DROPOLUM等),具體語法可到 SQLServer聯(lián)機(jī)幫助中查詢。刪除表的語法:Drop table表名(可以一次性刪除多個(gè)表,表名 和表名之間用逗號(hào)隔開)。在查詢分析器中寫: Drop table t

40、estTable1,選中該語句,按 F5 執(zhí)行,刪除名字為testTable1的表。第二節(jié)創(chuàng)建視圖和索引2.1創(chuàng)建視圖CREATE VIEW是創(chuàng)建一個(gè)虛擬表,該表以另一種方式表示一 個(gè)或多個(gè)表中的數(shù)據(jù)。 CREATE VIEW 必須是查詢批處理中的第 條語句。創(chuàng)建視圖的簡(jiǎn)單語法是:CREATE VIEW視圖名As下面的示例為pubs庫(kù)創(chuàng)建的名字為TestView的視圖:use pubsgoCreate View TestViewAsSelect * from authors視圖的使用和表基本相同,如:select * from pubs.testview2.2刪除視圖刪除視圖的語法為:drop

41、 View視圖名下面的示例為刪除剛剛在pubs庫(kù)的創(chuàng)建的視圖:USE pubs drop view testview2.3創(chuàng)建索引為給定表或視圖創(chuàng)建索引。只有表或視圖的所有者才能為表創(chuàng)建索引。表或視圖的所有者可以隨時(shí)創(chuàng)建索引,無論表中是否有數(shù) 據(jù)??梢酝ㄟ^指定限定的數(shù)據(jù)庫(kù)名稱,為另一個(gè)數(shù)據(jù)庫(kù)中的表或視 圖創(chuàng)建索引。創(chuàng)建索引的簡(jiǎn)單語法是:create uniqueclusteredindex 索弓丨名 on 表名(列asc|desc)下面的示例為pubs庫(kù)的authors 表的au_id列創(chuàng)建索引: USEpubsCREATE INDE 冶u_idndONauthors (au_id)2.4刪除

42、索引刪除索引的語法為:drop index表名.索引名下面的示例為刪除剛剛在pubs庫(kù)的authors 表的au_id列創(chuàng)建的索引:USE pubsdrop in dex authors.au_id_ ind視圖和表的用法基本相同。 但他們之間在作用上有很大區(qū)別的: 視圖是用來動(dòng)態(tài)的創(chuàng)建一個(gè)表,它占用的數(shù)據(jù)庫(kù)空間比較?。ɑ?上就是一些SQL語句),但使用時(shí)的執(zhí)行速度一般比表要慢一些; 表的缺點(diǎn)就是比視圖占用的數(shù)據(jù)庫(kù)空間大,但執(zhí)行速度比較快。另 外視圖是以表為基礎(chǔ)的。第三節(jié)創(chuàng)建和執(zhí)行存儲(chǔ)過程、觸發(fā)器和游標(biāo)3.1創(chuàng)建存儲(chǔ)過程創(chuàng)建存儲(chǔ)過程 的關(guān) 鍵字是 Create Proc (也 可以是crea

43、te procedure)在SQLServer查詢分析器中執(zhí)行如下語句創(chuàng)建一個(gè)名字為testPro的存儲(chǔ)過程:use pubsgocreate proc testProcasselect * from authors帶參數(shù)存儲(chǔ)過程的創(chuàng)建:use pubsgocreate proc testProcX n ame varchar(20)asselect * from authors where au_l name = n ame3.2執(zhí)行存儲(chǔ)過程執(zhí)行無參數(shù)存儲(chǔ)過程的語句是:exec pubs.testproc執(zhí)行帶參數(shù)存儲(chǔ)過程的語句是(注意參數(shù)的賦值):exec pubs.testprocx n

44、 ame=white3.3刪除存儲(chǔ)過程刪除無參數(shù)和帶參數(shù)的存儲(chǔ)過程的語句分別是:use pubsdrop proc testProc use pubsdrop proc testprocX3.4創(chuàng)建觸發(fā)器CREATE TRIGGER是創(chuàng)建觸發(fā)器,觸發(fā)器是一種特殊的存儲(chǔ) 過程,在用戶試圖對(duì)指定的表執(zhí)行指定的數(shù)據(jù)修改語句時(shí)自動(dòng)執(zhí)行。Microsoft? SQL Server?允許為任何給定的INSERT、UPDATE 或DELETE語句創(chuàng)建多個(gè)觸發(fā)器。在pubs庫(kù)中的titles表上創(chuàng)建一個(gè)名字為 mySelect觸發(fā)器,當(dāng) 對(duì)改表做插入和更新操作時(shí),該觸發(fā)器自動(dòng)執(zhí)行,檢索出修改后的titles表

45、的記錄:use pubsgoCREATE TRIGGERiySelectONtitlesFORINSERT, UPDATEasSelect * from titlesGO可執(zhí)行如下語句看一下觸發(fā)器的運(yùn)行結(jié)果:update titles set price = 19 where title_id = bu10323.5刪除觸發(fā)器DROP TRIGGER!從當(dāng)前數(shù)據(jù)庫(kù)中刪除一個(gè)或多個(gè)觸發(fā)器。其語法為:DROP TRIGGER 觸發(fā)器名字,n 刪除觸發(fā)器的語句是:use pubsDROP TRIGGER mySelect3.6游標(biāo)的使用DECLARCURSO定義Tran sact-SQL 服務(wù)器游標(biāo)

46、的特性,例如 游標(biāo)的滾動(dòng)行為和用于生成游標(biāo)對(duì)其進(jìn)行操作的結(jié)果集的查詢。創(chuàng)建游標(biāo)的簡(jiǎn)單語法是:DECLARE cursor_name CURSORFOR select_statement下面是一個(gè)具體創(chuàng)建使用游標(biāo)的語句:-建立(定義)一個(gè)游標(biāo)DECLARE authors_cursor CURSORFORSELECT au_l nameFROM authors-(打開游標(biāo))OPENbuthors_cursor-取游標(biāo)記錄,插入到變量中FETCH NEXT FROMuthors_cursorINTO aun ame-瀏覽游標(biāo)記錄WHILE FETCH_STATUS = 0BEGINprint au

47、_ In ame-取下一記錄FETCH NEXTFROM authors_cursor INTO au_l nameEND-關(guān)閉游標(biāo)CLOSEauthors_cursor -(釋放游標(biāo))DEALLOCATEiuthors_cursor第四節(jié)系統(tǒng)存儲(chǔ)過程、系統(tǒng)表4.1系統(tǒng)存儲(chǔ)過程系統(tǒng)存儲(chǔ)過程是SQLServer內(nèi)置的具有強(qiáng)大功能的存儲(chǔ)過程, 系統(tǒng)存儲(chǔ)過程一般都是以SP_開始的,應(yīng)盡可能利用已有的系統(tǒng)存儲(chǔ)過程來實(shí)現(xiàn)操作目標(biāo)(可以將系統(tǒng)存儲(chǔ)過程簡(jiǎn)單的理解為是SQLServer的輔助工具)。以下列出一些比較常用的系統(tǒng)存儲(chǔ)過程:系統(tǒng)存儲(chǔ)過程的名字作用sp attach db將數(shù)據(jù)庫(kù)附加到服務(wù)器sp_at

48、tach_s in gle_file_db將只有一個(gè)數(shù)據(jù)文件(就是 以.mdf為擴(kuò)展名的文件)的 數(shù)據(jù)庫(kù)附加到當(dāng)前服務(wù)器sp_detach_db從服務(wù)器分離數(shù)據(jù)庫(kù)sp_helptext顯示規(guī)則、默認(rèn)值、未加密 的存儲(chǔ)過程、用戶定義函數(shù)、 觸發(fā)器或視圖的文本sp_executesql執(zhí)行可以多次重用或動(dòng)態(tài)生 成的Transact-SQL 語句或 批處理,Tran sact-SQL語句 或批處理可以包含嵌入?yún)?shù)關(guān)于系統(tǒng)存儲(chǔ)過程, 在SQLServer聯(lián)機(jī)幫助 “ Transact-SQL參 考系統(tǒng)存儲(chǔ)過程,概述”中有詳細(xì)介紹。4.2系統(tǒng)表系統(tǒng)表也是一種數(shù)據(jù)庫(kù)中的表,是由系統(tǒng)自動(dòng)創(chuàng)建維護(hù)的,用 戶通

49、常在系統(tǒng)表中得到很多有用信息。這里重點(diǎn)講解兩個(gè)系統(tǒng)表:sysdatabases表和sysobjects表,其他系統(tǒng)表的介紹請(qǐng)參看附錄和聯(lián)機(jī)幫助。4.2.1 sysdatabases 系統(tǒng)表sysdatabases 系統(tǒng)表 存在于 master 庫(kù)內(nèi),Microsoft? SQL Server?中的每個(gè)數(shù)據(jù)庫(kù)在該表中占一行,該表比較常用的兩個(gè)字 段是name字段(代表數(shù)據(jù)庫(kù)的名稱),dbid字段(代表數(shù)據(jù)庫(kù)ID, 這個(gè)字段在后面的 SQLServer事件探查器的篩選操作時(shí)會(huì)用到)在SQLServer查詢分析器中執(zhí)行一下語句,找出數(shù)據(jù)庫(kù)名字為 UFSystem的數(shù)據(jù)庫(kù)ID :select dbid

50、,* from master.sysdatabaseswhere n ame = ufsystem4.2.2 sysobjects系 統(tǒng)表sysobjects系統(tǒng)表存在于每個(gè)用戶自建的數(shù)據(jù)庫(kù)中,在數(shù)據(jù)庫(kù)內(nèi)創(chuàng)建的每個(gè)對(duì)象(約束、默認(rèn)值、日志、規(guī)則、存儲(chǔ)過程等)在表 中占一行,該表常用的字段有xtype字段(代表對(duì)象類型,常用的類型有:U =用戶表、P =存儲(chǔ)過程、TR =觸發(fā)器、V =視圖、D =默認(rèn)值或 DEFAULT約束),name字段(代表對(duì)象名,如表名、 存儲(chǔ)過程名)在SQLServer查詢分析器中執(zhí)行一下語句,找出表名字為au開頭的用戶自定義表:select name from pub

51、s.sysobjects where xtype = u and name like au%其中的%是通配符。系統(tǒng)表的高效使用方法如果要查找一個(gè)指定名字的觸發(fā)器所依賴的表,那么利用 sysobjects系統(tǒng)表可以快速實(shí)現(xiàn)該需求。女口: pubs庫(kù)中有個(gè)名字是 employeensupd的觸發(fā)器(這個(gè)名 字很有可能是被后面講的事件探查器跟蹤出來的結(jié)果),若想查詢?cè)撚|發(fā)器是依賴于哪個(gè)表時(shí),以下的語句非常有用。檢索出指定數(shù)據(jù)庫(kù)中所有的觸發(fā)器名字:select * from pubs.sysobjects where xtype = tr根據(jù)觸發(fā)器的具體名字,查出它所依賴的表:select objec

52、t_name(parent_obj) as 表名 from pubs.sysobjects where xtype = tr and n ame = employee, in supd上句中的object_name()是個(gè)系統(tǒng)函數(shù),作用是將對(duì)象ID轉(zhuǎn)換 為對(duì)應(yīng)的對(duì)象名。Object_ID()作用與之相反。本章小結(jié):通過本章與上一章的學(xué)習(xí),對(duì)SQL語句的用法及數(shù)據(jù)庫(kù)系統(tǒng)表 結(jié)構(gòu)有了框架性的了解,為SQL Server其他功能的應(yīng)用提供了基礎(chǔ), 但在工作過程中,還要根據(jù)實(shí)際遇到的問題,對(duì)本部分所涉及知識(shí) 進(jìn)行更深入的研究, 才能使SQL語句的功能得到更靈活、 全面的應(yīng) 用。第四章事件探查器的使用本

53、章主要介紹在實(shí)際維護(hù)工作中經(jīng)常用到的一個(gè)SQLServer工具:事件探查器。事件探查器的功能是監(jiān)視 SQL Server數(shù)據(jù)庫(kù)系統(tǒng)引擎事件,主要用于監(jiān)視SQL SERVER系統(tǒng)的運(yùn)行性能。此外,它還能夠以連續(xù)、斷點(diǎn)或單步方式執(zhí)行 Transact-SQL語句和存儲(chǔ)過程,所以,在應(yīng)用程 序開發(fā)階段也常用它來調(diào)試或測(cè)試所編寫的的腳本程序和存儲(chǔ)過 程。在實(shí)際工作中,常用事件探查器來跟蹤U8軟件界面操作所涉及的后臺(tái)數(shù)據(jù)庫(kù)交互的情況。事件探查器主要使用流程是:建立跟蹤進(jìn)行跟蹤;精確跟蹤; 定位問題解決問題。第一節(jié)創(chuàng)建跟蹤第一步,在開始菜單下打開事件探查器;連接對(duì)應(yīng)的服務(wù)器;第二步,點(diǎn)“文件”-“新建”-“跟蹤”,連接對(duì)應(yīng)的服務(wù)器, 確定;第三步,在“跟蹤名”中輸入對(duì)應(yīng)的名稱,默認(rèn)為“無標(biāo)題 (數(shù)字)”,也可以選擇已有的跟蹤模板;第四步,在“事件”頁(yè)選擇您希望跟蹤的事件;(建議選擇:TSQL-SQL:BatchCompleted;存儲(chǔ)過程-:SP:StmtCompleted;錯(cuò)誤和 警告-ErrorLog、EventLog、Except

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論