tp-2054vb數(shù)據(jù)庫應(yīng)用電子教案ppt_第1頁
已閱讀1頁,還剩182頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、,,,,,第1章 Access數(shù)據(jù)庫基礎(chǔ),第2章 SQL Server基礎(chǔ),第3章 Visual Basic 數(shù)據(jù)庫訪問概述,第4章 用戶界面控件,第5章 數(shù)據(jù)訪問對(duì)象(DAO),第6章 開放式數(shù)據(jù)庫連接與遠(yuǎn)程數(shù)據(jù)對(duì)象,第7章 Active X數(shù)據(jù)對(duì)象(ADO),《Visual Basic數(shù)據(jù)庫應(yīng)用》電子教案,第8章 報(bào)表,第1章 Access數(shù)據(jù)庫基礎(chǔ),返回總目錄,第2章 SQL Server基礎(chǔ)

2、,返回總目錄,第3章 VB數(shù)據(jù)庫訪問概述,返回總目錄,第4章 用戶界面控件,返回總目錄,第5章 數(shù)據(jù)訪問對(duì)象,返回總目錄,返回總目錄,第6章 開放式數(shù)據(jù)庫連接與遠(yuǎn)程數(shù)據(jù)對(duì)象,返回總目錄,第7章 ActiveX數(shù)據(jù)對(duì)象,返回總目錄,第8章 報(bào)表,,1.關(guān)系數(shù)據(jù)庫系統(tǒng),關(guān)系數(shù)據(jù)庫系統(tǒng)是指支持關(guān)系模型的數(shù)據(jù)庫系統(tǒng)。 關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和完整性約束三部分組成。,2.?dāng)?shù)據(jù)庫的定義,在關(guān)系數(shù)據(jù)庫模型中,數(shù)據(jù)庫為一些相

3、互之間存在一定關(guān)聯(lián)的表格的集合。一個(gè)表格是由若干的行(記錄)來構(gòu)成。字段是記錄的一部分。 數(shù)據(jù)表有以下特點(diǎn): 數(shù)據(jù)表的任意行和列可以以任何順序排列;  數(shù)據(jù)表的名稱必須唯一; 數(shù)據(jù)表中不能有重復(fù)的記錄,每條記錄都是可以辨認(rèn)的。,1.1.1 關(guān)系數(shù)據(jù)庫的定義,1.主關(guān)鍵字,在關(guān)系的各種屬性中,能夠用來唯一標(biāo)識(shí)記錄的屬性稱為關(guān)鍵字。主關(guān)鍵字不允許為空或重復(fù),并且要保證其唯—性,以

4、保證數(shù)據(jù)的的完整性。,2.外關(guān)鍵字,在實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫時(shí),必須能表示表與表之間的聯(lián)系。因此,需要一個(gè)表中的一列與另一個(gè)表的主關(guān)鍵字相匹配,這樣的列可以做為外關(guān)鍵字。這種完整性規(guī)則,稱為引用完整性。,1.1.2 主關(guān)鍵字和外關(guān)鍵字,關(guān)系數(shù)據(jù)庫的模型簡明,便于用戶理解;用戶對(duì)數(shù)據(jù)庫的操作使用了非過程化的表示,操作方便;用戶接口不涉及任何存儲(chǔ)路徑和存儲(chǔ)方式,數(shù)據(jù)獨(dú)立性高。 此外,關(guān)系數(shù)據(jù)庫有著網(wǎng)狀數(shù)據(jù)庫和層狀數(shù)據(jù)庫所沒有的強(qiáng)大

5、數(shù)學(xué)基礎(chǔ);關(guān)系數(shù)據(jù)庫管理程序能夠在同一時(shí)刻對(duì)多個(gè)表格進(jìn)行操作,這種能力可以將數(shù)據(jù)分成更合乎邏輯的和易于管理的類別,關(guān)系數(shù)據(jù)庫常常由許多通過“關(guān)系”聯(lián)系起來的表格組成。,1.1.3 關(guān)系數(shù)據(jù)庫的特點(diǎn),1.Visual Basic訪問數(shù)據(jù)庫的類型,在Visual Basic中通過數(shù)據(jù)訪問控件或數(shù)據(jù)訪問對(duì)象(DAO)等可以訪問的數(shù)據(jù)庫有以下幾種: JET數(shù)據(jù)庫,即Microsoft Access數(shù)據(jù)庫; ISAM數(shù)據(jù)庫,例如:d

6、Base,F(xiàn)oxPro數(shù)據(jù)庫等; ODBC數(shù)據(jù)庫,凡是遵循ODBC標(biāo)準(zhǔn)的客戶/服務(wù)器數(shù)據(jù)庫。,2.外關(guān)鍵字,Visual Basic訪問數(shù)據(jù)庫通常有下面三種途徑: 通過數(shù)據(jù)庫控制控件Data Control訪問; 通過VB提供的數(shù)據(jù)庫對(duì)象變量編程訪問; 通過ODBC接口訪問ODBC API函數(shù)。,返回本章目錄,1.1.4 Visual Basic訪問數(shù)據(jù)庫的類型與途徑,,1.Access的對(duì)象,Acc

7、ess 2000支持的對(duì)象包括表、查詢、報(bào)表、窗體、宏、模塊及網(wǎng)頁。 Access所提供的這些對(duì)象都存放在同一個(gè)數(shù)據(jù)庫文件(.mdb文件)中,而不像其他數(shù)據(jù)庫那樣分別存放于不同的文件中。這樣就方便了數(shù)據(jù)庫文件的管理。,2.Access的主要功能,定義數(shù)據(jù)創(chuàng)建表,利用表存儲(chǔ)相應(yīng)的信息; 根據(jù)需要定義各表之間的關(guān)系; 方式多樣的數(shù)據(jù)處理能力; 創(chuàng)建Web頁,建立對(duì)Internet和Intranet的支持;

8、 開發(fā)應(yīng)用程序。,,1.2.1 Access的特點(diǎn),1.Access主窗口,,1.2.2 熟悉Access開發(fā)環(huán)境,2.?dāng)?shù)據(jù)庫窗口,,返回本章目錄,1.2.2 熟悉Access開發(fā)環(huán)境,,1. 設(shè)計(jì)數(shù)據(jù)庫的基本步驟,對(duì)數(shù)據(jù)庫進(jìn)行總體的設(shè)計(jì);         規(guī)劃該數(shù)據(jù)庫中需要建立的表;        確定表中所需

9、的字段;       明確有唯一值的字段;       確定表之間的關(guān)系;        優(yōu)化設(shè)計(jì);         輸入數(shù)據(jù)并新建其他數(shù)據(jù)庫對(duì)象; 使用Microsoft Access

10、的分析工具設(shè)計(jì)輸出報(bào)表。,,1.3.1 數(shù)據(jù)庫的設(shè)計(jì),,1.打開數(shù)據(jù)庫,在使用數(shù)據(jù)庫之前,必須打開數(shù)據(jù)庫。啟動(dòng)Access后,彈出如下圖所示“Microsoft Access”對(duì)話框,從中選擇“打開已有數(shù)據(jù)庫”選項(xiàng),選擇所要打開的數(shù)據(jù)庫,單擊“確定”按鈕,即可打開此數(shù)據(jù)庫。如果在“打開已有數(shù)據(jù)庫”下面的選項(xiàng)框里沒有所需要的數(shù)據(jù)庫,單擊“更多的文件”選項(xiàng),進(jìn)行操作。,,1.3.2 數(shù)據(jù)庫的創(chuàng)建與打開,,2.創(chuàng)建Access數(shù)據(jù)庫,Mi

11、crosoft Access 提供兩種創(chuàng)建 Access 數(shù)據(jù)庫的方法: 使用“數(shù)據(jù)庫向?qū)А眲?chuàng)建數(shù)據(jù)庫,利用系統(tǒng)提供的模板來選擇數(shù)據(jù)庫類型來創(chuàng)建所需的表、窗體及報(bào)表。采用這種方法,一次操作即可為所選數(shù)據(jù)庫類型創(chuàng)建必要的表、窗體及報(bào)表,這是創(chuàng)建數(shù)據(jù)庫最簡單最快速的方法。 先創(chuàng)建一個(gè)空數(shù)據(jù)庫,然后再添加表、窗體、報(bào)表及其他對(duì)象,這是最靈活的方法,但需要分別定義每一個(gè)數(shù)據(jù)庫要素。 無論哪一種方法,在數(shù)

12、據(jù)庫創(chuàng)建之后,都可以隨時(shí)修改或擴(kuò)展數(shù)據(jù)庫。,,1.3.2 數(shù)據(jù)庫的創(chuàng)建與打開,,1.表的設(shè)計(jì)過程,表格設(shè)計(jì)的基本過程為: 打開數(shù)據(jù)庫; 建立一個(gè)新表; 輸入每一個(gè)字段名、數(shù)據(jù)類型和說明; 確定為每一個(gè)字段定義的屬性; 設(shè)置—個(gè)主關(guān)鍵字; 為某些字段建立索引; 保存設(shè)計(jì)。,,1.3.3 創(chuàng)建表,,2.創(chuàng)建表的方法,創(chuàng)建表有很多方法,基本的主要有兩種方法

13、: 使用表向?qū)?chuàng)建表 在“設(shè)計(jì)”視圖中創(chuàng)建表,,1.3.3 創(chuàng)建表,修改字段刪除字段增加字段修改字段的屬性修改表與表之間的關(guān)系,,1.3.4 修改表,一個(gè)數(shù)據(jù)庫系統(tǒng)被設(shè)計(jì)出來以后,當(dāng)出現(xiàn)新的需求時(shí),往往要對(duì)表的結(jié)構(gòu)進(jìn)行修改。,除此之外,還包含設(shè)置數(shù)據(jù)表格式、隱藏和凍結(jié)列、多級(jí)顯 示記錄和使用查閱向?qū)У取?對(duì)表進(jìn)行修改的操作包括:,數(shù)據(jù)庫中的表一般來講并不是相互獨(dú)立、互不相關(guān)的

14、,表與表之間存在著一定的聯(lián)系,也正因?yàn)檫@些聯(lián)系才體現(xiàn)出了數(shù)據(jù)庫的優(yōu)越性。單擊”數(shù)據(jù)庫“窗口工具欄上的”關(guān)系“按鈕,出現(xiàn)如下圖所示的關(guān)系窗口。,,關(guān)系窗口里列出了所有已經(jīng)存在的表與表之間的聯(lián)系,這種聯(lián)系通過表之間的連線體現(xiàn)出來。,1.3.5 修改表間的關(guān)系,,通過上面的操作,我們創(chuàng)建了一個(gè)數(shù)據(jù)庫,但數(shù)據(jù)庫中并沒有數(shù)據(jù),下面我們?yōu)閿?shù)據(jù)庫輸入數(shù)據(jù),使之成為一個(gè)完整的數(shù)據(jù)庫。下圖為一數(shù)據(jù)輸入窗口。,,,返回本章目錄,1.3.6 表中數(shù)據(jù)輸入

15、,,本實(shí)例首先創(chuàng)建一個(gè)名為“學(xué)生信息”的數(shù)據(jù)庫,然后在該數(shù)據(jù)庫中創(chuàng)建三張數(shù)據(jù)表:“學(xué)生成績”、“姓名”和“學(xué)生聯(lián)系表”,并輸入一部分?jǐn)?shù)據(jù)記錄,最后建立了表間關(guān)系。設(shè)計(jì)步驟如下:,,,啟動(dòng)Access 2000并創(chuàng)建空數(shù)據(jù)庫,命名為“學(xué)生成績.mdb” 。 為數(shù)據(jù)庫創(chuàng)建表,為了輸入部分?jǐn)?shù)據(jù),我們使用設(shè)計(jì)器來創(chuàng)建一個(gè)新表。 定義字段,如下頁所示。,,數(shù)據(jù)庫設(shè)計(jì)實(shí)例,,,,,,數(shù)據(jù)庫設(shè)計(jì)實(shí)例,,保存數(shù)據(jù)表,命名為“學(xué)生成績

16、”;根據(jù)需要定義主鍵;輸入數(shù)據(jù);雙擊數(shù)據(jù)庫視圖中的 “學(xué)生成績” 表,在如下圖所示的表視圖中添加幾條新的記錄,依次輸入學(xué)號(hào)、姓名等字段。,,,,,數(shù)據(jù)庫設(shè)計(jì)實(shí)例,,依照步驟①~⑥,再建立“姓名”表和“學(xué)生聯(lián)系”表,如下圖所示,兩張表均定義“學(xué)號(hào)”為主鍵。,,,,,,,數(shù)據(jù)庫設(shè)計(jì)實(shí)例,建立表間關(guān)系,,返回本章目錄,數(shù)據(jù)庫設(shè)計(jì)實(shí)例,Microsoft SQL Server2000是一個(gè)分布式的關(guān)系數(shù)據(jù)庫管理系統(tǒng),具有客戶機(jī)/服務(wù)器體系

17、結(jié)構(gòu),使用Transact-SQL語言在客戶機(jī)和服務(wù)器之間傳遞客戶機(jī)的請(qǐng)求和服務(wù)器的處理結(jié)果。,Microsoft SQL Server2000系統(tǒng)具有動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)機(jī)制。 Microsoft SQL Server2000系統(tǒng)具有強(qiáng)大的安全措施。 Microsoft SQL Server2000系統(tǒng)具有很強(qiáng)的數(shù)據(jù)互操作性。 Microsoft SQL Server2000系統(tǒng)具有功能強(qiáng)大的網(wǎng)上功能,可以在

18、Internet上發(fā)布數(shù)據(jù)庫中的數(shù)據(jù)。 Microsoft SQL Server2000雖然采用了分布式的計(jì)算模式,但是它也支持單用戶的計(jì)算模式。 Microsoft SQL Server2000系統(tǒng)具有內(nèi)置的數(shù)據(jù)復(fù)制功能。,2.1.1 Microsoft SQL Server 2000的特點(diǎn),SQL Server 企業(yè)管理器是一個(gè)集成化的數(shù)據(jù)庫操作環(huán)境,是基于一種新的被稱為微軟管理控制臺(tái)的公共服務(wù)器管理環(huán)境,

19、是SQL Server中最重要的一個(gè)管理工具。下圖是一個(gè)典型的SQL Server 企業(yè)管理器窗口。,2.1.2 SQL Server 企業(yè)管理器 (Enterprise Manager),,SQL Query Analyzer既是一個(gè)圖形化的執(zhí)行Transact-SQL查詢語句的強(qiáng)大工具,又是一個(gè)方便易用的工具。見下圖是一個(gè)典型的SQL Query Analyzer窗口。

20、,返回本章目錄,2.1.3 SQL 查詢分析器(Query Analyzer),SQL語言是結(jié)構(gòu)化查詢語言(Structure Query Language)的簡稱,是當(dāng)前最流行的數(shù)據(jù)庫語言,是訪問關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。Microsoft 的SQL Server使用的SQL語言叫Transact-SQL(事務(wù)SQL,簡稱T-SQL)。,一體化的特點(diǎn),集數(shù)據(jù)查詢、數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)控制功能為一體;  高度非過程化語言

21、,只需要提出“干什么”,而不需指出“如何干”,語句的操作過程由系統(tǒng)自動(dòng)完成;   語言簡潔,類似于人的思維習(xí)慣,容易理解和掌握; 可以直接以命令方式交互使用,也可以嵌入到程序設(shè) 計(jì)語言中使用。,Transact-SQL語言有以下幾個(gè)主要特點(diǎn):,2.2.1 SQL 概述,Transact-SQL語言按其功能,可分為四大部分:數(shù)據(jù)定義功能、數(shù)據(jù)控制功能、數(shù)據(jù)查詢功能和數(shù)據(jù)操縱功能。,數(shù)據(jù)定義(DDL)

22、:實(shí)現(xiàn)定義、刪除和修改數(shù)據(jù)庫對(duì)象的功能(CREATE、DROP、ALTER )。 數(shù)據(jù)查詢(QL):實(shí)現(xiàn)查詢數(shù)據(jù)的功能(SELECT )。 數(shù)據(jù)操縱(DML)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫數(shù)據(jù)的增加、刪除和修改的功能(INSERT、UPDATE、DELETE )。 數(shù)據(jù)控制(DCL):實(shí)現(xiàn)控制用戶對(duì)數(shù)據(jù)庫的操作權(quán)限的功能(GRANT、REVOKE、DENY )。,2.2.1 SQL 概述,Bigint Int

23、 Smallint Tinyint Bit Numeric(p,s) Decimal(p,s) Float Real,1.?dāng)?shù)值型,2.字符數(shù)據(jù)類型,字符型數(shù)據(jù)是由漢字、字母、數(shù)字和各種符號(hào)組成的,在SQL Server 2000中,默認(rèn)情況下,字符數(shù)據(jù)是用單引號(hào)括起來的。,普通編碼:Char(n) Varchar(n) Text Unicode編碼: Nchar(n)

24、Nvarchar(n) Ntext 二進(jìn)制編碼:Binary(n) Varbinary(n) Image,2.2.2 Transact-SQL 數(shù)據(jù)類型,數(shù)值型有以下幾類:,SQL Server 2000提供了兩種用存儲(chǔ)日期和時(shí)間的數(shù)據(jù)類型:datetime和smalldatetime。 當(dāng)存儲(chǔ)此種類型數(shù)據(jù)時(shí),默認(rèn)的格式是MMDDYYYYhh:mm:ss AM/PM,當(dāng)插入數(shù)據(jù)或在其它地方使用該類

25、型時(shí),需用單引號(hào)把它括起來。,3.日期時(shí)間類型,輸入日期數(shù)據(jù)時(shí),可采用如下幾種輸入格式:,Apr 22 2003 /*英文數(shù)字格式*/ 2003-04-22 /*數(shù)字加分隔符格式*/ 20030422 /*純數(shù)字格式*/,輸入時(shí)間時(shí),可采用12小時(shí)格式或24小時(shí)格式:,2003-04-22 2:25:35 PM /*

26、12小時(shí)格式*/ 2003-04-22 14:25:35 /*24小時(shí)格式*/,2.2.2 Transact-SQL 數(shù)據(jù)類型,貨幣數(shù)據(jù)表示正的或負(fù)的貨幣值,在SQL Server 2000中使用Money和Smallmoney數(shù)據(jù)類型存儲(chǔ)貨幣數(shù)據(jù)。,4.貨幣類型,貨幣類型的數(shù)據(jù)實(shí)際上都是帶有4位小數(shù)的decimal類型的數(shù)據(jù)。,在Money或Smallmoney類型的字段中輸入貨幣數(shù)據(jù)時(shí)必須在數(shù)

27、值前加上一個(gè)貨幣符號(hào),如$符號(hào);輸入負(fù)值時(shí),應(yīng)當(dāng)在貨幣數(shù)據(jù)的后面加一個(gè)負(fù)號(hào)。,2.2.2 Transact-SQL 數(shù)據(jù)類型,一個(gè)語句批是一組Transact-SQL語句的集合,語句批的結(jié)束標(biāo)記為:GO,1.語句批,腳本是存儲(chǔ)在文件中的一組Transact-SQL語句的集合。,2.腳本,3.注釋,注釋是程序代碼中不執(zhí)行的文本字符串 ,Transact-SQL支持兩種類型的注釋:一種是單行注釋“--”;另一種是塊注釋即“/* */”。

28、,SQL Server中的編程語言是Transact-SQL,Transact-SQL是一種非過程化的高級(jí)語言,其基本成分是語句,由一個(gè)或多個(gè)語句構(gòu)成一個(gè)批處理,由一個(gè)或多個(gè)批處理構(gòu)成一個(gè)腳本,并保存到磁盤文件中。,2.2.3 基本概念,標(biāo)準(zhǔn)標(biāo)識(shí)符可以包含1~128個(gè)字符,包括字母、符號(hào)(_、@、#、$)及數(shù)字。標(biāo)準(zhǔn)標(biāo)識(shí)符里不允許有空格,應(yīng)遵循:第一個(gè)字符必須是字母(a~z或A~Z),第一個(gè)字符后面可以是數(shù)字、字符或符號(hào)。但當(dāng)?shù)谝粋€(gè)字

29、符是符號(hào)時(shí),則有如下特殊含義:,1.標(biāo)準(zhǔn)標(biāo)識(shí)符,以@開頭的標(biāo)識(shí)符代表一個(gè)局部變量或參數(shù) 以#號(hào)開頭的標(biāo)識(shí)符代表一個(gè)臨時(shí)表或存儲(chǔ)過程 以##號(hào)開頭的標(biāo)識(shí)符代表一個(gè)全局臨時(shí)對(duì)象,2.2.4 SQL Server命名規(guī)則,2.限定標(biāo)識(shí)符,如果不遵守一個(gè)或多個(gè)標(biāo)準(zhǔn)標(biāo)識(shí)符格式規(guī)則時(shí),必須使用限定標(biāo)識(shí)符。一般地,在下列兩種情況下使用限定標(biāo)識(shí)符: 當(dāng)對(duì)象名中包含空格時(shí) 當(dāng)保留關(guān)鍵字被用作對(duì)象名或?qū)ο蟛糠值?/p>

30、名字時(shí),當(dāng)限定標(biāo)識(shí)符出現(xiàn)在Transact-SQL語句中時(shí),必須用方括號(hào)([ ])或雙引號(hào)(“”)將限定標(biāo)識(shí)符括起來。,返回本章目錄,2.2.4 SQL Server命名規(guī)則,數(shù)據(jù)庫是數(shù)據(jù)和數(shù)據(jù)庫對(duì)象的容器。數(shù)據(jù)庫對(duì)象就是存儲(chǔ)和管理數(shù)據(jù)的結(jié)構(gòu)形式,這些數(shù)據(jù)庫對(duì)象主要包括數(shù)據(jù)庫圖表、表、函數(shù)、視圖、存儲(chǔ)過程、觸發(fā)器等。設(shè)計(jì)數(shù)據(jù)庫的過程就是設(shè)計(jì)這些數(shù)據(jù)庫對(duì)象的過程。,1.?dāng)?shù)據(jù)庫對(duì)象,事務(wù)就是一個(gè)單元的工作,該單元的工作或者全部完成,或

31、者全部不完成。SQL Server 2000系統(tǒng)具有事務(wù)功能,可以保證數(shù)據(jù)庫操作的一致性和完整性。,2.事務(wù)和事務(wù)日志,3.?dāng)?shù)據(jù)庫文件和文件組,數(shù)據(jù)庫的物理表現(xiàn)是操作系統(tǒng)文件。SQL Server 2000使用一組 操作系統(tǒng)文件來創(chuàng)建一個(gè)數(shù)據(jù)庫。數(shù)據(jù)庫中的所有數(shù)據(jù)和對(duì)象, 都存儲(chǔ)在這些操作系統(tǒng)文件中。如前所述,這些操作系 統(tǒng)的文件有兩種

32、形式:一種是數(shù)據(jù)文件,另一種 是日志文件。文件組就是數(shù)據(jù)文件的集合。,2.3.1 SQL Server 2000數(shù)據(jù)庫特點(diǎn),1.創(chuàng)建數(shù)據(jù)庫,在企業(yè)管理器中,打開左邊的樹狀結(jié)構(gòu),在數(shù)據(jù)庫文件夾或其下屬任一數(shù)據(jù)庫圖標(biāo)上右擊,從彈出的快捷菜單中選擇新建數(shù)據(jù)選項(xiàng),或直接單擊工具欄上的“新數(shù)據(jù)庫”圖標(biāo),然而按步驟依次進(jìn)行操作。,CREATE DATABASE語句的語法形式如下:,

33、CREATE DATABASE database_name[ ON [ PRIMARY ] [ [,… n ] ] [ , [ ,… n ] ] ][ LOG ON { [ ,… n ] } ],示例,2.3.2~2.3.3 創(chuàng)建和管理數(shù)據(jù)庫,可以在SQL Server企業(yè)管理器中創(chuàng)建數(shù)據(jù)庫,也可使用Transact-SQL語句中的CREATE DATABASE命令來創(chuàng)建數(shù)據(jù)庫。,創(chuàng)建一個(gè)示例數(shù)據(jù)庫。該數(shù)據(jù)庫的

34、主數(shù)據(jù)文件的邏輯名稱是示例數(shù)據(jù)庫_data,物理文件是示例數(shù)據(jù)庫.mdf,大小是10MB,最大是30MB,以20%的速度增加;該數(shù)據(jù)庫的日志文件的邏輯名稱是示例數(shù)據(jù)庫_log,操作系統(tǒng)文件是示例數(shù)據(jù)庫.ldf,大小是3MB,最大是10MB,以1MB的速度增加。,CREATE DATABSE 示例數(shù)據(jù)庫ON PRIMARY(NAME=示例數(shù)據(jù)庫_data, FILENAME=‘C:\Microsoft SQL Se

35、rver\data\示例數(shù)據(jù)庫.mdf ’, SIZE=10MB, MAXSIZE=30MB, FILEGROWTH=20%)LOG ON (NAME=示例數(shù)據(jù)庫_log, FILENAME=‘C:\Microsoft SQL Server\data\示例數(shù)據(jù)庫.ldf ’, SIZE=3MB, MAXSIZE=10MB,F(xiàn)ILEGROWTH=1MB),創(chuàng)建和管理數(shù)據(jù)庫示

36、例,數(shù)據(jù)庫創(chuàng)建以后,可以在企業(yè)管理器中利用數(shù)據(jù)庫的屬性設(shè)置,來更改創(chuàng)建時(shí)的某些設(shè)置和創(chuàng)建時(shí)無法設(shè)置的屬性。,2.修改數(shù)據(jù)庫,也可使用ALTER DATABSE語句來修改數(shù)據(jù)庫 。語法如下:,ALTER DATABASE databasename|ADD LOG FILE [ ,…n ]|REMOVE FILE logical_file_name [ WITH DELETE]|ADD FILEGROUP filegroup_n

37、ame|REMOVE FILEGROUP filegroup_name|MODIFY FILE |MODIFY NAME=new_dbname,示例,2.3.2~2.3.3 創(chuàng)建和管理數(shù)據(jù)庫,為了擴(kuò)大示例數(shù)據(jù)庫的數(shù)據(jù)文件,可以增加一個(gè)次要數(shù)據(jù)文件示例數(shù)據(jù)庫_data2,其大小為10MB,最大是20MB,以20%的速度增長。,ALTER DATABASE 示例數(shù)據(jù)庫ADD FILE (NAME=示例數(shù)據(jù)庫_data2,

38、 FILENAME= ‘C:\Microsoft SQL Server\data\示例數(shù)據(jù)庫2.mdf ’, SIZE=10MB, MAXSIZE=20MB,F(xiàn)ILEGROWTH=20%),創(chuàng)建和管理數(shù)據(jù)庫示例,對(duì)于那些不再需要的數(shù)據(jù)庫,可以刪除它以釋放在磁盤上占用的空間。在企業(yè)管理器中,右擊所要?jiǎng)h除的數(shù)據(jù)庫,從彈出的快捷菜單中選擇“刪除”選項(xiàng)或直接按下鍵盤上的Delete按鈕即可刪除數(shù)據(jù)庫,也可以

39、選擇數(shù)據(jù)庫文件夾或圖標(biāo)后單出工具欄中的“刪除”圖標(biāo)來刪除數(shù)據(jù)庫。,3.刪除數(shù)據(jù)庫,也可以利用DROP DATABASE語句來刪除數(shù)據(jù)庫。語法如下:,DROP DATABASE database_name [,…n ],例:刪除已建立的示例數(shù)據(jù)庫,DROP DATABASE 示例數(shù)據(jù)庫,返回本章目錄,2.3.2~2.3.3 創(chuàng)建和管理數(shù)據(jù)庫,表是包含數(shù)據(jù)庫中所有數(shù)據(jù)的數(shù)據(jù)庫對(duì)象 。既可以使用CREATE TABLE 語句創(chuàng)建表

40、,也可以通過企業(yè)管理器創(chuàng)建表。,使用CREATE TABLE 語句的語法如下:,CREATE TABLE [ database_name.[ owner].| owner. ] table_name ({ | column_name AS computed_column_expression | }| [,…n] ),示例,在企業(yè)管理器中,展開指定的服務(wù)器和數(shù)據(jù)庫,打開想要?jiǎng)?chuàng)建新表的數(shù)

41、據(jù)庫,右擊表對(duì)象,并從彈出的快捷菜單中選擇“新建表”選項(xiàng),然后按步驟操作即可。,2.4.1 創(chuàng)建表,在示例數(shù)據(jù)庫中創(chuàng)建學(xué)生表,該表包含了學(xué)生的有關(guān)信息:學(xué)號(hào)、姓名、性別、班級(jí)、年齡。,USE 示例數(shù)據(jù)庫CREATE TABLE 學(xué)生表 (學(xué)號(hào) int NOT NULL ,姓名 varchar (50) NULL ,性別 char (1) NULL ,班級(jí) char (10) NULL ,

42、年齡 int NULL ) ON PRIMARY,創(chuàng)建表示例,ALTER TABLE table_name { [ ALTER COLUMN column_name { new_data_type [ (precision [,scale ] )]} |ADD { [ ] } [,…n ] |DROP COLUMN column} [ ,…n ],1.用ALTER TABLE增加、

43、刪除、修改字段,例:在學(xué)生表中,增加一個(gè)字段“出生年月”,該字段的數(shù)據(jù)類型為datetime,允許為空,沒有默認(rèn)值。,ALTER TABLE 學(xué)生表 ADD 出生年月 datetime null,2.在企業(yè)管理器中增加、刪除、修改字段,在企業(yè)管理器中,打開指定的服務(wù)器中要修改的表的數(shù)據(jù)庫, 用右鍵單擊進(jìn)行修改的表,從彈出的快捷菜單中選擇“設(shè)計(jì) 表”選項(xiàng),然后按步驟操作即可。,2.4.2 修改、刪除表結(jié)構(gòu),刪

44、除表就是將指定的表中的數(shù)據(jù)和表的結(jié)構(gòu)從數(shù)據(jù)庫中永久性地去除。表刪除之后,就不能再恢復(fù)該表的定義。,3.刪除表的結(jié)構(gòu),刪除表也可以使用DROP TABLE語句,該語句的語法形式如下: DROP TABLE table_name,可以使用企業(yè)管理器刪除表,在該工具中,打開指定表所在的數(shù)據(jù),右擊該表,從彈出的菜單中選擇“刪除”項(xiàng)即可。當(dāng)然,系統(tǒng)表不能被刪除。,如: DROP TABLE 學(xué)生表,2.

45、4.2 修改、刪除表結(jié)構(gòu),表創(chuàng)建之后,只是一個(gè)空表。因此,向表中插入數(shù)據(jù)是在表結(jié)構(gòu)創(chuàng)建之后,首先需要執(zhí)行的操作。在表中插入數(shù)據(jù),使用INSERT語句。該語句的語法形式如下:,1.插入數(shù)據(jù),例:要求往學(xué)生表中插入一行數(shù)據(jù):學(xué)號(hào)為999999,姓名為張小三,性別為男,其它情況未知??捎靡韵氯N方式完成:,INSERT [ INTO ] table_name [ (column_list)]{ VALUES (DEFAULT | NULL

46、 | expression [,…n] )| DEFAULT VALUES},INSERT INTO 學(xué)生表( 學(xué)號(hào),姓名,性別) VALUES('999999', '張小三', 'M'),INSERT INTO 學(xué)生表 VALUES('999999', '張小三', 'M',NULL,NULL),INSERT INTO 學(xué)生表 V

47、ALUES('999999', '張小三', 'M', DEFAULT , DEFAULT),注意:INSERT語句每一次只能插入一行數(shù)據(jù),在向表 中插入數(shù)據(jù)時(shí)要注意,字符數(shù)據(jù)和日期數(shù)據(jù)要 使用單引號(hào)引起來。,2.4.3 操縱數(shù)據(jù),可以使用UPDATE語句修改表中已經(jīng)存在的數(shù)據(jù)。UPDATE語句既可以一次修改一行數(shù)據(jù),也可

48、以一次修改多行數(shù)據(jù)。其語法形式如下:,2.修改數(shù)據(jù),例:將學(xué)生表中學(xué)生的年齡都提高1歲,UPDATE table_name SET { column_name= { expression | DEFAULT | NULL } | @variable = expression | @variable = column = expression } [,…n ] [ FROM { } [,…n ] ] [W

49、HERE ],UPDATE 學(xué)生表 SET 年齡=年齡+1,2.4.3 操縱數(shù)據(jù),刪除數(shù)據(jù)可以使用DELETE語句。DELETE語句可以一次從表中刪除一行或多行數(shù)據(jù)。其語法形式如下:,3.刪除數(shù)據(jù),例:刪除學(xué)生表中班級(jí)為GZ02房產(chǎn)的全部學(xué)生信息。,DELETE [ FROM ] table_name [ FROM { } [,…n ] ] [ WHERE ],DELETE FROM 學(xué)生表

50、 WHERE 班級(jí)='GZ02房產(chǎn)',注意:DELETE 語句只是刪除表中的數(shù)據(jù),表本身依然存在于數(shù)據(jù)庫中。如果需要?jiǎng)h除表本身,則應(yīng)使用前面已經(jīng)講 過的DROP TABLE語句。,返回本章目錄,2.4.3 操縱數(shù)據(jù),數(shù)據(jù)檢索就是把數(shù)據(jù)庫中存儲(chǔ)的數(shù)據(jù)根據(jù)用戶的需求提取出來的過程,并且使用SELECT語句進(jìn)行數(shù)據(jù)檢索。,SELECT語句完整的語法形式非常復(fù)雜,這里給出如下的SELECT簡潔語法形

51、式:,SELECT [ ALL | DISTINCT ] select_list [ INTO [ new_table_name ] ] FROM { table_name | view_name } [,{ table_name | view_name } [,…] ] [ WHERE clause ] [ GROUP BY clause ] [ HAVING clause ] [ O

52、RDER BY clause ] [ COMPUTE clause ] [ FOR BROWSE ],2.5.1 SQL查詢的基本結(jié)構(gòu),在上述結(jié)構(gòu)中:,SELECT子句用于指定輸出的字段; FROM 子句用于指定數(shù)據(jù)的來源; WHERE 子句用于指定數(shù)據(jù)的選擇條件; GROUP BY 子句用于對(duì)檢索到的記錄進(jìn)行分組; HAVING 子句用于指定組的選擇條件; O

53、RDER BY 子句用于對(duì)查詢的結(jié)果進(jìn)行排序,在這些子句中,SELECT子句和FROM子句是必須的,其它子句都是可選的。,以下所有的舉例都是以示例數(shù)據(jù)庫為基礎(chǔ)的,示例數(shù)據(jù)庫中建立了三張表:學(xué)生表、選課表、課程表,具體結(jié)構(gòu)見教材圖2.14、圖2.15、圖2.16所示。,2.5.1 SQL查詢的基本結(jié)構(gòu),SELECT [ ALL | DISTINCT ] select_listFROM { table_name | view_name

54、 }其中:select_list指定了要返回的列; FROM子句指定了返回的行和列所屬的表或視圖。,SELECT子句的部分語法形式:,1.選擇列,最簡單的查詢:檢索學(xué)生表中的全部信息。,SELECT * FROM 學(xué)生表,* 表示檢索全部列。在這個(gè)結(jié)果中,顯示的信息與數(shù)據(jù)在表中存儲(chǔ)的順序完全一樣。,可在SELECT 后面指出要檢索的列名:檢索每一個(gè)學(xué)生的姓名和班級(jí)。,SELECT 姓名,班級(jí)

55、 FROM 學(xué)生表,SELECT 班級(jí),姓名 FROM 學(xué)生表,列順序的改變,只是影響數(shù)據(jù)結(jié)果的顯示,對(duì)于表中的數(shù)據(jù)的存儲(chǔ)順序無任何影響。,2.5.2 SELECT 子句,在默認(rèn)情況下,數(shù)據(jù)檢索結(jié)果集中所顯示出來的列標(biāo)題就是在創(chuàng)建表時(shí)所使用的列名。但是,顯示的列標(biāo)題也是可以改變的。改變列標(biāo)題有兩種方法: ① 使用“=”; ② 使用AS關(guān)鍵字。,檢索學(xué)生表中

56、的學(xué)號(hào)、姓名和班級(jí)信息,要求班級(jí)以“所在班級(jí)”列標(biāo)題輸出。,SELECT 學(xué)號(hào),姓名,所在班級(jí)=班級(jí) FROM 學(xué)生表,SELECT 學(xué)號(hào),姓名,班級(jí) AS 所在班級(jí) FROM 學(xué)生表,2.改變列標(biāo)題,上面兩個(gè)語句查詢顯示結(jié)果完全相同,2.5.2 SELECT 子句,SELECT子句中可以包含算術(shù)表達(dá)式,允許+、-、*、/,當(dāng)然也可以是常量。,要求輸出成績提高20%后的成績:,SELECT 學(xué)號(hào),課程號(hào),成績,成績

57、*1.2 AS 提高后的成績 FROM 選課表,SELECT DISTINCT 學(xué)號(hào) FROM 選課表,3.帶表達(dá)式的SELECT子句,4.ALL與DISTINCT,SQL允許關(guān)系和查詢結(jié)果中出現(xiàn)重復(fù)行,要強(qiáng)制消除重復(fù),可在SELECT后使用關(guān)鍵字DISTINCT,而指定ALL則不消除重復(fù)。在MSSQL中,默認(rèn)為ALL。,在選課表中,一個(gè)學(xué)生可以同時(shí)選多門課,如果要求檢索出已經(jīng) 選過課的

58、學(xué)生學(xué)號(hào) :,2.5.2 SELECT 子句,在SELECT語句中,WHERE子句指定要檢索的數(shù)據(jù)行,將WHERE關(guān)鍵字后面的搜索條件為真的記錄全部檢索出來。,要求檢索出選課表中所有選修了1號(hào)課程的同學(xué)的學(xué)號(hào)和成績 :,SELECT 學(xué)號(hào),成績 FROM 選課表 WHERE 課程號(hào)=1,SELECT 學(xué)號(hào),成績 FROM 選課表 WHERE 課程號(hào)=1 AND 成績>=80,1.比較運(yùn)算符,2.邏

59、輯運(yùn)算符,要求檢索出選修了1號(hào)課程并且成績?cè)?0分以上的同學(xué)的學(xué)號(hào)和成績,2.5.3 用WHERE 子句過濾記錄,要求檢索出學(xué)生表中年齡在20至23之間的所有男同學(xué) :,SELECT * FROM 學(xué)生表 WHERE 年齡 BETWEEN 20 AND 23 AND 性別=‘M’,SELECT * FROM 學(xué)生表 WHERE 班級(jí) IN (‘GZ02計(jì)5’,‘GZ02計(jì)5’,‘GZ

60、02計(jì)5’),3.BETWEEN…AND,4.IN(NOT IN),IN或者NOT IN關(guān)鍵字允許指定要選擇的取值表,意思是包含在由IN指定的列表之中或不包含在由NOT IN指定的列表中。,BETWEEN…AND可以指定搜索范圍,表示在…之間。,要求檢索出學(xué)生表中GZ02計(jì)5、GZ02計(jì)6、GZ02計(jì)7三個(gè)班級(jí)的同學(xué)信息 :,2.5.3 用WHERE 子句過濾記錄,SELECT * FROM 學(xué)生表 WHERE 姓名

61、 LIKE ‘陳%’,SELECT * FROM 學(xué)生表 WHERE 姓名 LIKE ‘[^陳]_ _’,5.字符串模糊匹配,LIKE關(guān)鍵字用于檢索與特定字符串相匹配的記錄行。在LIKE關(guān)鍵字中,可以使用4種匹配符:%、_、[ ]、[^]。帶有匹配符的字符串必須使用引號(hào)引起來。,要求檢索出學(xué)生表中所有姓“陳”的同學(xué) 信息:,要求檢索出學(xué)生表中所有不姓“陳”的同學(xué) 信息:,在使用LIKE進(jìn)行數(shù)據(jù)檢索時(shí),應(yīng)注意,一個(gè)英

62、文字母和一個(gè)漢字都是一個(gè)字符。,2.5.3 用WHERE 子句過濾記錄,SELECT 學(xué)號(hào),成績 FROM 選課表 WHERE 課程號(hào)=1 ORDER BY 成績 DESC,SELECT 學(xué)號(hào),成績 FROM 選課表 WHERE 課程號(hào)=1 ORDER BY 成績,學(xué)號(hào) DESC,排序就是指用ORDER BY子句排列查詢結(jié)果的順序;Order By子句使用升序(ASC)或降序(DE

63、SC)指定一組列;對(duì)于在結(jié)果表中無列名稱的列,可以使用一個(gè)相對(duì)列號(hào)來代替列名,系統(tǒng)默認(rèn)的排列順序是升序。,要求檢索出了選課表中所有選修課程號(hào)為1的同學(xué)的學(xué)號(hào)和成績,并按成績從高到低的順序排列 :,接上例,如果在成績相同的情況下,要求再按學(xué)號(hào)降序排列 :,2.5.4 用ORDER BY子句對(duì)查詢結(jié)果排序,1.聚合函數(shù),聚合函數(shù)可以返回整個(gè)或者幾個(gè)列或者一個(gè)列的匯總數(shù)據(jù),它常用來計(jì)算SELECT語句查詢的統(tǒng)計(jì)值。聚合函數(shù)經(jīng)常與SELECT

64、 語句的GROUP BY子句一同使用。常用的函數(shù)及其功能 如下:,AVG 返回?cái)?shù)據(jù)表達(dá)式的平均值 COUNT 返回在某個(gè)表達(dá)式中數(shù)據(jù)值的數(shù)量 COUNT(*) 返回所選擇行的數(shù)量 MAX 返回表達(dá)式中的最大值 MIN 返回表達(dá)式中的最小值 SUM 返

65、回表達(dá)式中所有值的和,2.5.5 用GROUP BY 子句對(duì)查詢結(jié)果進(jìn)行分組,COUNT(*)、COUNT(列名)、COUNT(DISTINC(列名)) 三種用法的區(qū)別,要求查詢出選課表中1號(hào)課程的最高分、最低分及平均分:,SELECT MAX(成績) AS 最高分, MIN(成績) AS 最低分, AVG(成績) AS 平均分

66、, FROM 選課表 WHERE 課程號(hào)=1,COUNT(*)返回的是所選擇行的數(shù)量,包括空值在內(nèi)的所有行 COUNT(列名)統(tǒng)計(jì)出所指定列的數(shù)量,不包括NULL在內(nèi)的行 COUNT(DISTINCT 列名)則統(tǒng)計(jì)出消除重復(fù)后的所指定列的數(shù)量,2.5.5 用GROUP BY 子句對(duì)查詢結(jié)果進(jìn)行分組,2.使用GROUP BY子句,聚合函數(shù)本身只能產(chǎn)生一個(gè)單個(gè)的匯總數(shù)據(jù),使用GROUP BY子句之后,就可以生成分

67、組的匯總數(shù)據(jù)。,要求在學(xué)生表中,按班級(jí)進(jìn)行匯總?cè)藬?shù)和平均年齡:,SELECT 班級(jí), COUNT(*) AS 班級(jí)人數(shù), AVG(年齡) AS 平均年齡 FROM 學(xué)生表 GROUP BY 班級(jí) ORDER BY 班級(jí),2.5.5 用GROUP BY 子句對(duì)查詢結(jié)果進(jìn)行分組,聯(lián)合使用GROUP BY

68、子句與HAVING子句,將在數(shù)據(jù)分組的基礎(chǔ)上,進(jìn)一步對(duì)數(shù)據(jù)進(jìn)行匯總??梢杂米泳銱AVING為結(jié)果集中的組設(shè)置條件。,要求檢索出在選課表里同時(shí)選修了4門課程的同學(xué)的學(xué)號(hào) :,SELECT 學(xué)號(hào), COUNT(課程號(hào)) AS 課程門數(shù) FROM 選課表 GROUP BY 學(xué)號(hào) HAVING COUNT(課程號(hào))= 4 ORDER BY 學(xué)號(hào),

69、返回本章目錄,2.5.6 用HAVING 子句篩選結(jié)果集,1.ANSI連接,在實(shí)際查詢中,常需要同時(shí)從兩個(gè)或者以上的表中檢索數(shù)據(jù)。連接就是允許同時(shí)從兩個(gè)表或者兩個(gè)以上的表中檢索數(shù)據(jù),指定這些表中的某個(gè)或者某些列作為連接條件。在SQL Server中,可使用兩種連接形式,一種是ANSI連接,這時(shí)連接條件出現(xiàn)在FROM子句中;另一種是SQL Server連接,這時(shí)連接條件出現(xiàn)在WHERE條件中。,ANSI連接的語法形式如下:,SELECT

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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)論