VB教程第5章數(shù)據(jù)庫項目開發(fā)概述_第1頁
VB教程第5章數(shù)據(jù)庫項目開發(fā)概述_第2頁
VB教程第5章數(shù)據(jù)庫項目開發(fā)概述_第3頁
VB教程第5章數(shù)據(jù)庫項目開發(fā)概述_第4頁
VB教程第5章數(shù)據(jù)庫項目開發(fā)概述_第5頁
已閱讀5頁,還剩57頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

5.1數(shù)據(jù)庫基礎知識5.2數(shù)據(jù)庫設計5.3SQL語言簡介5.4ODBC與ADO簡介第5章數(shù)據(jù)庫應用開發(fā)概述1§5.1數(shù)據(jù)庫基礎知識數(shù)據(jù)庫技術研究如何科學合理地組織數(shù)據(jù)、存儲數(shù)據(jù)、如何高效的訪問數(shù)據(jù)應用程序1應用程序2數(shù)據(jù)庫管理系統(tǒng)

數(shù)據(jù)庫2Database,簡稱DB

數(shù)據(jù)庫是指長期存儲在計算機內(nèi)、有組織、可共享、統(tǒng)一管理的數(shù)據(jù)的集合。

§5.1.1四個基本概念----數(shù)據(jù)庫3§5.1.1四個基本概念----數(shù)據(jù)庫管理系統(tǒng)DatabaseManagementSystem,簡稱DBMS數(shù)據(jù)庫管理系統(tǒng)是位于用戶與操作系統(tǒng)間的一層數(shù)據(jù)管理軟件,屬系統(tǒng)軟件的范疇。數(shù)據(jù)庫管理系統(tǒng)負責定義數(shù)據(jù)和操縱數(shù)據(jù),并能夠保證數(shù)據(jù)庫中數(shù)據(jù)的安全性、完整性,以及進行多用戶對數(shù)據(jù)的并發(fā)使用及發(fā)生故障后的系統(tǒng)恢復。

Access、SQLServer、Oracle、Sybase、Foxpro

是典型的數(shù)據(jù)庫管理系統(tǒng)4§5.1.1四個基本概念----數(shù)據(jù)庫管理員DatabaseAdministrator,簡稱DBADBA是指全面負責數(shù)據(jù)庫系統(tǒng)的“規(guī)劃、設計、維護、管理和正常使用的”人員,其職責如下:(1)參與數(shù)據(jù)庫設計的全過程,決定數(shù)據(jù)庫的結構和內(nèi)容;(2)定義數(shù)據(jù)的安全性和完整性,負責分配用戶對數(shù)據(jù)庫的使用權限和口令管理;(3)監(jiān)督控制數(shù)據(jù)庫的使用和運行,改進和重新構造數(shù)據(jù)庫系統(tǒng)。當數(shù)據(jù)庫受到破壞時,應負責恢復數(shù)據(jù)庫;當數(shù)據(jù)庫的結構需要改變時,完成對數(shù)據(jù)結構的修改。DBA不僅要有較高的技術專長和較深的資歷,并應具有了解和闡明管理要求的能力。特別對于大型數(shù)據(jù)庫系統(tǒng),DBA極為重要。對于常見的微機數(shù)據(jù)庫系統(tǒng),通常只有一個用戶,常常不設DBA,DBA的職責由應用程序員或終端用戶代替。5§5.1.1四個基本概念----數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)是指由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、應用系統(tǒng)、數(shù)據(jù)庫管理員和用戶等構成的系統(tǒng)。

廣義的講,數(shù)據(jù)庫系統(tǒng)由下面幾部分構成硬件及數(shù)據(jù)庫軟件:包括操作系統(tǒng)、DBMS、編譯系統(tǒng)及應用開發(fā)工具軟件等人員:包括數(shù)據(jù)庫管理員、用戶等。數(shù)據(jù)庫系統(tǒng)的各類人員對數(shù)據(jù)庫的各種操作請求,都由DBMS完成,DBMS是數(shù)據(jù)庫系統(tǒng)的核心軟件。6用戶用戶用戶…...應用系統(tǒng)應用開發(fā)工具數(shù)據(jù)庫管理系統(tǒng)操作系統(tǒng)數(shù)據(jù)庫數(shù)據(jù)庫管理員長期儲存在計算機內(nèi)、有組織、可共享的數(shù)據(jù)集合。負責定義數(shù)據(jù)和操縱數(shù)據(jù),并能夠保證數(shù)據(jù)庫中數(shù)據(jù)的安全性、完整性、并發(fā)控制及恢復數(shù)據(jù)庫系統(tǒng)組成7§5.1.2常用數(shù)據(jù)模型在數(shù)據(jù)庫中是用數(shù)據(jù)模型這個工具來對現(xiàn)實世界進行抽象的。數(shù)據(jù)模型是數(shù)據(jù)庫系統(tǒng)中用于提供信息表示和操作手段的形式構架。根據(jù)模型應用的目的不同,可將數(shù)據(jù)模型分為兩類。概念模型(信息模型):按照用戶的觀點對數(shù)據(jù)和信息建模邏輯模型(層次、網(wǎng)狀、關系):按照計算機系統(tǒng)的觀點對數(shù)據(jù)建模。81.概念模型三個世界認識抽象現(xiàn)實世界信息世界概念模型機器世界DBMS支持的數(shù)據(jù)模型概念模型用于信息世界建模,是現(xiàn)實世界到信息世界的第一層抽象,是用戶與數(shù)據(jù)庫設計人員之間進行交流的語言,因此概念模型應強調(diào)語義表達能力。要易于用戶理解91.概念模型信息世界中的基本概念實體(Entity):客觀存在并可相互區(qū)別的事物稱為實體,如:一個學生、一個部門、一門課、學生的一次選課、部門的一次訂貨等。實體集(EntitySet):同型實體的集合稱為實體集。如:全體學生就是一個實體集。屬性(Attribute):實體所具有的某一特性稱為屬性。一個實體可以由若干個屬性來刻畫。例如學生實體可以用學號、姓名、性別、出生年月等屬性組成。碼(Key):唯一標識實體的屬性集稱為碼。如:學號是學生實體的碼。101.概念模型聯(lián)系:事物之間的聯(lián)系可以分為三類一對一聯(lián)系(1:1)如果對于實體集A中的每一個實體,實體集B中至多有一個實體與之聯(lián)系,反之亦然,則稱實體集A與實體集B具有一對一聯(lián)系。如班級和班長之間的聯(lián)系一對多聯(lián)系(1:n):如果對于實體集A中的每一個實體,實體集B中有n個實體與之聯(lián)系(n>=0),反之,對于實體集B中的每一個實體,實體集A中至多只有一個實體與之聯(lián)系,則稱實體集A與實體集B具有一對多聯(lián)系。如班導師和學生之間的聯(lián)系。111.概念模型聯(lián)系:多對多聯(lián)系(m:n):如果對于實體集A中的每一個實體,實體集B中有n個實體與之聯(lián)系(n>=0),反之,對于實體集B中的每一個實體,實體集A中也有m個實體(m>=0)與之聯(lián)系,則稱實體集A與實體集B具有多對多聯(lián)系。如:學生和課程之間的關系。多個實體之間也可以存在一對一、一對多、多對多的聯(lián)系,如學生、課程和教科書之間的聯(lián)系。同一個實體集內(nèi)的各實體之間也可以存在一對一、一對多、多對多的聯(lián)系,如職工實體集內(nèi)有領導和被領導的聯(lián)系。121.概念模型概念模型的表示方法:實體聯(lián)系方法實體型:用矩形框表示,矩形框內(nèi)寫上實體名。如:屬性:用橢圓形表示,并用無向邊將其與相應的實體聯(lián)系起來。如:課程學生學生學號學號學號姓名性別年齡1311.概念模型概念模型的表示方法:實體聯(lián)系方法聯(lián)系:用菱形表示,菱形框內(nèi)寫明聯(lián)系名,并用無向邊分別與有關實體連接起來,同時在無向邊旁標上聯(lián)系的類型(1:1,1:n,m:n)。如:班級班長管理11班級班長管理n1班級學生組成m班級課程管理n學生選修141.概念模型實體聯(lián)系參考書教師課程講授1nm職工領導1n151.概念模型E-R圖實例學生班級課程學號姓名性別年齡班級編號所屬專業(yè)系課程號課程名學分教師參考書課程號姓名性別年齡職稱書號書名內(nèi)容提要價格161.概念模型E-R圖實例班級成績組成領導學生學生人員選修課程講授教師參考書1nn1nm領導領導1nm172.邏輯模型不同的數(shù)據(jù)模型具有不同的數(shù)據(jù)結構形式,目前最常用的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和關系模型。層次模型和網(wǎng)狀模型統(tǒng)稱為非關系模型,在非關系模型中,實體用記錄表示,實體之間的聯(lián)系轉(zhuǎn)換成記錄之間的兩兩聯(lián)系。182.關系模型關系模型中的重要概念關系:一個二維表是一個關系元組:表中的一行即為一個元組屬性:表中的一列即為一個屬性主碼:表中的某個屬性組,它可以唯一確定一個元組。域:屬性的取值范圍分量:元組中的一個屬性值。關系模式:對關系的描述。一般表示為:關系名(屬性1,屬性2,...,屬性n)

192.關系模型關系模型的數(shù)據(jù)結構:二維表學號95001950029500395004。。。95700姓名性別系別年齡籍貫李勇劉晨王名張立楊曉冬男女女男。。。男計算機科學信息數(shù)學計算機科學。。。物理20191819。。。21江蘇山東北京北京。。。山西整數(shù)字符串男女信息數(shù)學,...141516171819202122...北京上海山東...學生登記表關系名主鍵關系域字段名記錄行字段(列)20關系模型在關系模型中,實體以及實體間的聯(lián)系都是用關系來表示的,例如,學生、課程、學生與課程之間的多對多聯(lián)系在關系模型中可以表示如下:學生(學號,姓名,性別,系別,年齡,籍貫)課程(課程號,課程名,學分)選修(學號,課程號,成績)關系模型要求關系必須是規(guī)范化的,關系的每一分量必須是一個不可分的數(shù)據(jù)項。

21§5.2數(shù)據(jù)庫設計主要的內(nèi)容:需求分析概念設計。概念模型和E_R圖邏輯設計。關系模型設計物理設計22§5.2數(shù)據(jù)庫設計數(shù)據(jù)庫設計的主要任務針對特定用途,在給定的軟、硬件環(huán)境下,設計出結構合理、性能良好的數(shù)據(jù)庫,使之能較好地滿足客戶需求。

數(shù)據(jù)庫的設計一般分為以下四個步驟(于1978年在新奧爾良會議上提出,因此簡稱新奧爾良法):需求分析、概念設計、邏輯設計、物理設計。23圖5–6數(shù)據(jù)庫設計步驟

DBMS特征信息結構(與軟件、硬件無關)邏輯數(shù)據(jù)庫結構、應用程序說明書需求分析概念設計邏輯設計物理設計需求說明書總體信息需求處理需求硬件、操作系統(tǒng)特征

24§5.3關系數(shù)據(jù)庫標準語言SQL簡介

自結構化查詢語言SQL(StructureQueryLanguage)成為國際標準語言后,各個數(shù)據(jù)庫廠家紛紛推出各自支持的SQL軟件,SQL已成為關系數(shù)據(jù)庫領域中的一個主流語言。SQL的特點:功能強大使用靈活語言簡潔,易學易用25§5.3.1SQL的基本概念SQL功能SQL命令數(shù)據(jù)定義CREATE,ALTER,DROP數(shù)據(jù)操縱

INSERT,UPDATE,DELETE數(shù)據(jù)查詢SELECT數(shù)據(jù)控制GRANT,REVOKE創(chuàng)建表、視圖、索引等向數(shù)據(jù)表中插入指定的紀錄在數(shù)據(jù)庫中查找滿足條件的記錄授予用戶一定的訪問權限26§5.3.2常用的SQL語句建立數(shù)據(jù)庫的目的是為了查詢數(shù)據(jù),因此說數(shù)據(jù)查詢是數(shù)據(jù)庫的核心操作。SQL語言提供了SELECT語句進行數(shù)據(jù)庫的查詢,該語言具有語言靈活的使用方式和豐富的功能。查詢語句一般格式為:

SELECT[ALL|DISTINCT]<目標列表達式>[,<目標列表達式>]…FROM<表名或視圖名>[,<表名或視圖名>]…[WHERE<條件表達式>][GROUPBY<列名1>[HAVING<條件表達式>]][ORDERBY<列名2>[ASC|DESC]];27§5.3.2常用SQL數(shù)據(jù)查詢整個SELECT語句的含義是,根據(jù)WHERE子句的表達式,從FROM子句指定的基本表或視圖中找出滿足條件的元組,再按SELECT子句中的目標列表達式,選出元組中的屬性值形成結果表。如果有GROUP子句,則將結果按<列名1>的值進行分組,該屬性列值相等的元組為一個組,每個組產(chǎn)生結果表中的一條記錄.如果GROUP子句帶HAVING短語,則只有滿足指定條件的組才予輸出.如果有ORDER子句,則結果表還要按<列名2>的值的升序或降序排序.28“學生-課程”數(shù)據(jù)庫中包括三個表1.“學生信息”表StuInfo由學號、姓名、班級、來源這4個屬性組成,可記為:

StuInfo(學號,姓名,班級,來源).其中學號為主碼.2.“課程信息”表ClassInfo由課程代號,課程名稱,任課教師,學分4個屬性組成,可記為:

ClassInfo(課程代號,課程名稱,任課教師,學分).其中課程代號為主碼.3.“學生成績”表StuScore由學號,課程代號,成績3個屬性組成,可記為:

StuScore(學號,課程代號,成績),其中(學號,課程代號)為主碼.29例1:查詢考試成績在80分以上的學生學號。

SELECT學號

FROMstuScoreWHERE成績>=80;或者:

SELECTDISTINCT

學號

FROMstuScoreWHERE成績>=80;DISTINCT表示將查詢結果中的重復信息去掉。

30例2:查詢學生信息表中姓張的學生的基本信息。

SELECT*FROMstuInfo

WHERE姓名like'張%';或者:查詢學生信息表中姓張的學生且名字為單字的學生的基本信息。

SELECT*FROMstuInfo

WHERE姓名like'張__';“%”:代表零個或多個字符。“_”:代表一個字符。

31例3:查詢學生成績表中成績在85~90之間的學生成績信息。

SELECT*FROMstuScoreWHERE成績BETWEEN85AND90;BETWEEN…AND…指明字段值必須滿足的范圍

32例4:查詢學生信息表中的所有信息并按學號降序排序。

SELECT*FROMstuInfo

ORDERBY學號DESC;在ORDERBY子句中,ASC表示升序,DESC表示降序。

33例5:查詢各個班級的總人數(shù)。

SELECT班級,COUNT(*)AS人數(shù)

FROMstuInfo

GROUPBY班級;COUNT函數(shù)用于統(tǒng)計個數(shù),AS用于起別名。

34例6:查詢學號為“20050001”的學生的總成績、最高分、最低分、平均分。

SELECT

SUM(成績)AS總成績,AVG(成績)

AS

平均成績,MAX(成績)

AS

最高成績,MIN(成績)AS

最低成績

FROMstuScoreWHERE

學號='20050001';SUM函數(shù)用于計算數(shù)值型數(shù)據(jù)的總和AVG函數(shù)用于計算數(shù)值型數(shù)據(jù)的平均值MAX函數(shù)用于計算數(shù)值型數(shù)據(jù)的最大值MIN函數(shù)用于計算數(shù)值型數(shù)據(jù)的最小值

35例7:在成績表中查詢成績不多于2門的學號和相應門數(shù)。

SELECT學號,COUNT(*)AS門數(shù)

FROMstuScoreGROUPBY學號

HAVINGCOUNT(*)<=2;

36例8:查詢學生的姓名、課程名、成績。

SELECTstuInfo.姓名,classInfo.課程名稱,stuScore.成績

FROMstuInfo,classInfo,stuScoreWHEREstuInfo.學號=stuScore.學號andclassInfo.課程代號=stuScore.課程代號;本例涉及到三個表之間的關聯(lián)

37SQL---數(shù)據(jù)更新之插入語句數(shù)據(jù)更新有插入、刪除、更新三種操作插入語句:一次插入一條記錄的格式為:

INSERTINTO表名[(字段名[,字段名]…)]VALUES(常量[,常量]…);

一次插入多條記錄的格式為:

INSERT

INTO

表名[(字段名[,字段名]…)]SELECT

查詢語句;38例9:將一條記錄“1004”、“計算機”、“王?!薄?插入到課程信息表中。INSERTINTOclassInfo

VALUES(‘1004’,‘計算機’,‘王海’,2);例10:將成績表中學號為“20050001”的全部記錄插入到scoreBack表中,其中scoreBack是一張新建的表,其表結構與成績表相同。INSERTINTOscoreBack

SELECT*FROMstuScoreWHERE學號='20050001';39SQL---數(shù)據(jù)更新之刪除語句刪除語句指從數(shù)據(jù)表中刪除符合條件的記錄。它的格式為:DELETEFROM表名

[WHERE條件表達式];例11:刪除學生成績表中學號為“20050003”的記錄。DELETEFROMstuScoreWHERE學號='20050003';40SQL---數(shù)據(jù)更新之更新語句更新語句指修改數(shù)據(jù)表中符合指定條件記錄的某個或某些字段值。它的格式為:UPDATE表名SET列名=值表達式[,列名=值表達式…][WHERE條件表達式];例12:修改學生信息表中學號為“20050001”同學的來源為“河北”。

UPDATEstuInfoSET來源='河北'WHERE學號='20050001';41例13:將學生成績表中全部學生的成績加上五分作為最終成績。UPDATEstuScoreSET成績=成績+5;

42§5.4ODBC與ADO簡介開放數(shù)據(jù)庫互連標準(OpenDatabaseConnectivity,簡稱ODBC)是Microsoft推出的一種客戶端連接后臺數(shù)據(jù)庫的技術。ODBC把SQL作為訪問數(shù)據(jù)庫的標準,實現(xiàn)了用相同的代碼訪問不同數(shù)據(jù)庫格式的。ODBC體系結構主要由數(shù)據(jù)庫應用程序、ODBC驅(qū)動程序管理器、ODBC驅(qū)動程序、ODBC數(shù)據(jù)源四部分組成。

5.4.1ODBC體系結構43

數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫應用程序ODBC驅(qū)動程序管理器ACCESS驅(qū)動程序SQLServer驅(qū)動程序Oracle驅(qū)動程序ACCESS數(shù)據(jù)源SQLServer數(shù)據(jù)源Oracle數(shù)據(jù)源……

ODBC體系結構44§5.4.2配置ODBC數(shù)據(jù)源ODBC數(shù)據(jù)源管理器窗口451)在Windows2000環(huán)境下,單擊“開始”-“設置”-“控制面板”,進入“控制面板”窗口,再雙擊“管理工具”,進入“管理工具”窗口

462)雙擊“數(shù)據(jù)源(ODBC)”,進入“ODBC數(shù)據(jù)源管理器”對話框,選擇“系統(tǒng)DSN”選項卡。473)單擊“添加”按鈕,進入“創(chuàng)建新數(shù)據(jù)源”對話框,選擇“MicrosoftAccessDriver(*.mdb)”。484)單擊“完成”按鈕,進入“ODBCMicrosoftAccess安裝”對話框,在數(shù)據(jù)源名后面的文本框內(nèi)輸入一個新名稱(班級學生)。495)單擊“選擇”按鈕,進入“選擇數(shù)據(jù)庫”對話框,在右邊選擇數(shù)據(jù)庫所在的目錄,左邊選擇指定的數(shù)據(jù)庫。506)單擊兩次“確定”按鈕,返回“ODBC數(shù)據(jù)源管理器”對話框,可以看到“班級學生”數(shù)據(jù)源顯示在“系統(tǒng)DSN”選項卡的列表框中。51§5.4.3ADO簡介ADO對象模型主要包括連接(Connection)、命令(Command)、記錄集(Recordset)、錯誤(Error)、參數(shù)(Parameter)、字段(Field)對象對象描述Connection提供了訪問數(shù)據(jù)源的途經(jīng),指定連接的數(shù)據(jù)庫Command將對數(shù)據(jù)源執(zhí)行的指定命令Recordset執(zhí)行查詢所得到的記錄集Error連接的錯誤信息Parameter與命令對象相關的參數(shù)Field表示記錄集中的字段信息Property體現(xiàn)

ADO對象的特性52§5.4.4ADOData控件用ADO控件創(chuàng)建數(shù)據(jù)庫應用程序:1)添加ADO控件到工具箱。創(chuàng)建一個新的VB工程,單擊“工程”菜單-“部件”,打開“部件”對話框,選中“MicrosoftADODataControl6.0(OLEDB)”-單擊“確定”按鈕。532)雙擊工具箱中的ADO控件將其添加到窗體上并適當調(diào)整其位置。3)單擊該控件的ConnectionString屬性右側的…按鈕,出現(xiàn)“屬性頁”窗口,選擇“使用ODBC數(shù)據(jù)源名稱”,選擇“班級學生”數(shù)據(jù)源,單擊“確定”按鈕。544)單擊該控件RecordSource屬性右側的…按鈕,選擇相應的數(shù)據(jù)表。5)至此,ADO控件的配置完畢。在VB窗體上添加標簽與文本框控件,文本框的名字從上到下依次為txtNum、txtName、txtClass、txtOrigin

。556)分別設置各文本框的DataSource屬性和DataField屬性,各文本框的DataSource屬性均為Adodc1,DataField屬性則分別為學號、姓名、班級、來源。7)單擊運行按鈕,運行結果如圖所示。565.4.5

ADO編程基于ADO的應用程序存取數(shù)據(jù)源的主要步驟如下:1)連接到指定的數(shù)據(jù)源;2)打開記錄集對象;3)對記錄集進行添加、刪除、修改、查詢記錄等操作;4)關閉已打開的連接。兩個ADO對象:Connection對象

Recordset對象571)用CONNECTION對象連接到數(shù)據(jù)源State屬性:AdStateClosed(關閉,默認)

AdStateOpen

(打開)Open方法:打開到數(shù)據(jù)源的連接,如果能成功打開數(shù)據(jù)源,就可以對它發(fā)出命令并且處理結果語法為:Connection.OpenConnectionString,UserID,Password,OptionsClose方法:Connectio

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論