




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數據庫應用系統(tǒng)開發(fā)了解數據庫管理技術的發(fā)展、數據庫系統(tǒng)組成、數據庫系統(tǒng)結構、數據模型等,初步認識數據庫及其應用系統(tǒng)50年代中期以前存儲數據、組織方式由程序員自己決定、設計數據與程序不具有獨立性n主要用于科學計算n數據不保存n應用程序管理數據n數據不共享n數據不具獨立性人工手工管理50年代末至60年代中期,操作系統(tǒng)已有專門的管理數據軟件程序與數據之間由軟件提供存取方法但冗余大,程序與數據存儲的獨立性不夠,修改結構意味著得更改程序。數據以文件方式存放,按表單形式表示。n數據可以長期保存n數據可以共享但共享性差、冗余度高n數據獨立性差n文件之間數據孤立n安全性控制不靈活例:書籍(編號、標題、出版社編
2、碼、書籍類型、單價)、出版社(編碼、出版社名稱)問題:n某標題的書籍是哪個出版社出版的?n某個出版社出版了什么書籍?面向文件系統(tǒng)的管理從60年代后期開始。要完成的任務是:數據合并、數據共享、數據保護。數據庫與文件系統(tǒng)的根本區(qū)別在于數據的結構化,由單個數據表組成的數據庫文件是平面文件數據庫,平面文件系統(tǒng)是數據庫技術發(fā)展的開端。數據庫系統(tǒng)數據冗余小,易擴充。具有較高的數據和程序獨立性。統(tǒng)一的數據控制功能。數據庫管理系統(tǒng)相關術語和基本概念1數據(data)n數據指描述事物的符號記錄。文字、圖形、圖像、聲音、學生的檔案記錄、貨物的運輸情況等都是數據。2數據庫(database,簡稱DB)n數據庫指長期
3、存儲在計算機內有組織的、可共享的數據集合。數據庫中的數據按一定的數據模型組織、描述和存儲,具有較小的冗余度,較高的數據獨立性和易擴展性,并可為各種用戶共享。3數據庫管理系統(tǒng)(database management system,簡稱DBMS)n數據庫管理系統(tǒng)指位于用戶與操作系統(tǒng)之間的一層數據管理軟件。數據庫在建立、運用和維護時由數據庫管理系統(tǒng)統(tǒng)一管理、統(tǒng)一控制。數據庫管理系統(tǒng)使用戶能方便地定義數據和操縱數據,并能夠保證數據的安全性、完整性、多用戶對數據的并發(fā)使用及發(fā)生故障后的系統(tǒng)恢復。4數據庫系統(tǒng)(database system,簡稱DBS)n數據庫系統(tǒng)指在計算機系統(tǒng)中引入數據庫后構成的系統(tǒng),
4、一般由數據庫、數據庫管理系統(tǒng)(及其開發(fā)工具)、應用系統(tǒng)、數據庫管理員和用戶構成。DBA (DataBase Administrator)協(xié)調用戶和開發(fā)人員的工作參與數據庫設計創(chuàng)建用戶和授權保證數據庫的正常運行維護工作一個能夠讓用戶定義、創(chuàng)建和維護數據庫以及控制對數據庫訪問的軟件系統(tǒng)。數據庫管理系統(tǒng)是位于用戶和操作系統(tǒng)之間的一層數據管理軟件數據庫管理系統(tǒng)(DBMS)DBMS 功能DBMS 提供統(tǒng)一的數據定義、插入、刪除、檢索及更新操作。功能:n數據的安全性保護n數據的完整性檢查n并發(fā)控制n數據庫恢復數據庫是系統(tǒng)中各用戶的共享資源(并發(fā))n數據的安全控制(允許誰操作,允許什么操作等)n數據的完整性
5、控制(實體完整性、參照完整性、屬性完整性)n并發(fā)控制(防止丟失更新等)統(tǒng)一的數據控制功能數據的存儲結構與邏輯結構之間的映象或轉換功能,當數據的存儲結構(或物理結構)改變時,數據的邏輯結構可以不變數據與程序的物理獨立性,簡稱數據的物理獨立性。數據的總體邏輯結構與某類應用所涉及的局部邏輯結構之間的映象或轉換功能,當總體邏輯改變時,通過對映象的相應改變而保持局部邏輯結構不變。程序員是根據局部邏輯結構編寫應用程序的,因而應用程序也就不必更改數據和程序的邏輯獨立性,簡稱數據的邏輯獨立性。數據和程序獨立性 DBMS 環(huán)境有五個主要組成部分:硬件、軟件、數據、工程和人n硬件:DBMS 和應用程序運行的計算機
6、系統(tǒng)n軟件:DBMS 軟件和應用程序以及操作系統(tǒng)n數據:運行數據和元數據n過程:控制數據庫設計和使用的指令和規(guī)則n人:包括數據庫設計者、數據庫管理員、應用程序員和最終用戶 DBMS 環(huán)境的組成 一個通過向 DBMS 發(fā)出合適的請求(一般是一個 SQL 語句)與數據庫交互的計算機應用程序 數據庫應用程序 從相同數量的數據中可獲得更多的信息數據共享平衡需求沖突控制或消除冗余一致性完整性安全性高效性數據無關性數據庫處理的優(yōu)點 規(guī)模較大相對成本較大復雜度較大故障的影響較大恢復較困難數據庫處理的缺點 面向用戶或應用程序員的用戶級n對應外模式(用戶模式)面向建立和維護數據庫人員的概念級n對應模式(邏輯模式
7、、概念模式)面向系統(tǒng)程員的物理級n內模式(存儲模式)數據庫系統(tǒng)的三級模式結構二級映像為提高數據獨立性,DBMS 在三級模式之間提供兩級映像n外模式/模式間的映像:當數據邏輯結構變更時,通過修改和調整外模式/模式間的映像,使得用戶對應的外模式不變,從而依據外模式編寫的應用程序可以不變,保持數據的邏輯獨立性。n模式/內模式間的映像:當數據的存儲結構發(fā)生改變時,通過修改和調整模式/內模式間的映像,是數據庫的全局邏輯結構保持不變,保持數據的物理獨立性數據模型由于計算機只能存儲和處理數據而不能直接存儲和處理現實世界中的客觀事物,也就無法直接用計算機來管理一個企業(yè)的設備、產品和職員等,因此,我們必須先把企
8、業(yè)的設備、產品和職員等客觀事物的某些特征抽象成計算機能夠存儲和處理的數據,才能用計算機對其進行管理。那么,用什么數據格式來抽象表示客觀事物的數據特征呢?那就是數據模型數據模型的構成數據模型的三要素n數據結構 數據的表示方法(數據的組織形式),是一種靜態(tài)特征的描述n數據操作 數據操作是指對數據庫的查詢、修改、刪除和插入等操作,是一種動態(tài)特征的描述n完整性約束 數據及數據間聯(lián)系應具有的制約和依賴規(guī)則數據模型的分類概念數據模型概念數據模型(概念模型)(概念模型)n按用戶的觀點對數據進行建模,強調語義表達功能按用戶的觀點對數據進行建模,強調語義表達功能n獨立于計算機系統(tǒng)和獨立于計算機系統(tǒng)和DBMSn主
9、要用于數據庫的概念設計主要用于數據庫的概念設計邏輯模型邏輯模型n按計算機系統(tǒng)的觀點對數據建模,主要用于按計算機系統(tǒng)的觀點對數據建模,主要用于 DBMS 的實現的實現n與具體計算機系統(tǒng)相關與具體計算機系統(tǒng)相關物理模型物理模型n用于描述數據在計算機內部的表示與存儲方式用于描述數據在計算機內部的表示與存儲方式n與具體計算機系統(tǒng)相關與具體計算機系統(tǒng)相關應用程序體系結構當前典型:客戶-服務器(Client/Server,CS)瀏覽器-服務器(Browser/Server,BS)SQL Server 2008 版2008 年上市,2010 年 R2 版SQL Server 2000 是 Microsoft
10、 公司于 2000年12月推出的關系型數據庫管理系統(tǒng)。SQL Server組組實例實例數據庫數據庫數據庫對象數據庫對象數據庫表數據庫表 記錄記錄查詢分析器和語法檢查語法檢查 執(zhí)行執(zhí)行 選擇數據庫選擇數據庫數據庫對象數據庫對象T-SQL執(zhí)行執(zhí)行結果結果在線幫助系統(tǒng)按目錄結構和主題進行文檔查閱按目錄結構和主題進行文檔查閱按詞進行全文檔搜索按詞進行全文檔搜索按關鍵詞條進行文檔查閱按關鍵詞條進行文檔查閱定義書簽,定位常用幫助頁面定義書簽,定位常用幫助頁面SQL Server 2008 企業(yè)管理器企業(yè)級的信息系統(tǒng)無一例外地是數據庫應用系統(tǒng)從早些時候的C/S系統(tǒng)中變成當前的混合型系統(tǒng)今日的商業(yè)系統(tǒng)需要支持
11、多種多樣的客戶端在這樣的環(huán)境中,傳統(tǒng)的“快速開發(fā)”應用通常變得不可能UML 提供了語義定義來實現這些應用PowerDesigner 提供了開發(fā)工具來實現這些應用現代信息系統(tǒng)的發(fā)展體系有職工、倉庫、部門、客戶、商品等基本信息,其中:n部門、客戶、商品要求多級定義n職工與部門 為 m:1,倉庫與部門為 m:1,部門與客戶為 1:m有基本的物流功能,即進貨、出貨(批發(fā)、零售),要求:n要同時改變與客戶的資金流(應收應付)n要記錄所有的原始數據(包括業(yè)務雙方、商品、商量、價格、時間、業(yè)務員、操作員等)有基本資金流動能,即支付、收款,要求:n內部的資金周轉n與往來客戶的資金流動n要記錄所有的原始數據(包
12、括業(yè)務雙方、金額、時間、業(yè)務員、操作員等)有基本的查詢接口,基本信息查詢、庫存查詢、與客戶的應收應付查詢、根據先進先出核算方法所得的利潤查詢等??梢詾椴煌牟僮鲉T設置不同的權限課程示例進銷存SQL 語言熟悉 SQL 語言SQL (結構化查詢語言)是一個國際公認的定義和管理關系數據庫的編程語言最初的開發(fā)是由 IBM 公司于 70 年代后期進行的SQL-86:1986年10月 ANSI (American National Standard Institute, 美國國家標準協(xié)會)發(fā)布 ANSI 文件 X.135-1986數據庫語言 SQL,1987 年國際標準化組織采用了該文件成為國際標準SQL
13、-89:1989年 4 月 ANSI 發(fā)布 X3.168-1989數據庫語言嵌入式 SQL,1989年 10 月 ANSI 發(fā)布 X3.135-1989數據庫語言完整和增強的 SQLSQL-92(SQL-2):1992年8月ISO 和 ANSI 共同發(fā)布SQL-99 (SQL-3):1999 年修訂本,但已不再是強制標準。2003年再次修訂SQLSQL語言采用集合操作方式,它對數據的處理是成組進行的,而不是一條一條處理的。當執(zhí)行SQL語句時,每次只能發(fā)送并處理一條語句。對用戶而言,當執(zhí)行SQL語句時,只需要知道其邏輯含義,不需要關心SQL語句的具體執(zhí)行步驟。使用SQL語句時,既可以采用交互方式
14、執(zhí)行,也可將SQL語句嵌入到高級語言中執(zhí)行。SQL 語言特點 使用 Transact SQL (T-SQL) 可以在 SQL Server 2000 提供的關系型數據庫中實現編程功能T-SQL 提供了幾種運算符和條件表達式T-SQLTransact-SQL 語句的種類數據定義語言(DDL)語句n創(chuàng)建、更改或刪除數據庫對象數據控制語言(DCL)語句n授權數據操作語言(DML)語句n數據增、刪、改、查SQL關鍵詞不區(qū)分大小寫對象名和列名不區(qū)分大小寫字符值和日期值區(qū)分大小寫可以分行SQL語句編寫規(guī)則 顯示常量 Select This is a test! Select hello !計算select
15、 1+2+3select aaa + 123查看全局變量Select languageSelect version獲得函數值Select Getdate( )Select Year(Getdate( )SELECT 語句的基本格式SQL語句(SELECT)SELECT 語句是 SQL 中最常用的語句,用于檢索已經存儲在數據庫中數據?;菊Z法:SELECT . - FROM . - WHERE . - GROUP BY . - HAVING . - ORDER BY . - 其中:nFrom: 用于指定被查詢的表、視圖或快照nWhere 條件: 用于限定處理的行數,選擇滿足條件的行nGroup
16、by: 分組nHaving: 分組后過濾數據,要求的列名是在聚合函數中如 avg, 或是在 group by 子句中nOrder by: 行信息顯示時的先后順序SQL查詢 簡單查詢語句USE NorthWindSELECT * FROM employees查詢全部的行和列查詢全部的行和列SELECT firstname,lastname,birthdate FROM Employees查詢全部行和特定列查詢全部行和特定列SELECT * FROM employees WHERE city =LONDON查詢限定范圍的行查詢限定范圍的行使用別名列別名SELECT title_id as 編號編號
17、, price as 原價原價, price*0.7 as 現價現價FROM titles表別名 SELECT title_id, price, price*0.7FROM titles t消除取值重復的行/限制返回行數消除取值重復的行distinct限制返回的行數top n排序 Order by 功能:對查詢結果進行排序例SELECT * FROM titlesORDER BY title, price descWhere 條件數字比較運算符(=、=、=、)字符串比較符(%、_、like)邏輯運算符(AND、OR、NOT)檢索一定范圍內的值(between and )使用值列表(In)檢索未
18、知值(Null)表達式是符號和運算符的組合, SQL Server 可以對它進行運算以得到一個單值表達式可以包含下列一個或多個部分:n常數n列n一元運算符n二元運算符條件表達式查詢語句中可以有函數、表達式查詢列中的函數與表達式select proName, price*Num amount From 條件中的函數與表達式select From Where tdate getdate() - 7排序中的函數與表達式select FromOrder by datepart(hour, tDate)運算符含義=等于大于=大于等于=小于等于不等于! 非比較運算符模糊查詢SELECT companyna
19、me FROM customersWHERE companyname LIKE %Restaurant%GROSELLA-RestauranteLonesome Pine RestaurantTortuga Restaurante通配符_一個字符Select Branch_Code From Branch Where Branch_Code Like L_%任意長度的字符串Select Route_Code From FlightSchedule Where Route_Code Like AMS-%括號中所指定范圍內的一個字符Select Airbusno From FlightSchedu
20、le Where Airbusno Like AB01-5 不在括號中所指定范圍內的任意一個字符Select Airbusno From FlightSchedule Where Airbusno Like AB01-5 通配符通配符解釋解釋示例示例T-SQL 支持的邏輯運算符如下:邏輯運算符AND 和 OR 運算符用于在 WHERE 子句中連接搜索條件。NOT 否定搜索條件。 AND 連接兩個條件且僅當兩個條件都為真時返回 TRUE。OR 也連接兩個條件,但只要其中任一個為真就返回 TRUE。 子查詢返回第一步返回第一步USE northwindSELECT orderid, custome
21、rid FROM orders AS or1 WHERE 20 (SELECT quantity FROM order details AS od WHERE or1.orderid = od.orderid AND ductid = 23)GO實例實例 聚合函數 AVG()計算表達式中平均值 COUNT()表達式中值的數目 MAX()表達式中的最大值 MIN()表達式中最小值SUM()計算表達式中所有值的和數據分組GROUP BY 聯(lián)合使用聚合函數和聯(lián)合使用聚合函數和 GROUP BY 子句,能夠把表中的記錄分組,子句,能夠把表中的記錄分組,并對組中數據進行匯總并對組中數據進行匯
22、總使用使用 GROUP BY 子句時,應注意子句時,應注意n對于指定的一組,SQL Server 只生成一條記錄只生成一條記錄,不返回詳細信息n如果對可包含空值的字段使用 GROUP BY 子句,空值也將被當作一組在分組的同時,可用在分組的同時,可用 Having 對字段或表達式指定搜索條件對字段或表達式指定搜索條件n只在使用 GROUP BY 子句的同時,使用 HAVING 子句來限制分組n可以引用任何出現在選擇列表中的字段n作為條件時聚合函數只能出現在Having 子句中多表聯(lián)接從多個表中選擇指定的字段n關鍵字 JOIN 指定要聯(lián)接的表,以及這些表聯(lián)接的方式n關鍵字 ON 指定聯(lián)接條件查詢
23、兩個或多個表并生成單個結果集n所有聯(lián)接的表必須共同擁有某些字段,這些字段必須有相同的或兼容的數據類型n如果聯(lián)接的表有相同字段,則引用這些字段時必須指定表名多表聯(lián)接使用表的別名組合多個表中的數據合并多個結果集集合查詢UnionInterSectexcept當服務器接收到一個 SQL 查詢語句后,將按照如下過程進行處理n分析過程:首先把這個批處理作為一個整體進行分析,在分析時,服務器檢查命令動詞和關鍵詞的語法,驗證表和字段的名字和合法性n再優(yōu)化過程:在優(yōu)化階段,服務器會確定完成一個查詢的最有效的方法n編譯過程:在編譯階段,將生成這個批處理的可執(zhí)行代碼n執(zhí)行過程:最后,這個批處理中的語句將在運行階段
24、一句一句地執(zhí)行 服務器處理 SQL 語句的過程 創(chuàng)建、修改基表Create table ( 列級完整性約束條件, 列級完整性約束條件, 列級完整性約束條件)Alter table 典型數據庫表的設計基本范式表數據統(tǒng)計表分類表數據處理型表數據描述型表基本范式表員工表Employee(id, ename, deptid, )部門表Dept(dno, dname, )特點:基本滿足NF數據統(tǒng)計表每月利潤統(tǒng)計monthProfits(year, month, subid, profits, )特點:用于各類統(tǒng)計報表統(tǒng)計表數據本可以從明細中獲取,當數據量較大時通過將數據統(tǒng)計后保存可以有效地提高運行效率分
25、類表商品 customer (cust_id, cust_name, parentid)特點基于一個已經定義好的范圍和背景。在內容管理過程中,可采用結構分類的標準術語來統(tǒng)一分類及標記信息資 來源于菜單式的數據結構數據處理型表商品 whproduct (wh_id, pro_id, pos1, pos2, num1, money1, , numn, moneyn, )特點直接將計算數據存放在表中數據描述型表工資 Salary(Emp_id, Field1, Field2, , Fieldn, )商品 SalaryField (FieldName, DisplayName, Flag, )特點類似
26、于數據字典特殊字段設計()主鍵n使用標識字段n通過存儲過程產生排序n設計 Orderno 字段父子關系n增加字段 parid自數目字段nSonsum, 冗余設計,可以方便查詢其他n如可以在字段對應表中加一個字段SignFlag。其中應發(fā)工資項SignFlag為 1,扣發(fā)工資項SignFlag為 1。而應發(fā)工資、實發(fā)工資為計算項讓SignFlag為0。n可以在字段對應表中加上每一字段在屏幕上的顯示位置(PosX, PosY),用一個界面設置工資字段。特殊字段設計()使用位運算 1,2,4,8,特殊字段取值一般無法直接設計出完全符合用戶要求的數據庫通過單獨考慮某個方面,這些單獨的需求稱為用戶視圖視
27、圖是一個命名的 Select 語句,將動態(tài)地產生一個結果集視圖是一個虛擬表視圖完成數據庫到程序的字段名稱的映射使復雜查詢語句的使用簡單化能適當提高程序的執(zhí)行效率視圖設計視圖提供了數據獨立性因為每個用戶都有他自己的視圖,相同的數據可以被不同的用戶從不同的角度定義不同的視圖一個視圖只需包括用戶所需求的那些列,這樣既可簡化用戶對數據庫的理解,又提供了對安全性的檢測視圖的優(yōu)點只能在當前數據庫中創(chuàng)建視圖視圖名稱應與表名近似視圖名稱應遵循標識符的命名規(guī)則可以基于其他視圖建立視圖不能將默認值、規(guī)則和觸發(fā)器與視圖相關聯(lián)不能為視圖建立索引創(chuàng)建視圖時不能使用臨時表即使表被刪除,視圖定義仍將保留定義視圖的查詢不能包
28、含 ORDER BY、INTO創(chuàng)建視圖的指導原則一個互動交流平臺,要求:n求助者可以發(fā)貼尋求幫助n求助者所發(fā)之貼須管理員審核后方可公示n普通網友可跟貼n管理人員一旦回帖,該回帖在所有回帖的最上方視圖例(需求)視圖例(表設計)留言求助系統(tǒng)(gbook) 序號 字段名稱 類型 備注 1 ID 自動增長 主鍵,標識 2 topic Varchar(100) 留言標題 3 content Varchar(1000) 留言內容 4 pubtime Datetime 留言時間 5 ipadd Varchar(15) 留言者 IP 6 username Varchar(50) 留言作者(姓名) 7 tel
29、Varchar(50) 聯(lián)系電話 Email Varchar(50) E-mail 8 addr Varchar(150) 單位或住址、其他聯(lián)系方式等 9 Wname Varchar(50) 錄入人姓名(前臺為空,后臺為錄入人員賬號) 10 fname Varchar(50) 分發(fā)人姓名(分發(fā)人員賬號) 11 uID Varchar(50) 分發(fā)部門 ID(默認空,多部門分發(fā)用”,”分隔) stime Datetime 分發(fā)時間 gpassword Varchar(8) 察看密碼,用戶留言時生成,查看時須輸入 Class int 類別(城市管理、社會治安、文教衛(wèi)生等) Type2 int 類型
30、(舉報 投訴 建議 咨詢 感謝等) gtype int 留言類型,0 為 12345,1 為行政效能,2 為紀檢,3 位監(jiān)察,,4 領導在線訪談 可擴展 isused bool 對無效留言的刪除標記 isdisplay bool 是否在前臺顯示標記,默認 0 不顯示,1 顯示 process Varchar(500) 處理過程記錄 gstatus int 留言狀態(tài),0 剛生成,1 已分發(fā),2 處理中(部分部門回復) ,3 已回復,4 退回,5 處理完畢 Satisfy 滿意度,默認 0,1 滿意,2 基本滿意 3 不滿意 lastDate 截至日期 回復表 reGBook 序號 字段名稱 類型
31、 備注 1 ID 自動增長 主鍵,標識 2 topic Varchar(100) 回復標題 3 content Varchar(1000) 回復內容 4 pubtime datetime 回復時間 5 ipadd Varchar(15) 回復者 IP 6 username Varchar(50) 回復作者 rtype int 回復類型(默認 0 為群眾,1 為機關答復) gID int 回復指向的留言 ID 以下為 rtype 為 1 的紀錄才需用到 leadname Varchar(20) 承辦單位領導簽名 sname Varchar(20) 經辦人簽名 stel Varchar(20) 經
32、辦人聯(lián)系電話 isused bool 對無效留言的刪除標記 下面的視圖可以顯示主帖 Id, 管理人員回帖數及最近回帖 IDSELECT gID, COUNT(*) AS reCount, max(id) as rIDFROM dbo.reGBookwhere isUsed = 1 and rtype0GROUP BY gID視圖例(視圖設計)下面的視圖可以顯示所有主帖的相關信息, 管理人員回帖數、點擊數,最后是哪個管理員回帖等SELECT g.id, g.topic as title, g.content, g.ipAdd, ISNULL(g.pubtime, GETDATE() AS pub
33、time, ISNULL(g.userName, g.id) AS Author, isNull(rc.reCount, 0) as reCount, chits, isNull(g.uId, 0) as uId, r.pubtime as rTime, r.UserName as rAuthor, g.isdisplayFROM dbo.gbook g left join regbookcount rc on rc.gid = g.idleft join regbook r on rc.rId = r.IDWHERE (g.isused = 1)視圖例(視圖設計)視圖SELECT *, CA
34、SE cTypeid WHEN 0 THEN default WHEN 1 THEN red ELSE default END AS dispcolor FROM dbo.content視圖例不同主題以不同顏色呈現存儲過程是是存儲在服務器上執(zhí)行指定操作的子程序,是有 SQL 語句和控制流語句構成的集合可以給存儲過程傳遞數值,存儲過程一可以返回數值存儲過程存儲過程與原始 SQL 語句的最大區(qū)別在于它是預編譯的。當第一次運行一個過程時,數據庫服務器的查詢處理器對它進行分析并準備好一個執(zhí)行計劃并存儲在系統(tǒng)表中,以后過程的執(zhí)行都依據這個存儲的計劃如果是在客戶/服務器環(huán)境下,存儲過程經過編譯和優(yōu)化后存儲
35、在服務器端,在網絡上傳輸的只是一個遠程調用和最終的執(zhí)行結果,從而可以減少網絡流量存儲過程簡化了安全機制,它可以簡化對某些操作的授權。例如,假設一個用戶不希望別人在他的表上使用 SELECT 語句,他可以寫一個僅查詢這個表某些行或列的存儲過程,然后把調用該存儲過程的權限授權給特定的用戶存儲過程把用戶和應用程序與數據源、網絡和存取路徑細節(jié)隔離開,使得非專業(yè)人員對數據庫服務器上的數據訪問變得更方便存儲過程的優(yōu)點游標實際上是一種能從包括多條數據記錄的結果集中每次提取一條記錄的機制游標提供了一種對從表中檢索出的數據進行操作的靈活手段使用游標,可以實現以下目標:n允許定位到結果集中的特定行n從結果集的當前
36、位置檢索一行或多行數據n支持對結果集中當前位置的行進行修改n對于其他用戶對結果集包含的數據庫n數據所做的修改,支持不同的可見性級別使用游標把游標與 Transact-SQL 語句的結果集相關聯(lián),并且定義游標的特征,如是否能夠更新游標中的行執(zhí)行 Transact-SQL 語句以填充游標檢索想要查看的游標中的行根據需要,對游標中當前位置的行執(zhí)行修改操作(更新或刪除)關閉游標游標工作進程DECLARE語句用于創(chuàng)建游標。它包含SELECT語句,用來引入表中的記錄語法:DECLARE CURSOR DECLARE CURSOR FOR FOR 在T-SQL中創(chuàng)建游標打開游標OPEN 檢索記錄FETCH
37、關閉游標CLOSE 刪除游標引用DEALLOCATE 在T-SQL中使用游標FETCH _STATUS:為執(zhí)行的上一個游標 FETCH 語句返回一個整數值CURSOR_ROWS:返回當前打開的游標中符合條件的行的數目。FETCH 語句全局變量使用 符號作為第一個字符來指定參數名稱可以使用參數向存儲過程中輸入值,或從存儲過程中輸出值參數默認為 Input輸入參數可以使用默認值 iVal int = 0輸出參數需 Output存儲過程的參數存儲過程的返回包括n輸出參數,可以返回數據(整型值或字符值等)n返回代碼,始終是整型值。nSELECT 語句的結果集,這些語句包含在該存儲過程內或該存儲過程所調
38、用的任何其它存儲過程內。存儲過程返回一個結果集合存儲過程例()ap_GetLoc.txtdeclarepathvarchar(300)exec ap_GetLoc 20, -, path outputprint path存儲過程例()ap_acceptblotter_acccode.txt可以有返回值在存儲過程內部執(zhí)行 SQL 語句使用 execexecute項目需求:n商品出庫時需要一個出庫價格,以計算商品成本與利潤。有三種計算出庫價格的方法:w先進先出價商品先入庫的先出庫,出庫價為入庫是的入庫價。w加權平均價商品入庫時將庫存商品的價格與入庫商品的價格進行加權平均,下次出庫時按該加權平均價作
39、為出庫價格。w先進后出價商品后入庫的先出庫,出庫價為入庫是的入庫價。成本核算棧、隊列的使用()常規(guī)設計n先進先出隊列;先進后出棧實際程序設計時可以考慮n將隊列、棧合二為一,加權平均作為一個特例處理,即始終在棧頂處理。一個可能的處理方案n將商品表結構設計為: Id、Cname、Pos1、Pos2、Num1、Price1、Numn、Pricen通過Pos1與Pos2具體處理下一個入庫存放在哪一個字段、下一個出庫從哪一個字段處取得數據。成本核算棧、隊列的使用() 先進先出 讀取 Pos1、Pos2 入庫 出庫 Num1 Num1 Price1 Price1 Numi Pos2 Numi Pricei
40、 Pricei Pos1 Numj Numj Pricej Pricej Numn Numn Pricen Pricen每一次入庫,Pos1加1,每一次出庫從Pos2開始加。成本核算棧、隊列的使用() 加權平均 讀取 Pos1、Pos2 入庫 出庫 Num1 Num1 Price1 Price1 Pos1 Numi Pos1 Numi Pricei Pricei Numn Numn Pricen PricenPos1 與 Pos2相等,入庫時先取得庫存數量與價格,與入庫數量與價格加權平均后存回。出庫時直接取庫存數量與價格,減出庫數量后存回。成本核算棧、隊列的使用() 先進后出 讀取 Pos1、
41、Pos2 入庫 出庫 Num1 Num1 Price1 Price1 Pos2 Numi Pos2 Numi Pricei Pricei Numn Numn Pricen Pricen入庫時Pos2加1,出庫是從Pos2開始減.成本核算棧、隊列的使用()存儲過程例()ap_PushWhProduct.txt動態(tài) Execute 語句sp_executesql 比 EXECUTE 更通用輸出參數使用Output, 如:set sqlstr = Nselect orgnum = + numFldO + from whproductwhere wh_id = +convert(nvarchar(6)
42、, whid)+and pro_id = +convert(nvarchar(10),proid) exec sp_executesql sqlstr,NOrgnum numeric(9,2) output,Orgnum output 函數是由一個或多個 Transact-SQL 語句組成的子程序,可用于封裝代碼以便重新使用標量函數:標量函數返回在 RETURNS 子句中定義的類型的單個數據值內嵌表值函數:內嵌表值函數沒有函數主體,表是單個 SELECT 語句的結果集多語句表值函數:多語句表值函數在 BEGIN.END 塊中定義的函數主體包含 TRANSACT-SQL 語句,這些語句可生成行并將行插入將返回的表中 用戶定義函數函數定義CREATE FUNCTION fnDocCount (itemNo int) RETURNS intAS BEGIN return (select count(*) from content where itemid = itemNo)END函數使用select dbo.fnDocCount(20)標量函數(例)CREATE FUNCTION fnRetWh (partname n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家具工廠衛(wèi)生管理制度
- 家居公司獎罰管理制度
- 醫(yī)院資料復印管理制度
- 商品經營人員管理制度
- 醫(yī)院陪護業(yè)務管理制度
- 嵌入式開發(fā)面臨的挑戰(zhàn)試題及答案
- 國企企業(yè)年金管理制度
- 完善教師崗位管理制度
- 停車場地安全管理制度
- 數據庫版本控制與管理策略試題及答案
- 2025年MySQL開發(fā)模式試題及答案
- 超市代管經營協(xié)議書
- 圖像處理新技術Photoshop試題
- 2025中國稀土集團有限公司社會招聘65人筆試參考題庫附帶答案詳解
- 樂山市市級事業(yè)單位選調工作人員考試真題2024
- 山東省濟南市2025屆高三三模生物試卷(含答案)
- 2025年法律基礎知識考試試題及答案
- 火力發(fā)電廠安全培訓課件
- DBJ50-T-200-2024 建筑樁基礎技術標準
- 第八章-實數(單元復習課件)七年級數學下冊同步高效課堂(人教版2024)
- 合伙購買無人機設備協(xié)議書
評論
0/150
提交評論