版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、上一頁上一頁下一頁下一頁返回首頁返回首頁上一頁上一頁下一頁下一頁返回首頁返回首頁第第1章章 access數(shù)據(jù)庫基礎數(shù)據(jù)庫基礎 第第2章章 sql server基礎基礎 第第3章章 visual basic 數(shù)據(jù)庫訪問概述數(shù)據(jù)庫訪問概述第第4章章 用戶界面控件用戶界面控件 第第5章章 數(shù)據(jù)訪問對象(數(shù)據(jù)訪問對象(dao) 第第6章章 開放式數(shù)據(jù)庫連接與遠程數(shù)據(jù)對象開放式數(shù)據(jù)庫連接與遠程數(shù)據(jù)對象 第第7章章 active x數(shù)據(jù)對象(數(shù)據(jù)對象(ado) visual basic數(shù)據(jù)庫應用電子教案第第8章章 報表報表 上一頁上一頁下一頁下一頁返回首頁返回首頁第1章 access數(shù)據(jù)庫基礎1.1 關系
2、數(shù)據(jù)庫的基本概念 1.2 access基礎 1.3 建立access數(shù)據(jù)庫和表 1.4 數(shù)據(jù)庫設計實例 返回總目錄返回總目錄上一頁上一頁下一頁下一頁返回首頁返回首頁第2章 sql server基礎2.1 microsoft sql server 2000基礎 2.2 transact-sql語言基礎 2.3 sql數(shù)據(jù)庫 2.4 創(chuàng)建和使用表 2.6 高級查詢技術 2.5 簡單查詢 返回總目錄返回總目錄上一頁上一頁下一頁下一頁返回首頁返回首頁3.1 訪問數(shù)據(jù)庫 3.2 data控件 第3章 vb數(shù)據(jù)庫訪問概述返回總目錄返回總目錄上一頁上一頁下一頁下一頁返回首頁返回首頁4.1 固有控件 4.2
3、activex控件 4.3 通訊錄應用程序實例 第4章 用戶界面控件返回總目錄返回總目錄上一頁上一頁下一頁下一頁返回首頁返回首頁5.1 數(shù)據(jù)訪問對象 5.2 使用dao操作數(shù)據(jù) 5.3 使用dao控制數(shù)據(jù)庫結構 5.4 dao實例 第5章 數(shù)據(jù)訪問對象返回總目錄返回總目錄上一頁上一頁下一頁下一頁返回首頁返回首頁6.1 odbc的配置和使用 6.2 使用遠程數(shù)據(jù)控件訪問數(shù)據(jù) 6.3 使用遠程數(shù)據(jù)對象 6.4 實例 返回總目錄返回總目錄第6章 開放式數(shù)據(jù)庫連接與遠程數(shù)據(jù)對象上一頁上一頁下一頁下一頁返回首頁返回首頁7.1 使用ado activex控件 7.2 ado常用對象的使用 返回總目錄返回總
4、目錄第7章 activex數(shù)據(jù)對象上一頁上一頁下一頁下一頁返回首頁返回首頁8.1 用vb的datareport設計器設計報表 8.2 使用access建立報表 8.3 用vb輸出報表 8.4 使用vb的printer對象創(chuàng)建報表 返回總目錄返回總目錄第8章 報表上一頁上一頁下一頁下一頁返回首頁返回首頁1關系數(shù)據(jù)庫系統(tǒng) 關系數(shù)據(jù)庫系統(tǒng)是指支持關系模型的數(shù)據(jù)庫系統(tǒng)。 關系模型由關系數(shù)據(jù)結構、關系操作集合和完整性約束三部分組成。 2數(shù)據(jù)庫的定義 在關系數(shù)據(jù)庫模型中,數(shù)據(jù)庫為一些相互之間存在一定關聯(lián)的表格的集合。一個表格是由若干的行(記錄)來構成。字段是記錄的一部分。 數(shù)據(jù)表有以下特點: 數(shù)據(jù)表的任意
5、行和列可以以任何順序排列; 數(shù)據(jù)表的名稱必須唯一; 數(shù)據(jù)表中不能有重復的記錄,每條記錄都是可以辨認的。 1.1.1 關系數(shù)據(jù)庫的定義上一頁上一頁下一頁下一頁返回首頁返回首頁1主關鍵字 在關系的各種屬性中,能夠用來唯一標識記錄的屬性稱為關鍵字。主關鍵字不允許為空或重復,并且要保證其唯性,以保證數(shù)據(jù)的的完整性。 2外關鍵字 在實現(xiàn)關系數(shù)據(jù)庫時,必須能表示表與表之間的聯(lián)系。因此,需要一個表中的一列與另一個表的主關鍵字相匹配,這樣的列可以做為外關鍵字。這種完整性規(guī)則,稱為引用完整性。1.1.2 主關鍵字和外關鍵字上一頁上一頁下一頁下一頁返回首頁返回首頁 關系數(shù)據(jù)庫的模型簡明,便于用戶理解;用戶對數(shù)據(jù)庫
6、的操作使用了非過程化的表示,操作方便;用戶接口不涉及任何存儲路徑和存儲方式,數(shù)據(jù)獨立性高。 此外,關系數(shù)據(jù)庫有著網(wǎng)狀數(shù)據(jù)庫和層狀數(shù)據(jù)庫所沒有的強大數(shù)學基礎;關系數(shù)據(jù)庫管理程序能夠在同一時刻對多個表格進行操作,這種能力可以將數(shù)據(jù)分成更合乎邏輯的和易于管理的類別,關系數(shù)據(jù)庫常常由許多通過“關系”聯(lián)系起來的表格組成。 1.1.3 關系數(shù)據(jù)庫的特點上一頁上一頁下一頁下一頁返回首頁返回首頁1visual basic訪問數(shù)據(jù)庫的類型 在visual basic中通過數(shù)據(jù)訪問控件或數(shù)據(jù)訪問對象(dao)等可以訪問的數(shù)據(jù)庫有以下幾種: jet數(shù)據(jù)庫,即microsoft access數(shù)據(jù)庫; isam數(shù)據(jù)庫,
7、例如:dbase,foxpro數(shù)據(jù)庫等; odbc數(shù)據(jù)庫,凡是遵循odbc標準的客戶/服務器數(shù)據(jù)庫。2外關鍵字 visual basic訪問數(shù)據(jù)庫通常有下面三種途徑: 通過數(shù)據(jù)庫控制控件data control訪問; 通過vb提供的數(shù)據(jù)庫對象變量編程訪問; 通過odbc接口訪問odbc api函數(shù)。返回本返回本章目錄章目錄1.1.4 visual basic訪問數(shù)據(jù)庫的類型與途徑上一頁上一頁下一頁下一頁返回首頁返回首頁1access的對象 access 2000支持的對象包括表、查詢、報表、窗體、宏、模塊及網(wǎng)頁。 access所提供的這些對象都存放在同一個數(shù)據(jù)庫文件(.mdb文件)中,而不像其
8、他數(shù)據(jù)庫那樣分別存放于不同的文件中。這樣就方便了數(shù)據(jù)庫文件的管理。 2access的主要功能 定義數(shù)據(jù)創(chuàng)建表,利用表存儲相應的信息; 根據(jù)需要定義各表之間的關系; 方式多樣的數(shù)據(jù)處理能力; 創(chuàng)建web頁,建立對internet和intranet的支持; 開發(fā)應用程序。 1.2.1 access的特點上一頁上一頁下一頁下一頁返回首頁返回首頁1access主窗口 1.2.2 熟悉access開發(fā)環(huán)境上一頁上一頁下一頁下一頁返回首頁返回首頁2數(shù)據(jù)庫窗口 返回本返回本章目錄章目錄1.2.2 熟悉access開發(fā)環(huán)境上一頁上一頁下一頁下一頁返回首頁返回首頁1. 設計數(shù)據(jù)庫的基本步驟 對數(shù)據(jù)庫進行總體的設
9、計; 規(guī)劃該數(shù)據(jù)庫中需要建立的表; 確定表中所需的字段; 明確有唯一值的字段; 確定表之間的關系; 優(yōu)化設計; 輸入數(shù)據(jù)并新建其他數(shù)據(jù)庫對象; 使用microsoft access的分析工具設計輸出報表。 1.3.1 數(shù)據(jù)庫的設計上一頁上一頁下一頁下一頁返回首頁返回首頁1打開數(shù)據(jù)庫 在使用數(shù)據(jù)庫之前,必須打開數(shù)據(jù)庫。啟動access后,彈出如下圖所示“microsoft access”對話框,從中選擇“打開已有數(shù)據(jù)庫”選項,選擇所要打開的數(shù)據(jù)庫,單擊“確定”按鈕,即可打開此數(shù)據(jù)庫。如果在“打開已有數(shù)據(jù)庫”下面的選項框里沒有所需要的數(shù)據(jù)庫,單擊“更多的文件”選項,進行操作。 1.3.2 數(shù)據(jù)庫的
10、創(chuàng)建與打開上一頁上一頁下一頁下一頁返回首頁返回首頁2創(chuàng)建access數(shù)據(jù)庫 microsoft access 提供兩種創(chuàng)建 access 數(shù)據(jù)庫的方法: 使用“數(shù)據(jù)庫向導”創(chuàng)建數(shù)據(jù)庫,利用系統(tǒng)提供的模板來選擇數(shù)據(jù)庫類型來創(chuàng)建所需的表、窗體及報表。采用這種方法,一次操作即可為所選數(shù)據(jù)庫類型創(chuàng)建必要的表、窗體及報表,這是創(chuàng)建數(shù)據(jù)庫最簡單最快速的方法。 先創(chuàng)建一個空數(shù)據(jù)庫,然后再添加表、窗體、報表及其他對象,這是最靈活的方法,但需要分別定義每一個數(shù)據(jù)庫要素。 無論哪一種方法,在數(shù)據(jù)庫創(chuàng)建之后,都可以隨時修改或擴展數(shù)據(jù)庫。 1.3.2 數(shù)據(jù)庫的創(chuàng)建與打開上一頁上一頁下一頁下一頁返回首頁返回首頁1表的設
11、計過程表格設計的基本過程為: 打開數(shù)據(jù)庫; 建立一個新表; 輸入每一個字段名、數(shù)據(jù)類型和說明; 確定為每一個字段定義的屬性; 設置個主關鍵字; 為某些字段建立索引; 保存設計。 1.3.3 創(chuàng)建表上一頁上一頁下一頁下一頁返回首頁返回首頁2創(chuàng)建表的方法創(chuàng)建表有很多方法,基本的主要有兩種方法: 使用表向導創(chuàng)建表 在“設計”視圖中創(chuàng)建表 1.3.3 創(chuàng)建表上一頁上一頁下一頁下一頁返回首頁返回首頁修改字段刪除字段增加字段修改字段的屬性修改表與表之間的關系 1.3.4 修改表 一個數(shù)據(jù)庫系統(tǒng)被設計出來以后,當出現(xiàn)新的需求時,往往要對表的結構進行修改。 除此之外,還包含設置數(shù)據(jù)表格式、隱藏和凍結列、多級顯
12、 示記錄和使用查閱向導等。 對表進行修改的操作包括:上一頁上一頁下一頁下一頁返回首頁返回首頁數(shù)據(jù)庫中的表一般來講并不是相互獨立、互不相關的,表與表之間存在著一定的聯(lián)系,也正因為這些聯(lián)系才體現(xiàn)出了數(shù)據(jù)庫的優(yōu)越性。單擊”數(shù)據(jù)庫“窗口工具欄上的”關系“按鈕,出現(xiàn)如下圖所示的關系窗口。 關系窗口里列出了所有已經存在的表與表之間的聯(lián)系,這種聯(lián)系通過表之間的連線體現(xiàn)出來。1.3.5 修改表間的關系上一頁上一頁下一頁下一頁返回首頁返回首頁通過上面的操作,我們創(chuàng)建了一個數(shù)據(jù)庫,但數(shù)據(jù)庫中并沒有數(shù)據(jù),下面我們?yōu)閿?shù)據(jù)庫輸入數(shù)據(jù),使之成為一個完整的數(shù)據(jù)庫。下圖為一數(shù)據(jù)輸入窗口。 返回本章目錄返回本章目錄1.3.6
13、表中數(shù)據(jù)輸入上一頁上一頁下一頁下一頁返回首頁返回首頁本實例首先創(chuàng)建一個名為“學生信息”的數(shù)據(jù)庫,然后在該數(shù)據(jù)庫中創(chuàng)建三張數(shù)據(jù)表:“學生成績”、“姓名”和“學生聯(lián)系表”,并輸入一部分數(shù)據(jù)記錄,最后建立了表間關系。設計步驟如下: 啟動access 2000并創(chuàng)建空數(shù)據(jù)庫,命名為“學生成績.mdb” 。 為數(shù)據(jù)庫創(chuàng)建表,為了輸入部分數(shù)據(jù),我們使用設計器來創(chuàng)建一個新表。 定義字段,如下頁所示。數(shù)據(jù)庫設計實例上一頁上一頁下一頁下一頁返回首頁返回首頁 數(shù)據(jù)庫設計實例上一頁上一頁下一頁下一頁返回首頁返回首頁保存數(shù)據(jù)表,命名為“學生成績”;根據(jù)需要定義主鍵;輸入數(shù)據(jù);雙擊數(shù)據(jù)庫視圖中的 “學生成績” 表,在如
14、下圖所示的表視圖中添加幾條新的記錄,依次輸入學號、姓名等字段。 數(shù)據(jù)庫設計實例上一頁上一頁下一頁下一頁返回首頁返回首頁 依照步驟,再建立“姓名”表和“學生聯(lián)系”表,如下圖所示,兩張表均定義“學號”為主鍵。 數(shù)據(jù)庫設計實例上一頁上一頁下一頁下一頁返回首頁返回首頁建立表間關系 返回本章目錄返回本章目錄數(shù)據(jù)庫設計實例上一頁上一頁下一頁下一頁返回首頁返回首頁 microsoft sql server2000是一個分布式的關系數(shù)據(jù)庫管理系統(tǒng),具有客戶機/服務器體系結構,使用transact-sql語言在客戶機和服務器之間傳遞客戶機的請求和服務器的處理結果。 microsoft sql server200
15、0系統(tǒng)具有動態(tài)的數(shù)據(jù)存儲機制。 microsoft sql server2000系統(tǒng)具有強大的安全措施。 microsoft sql server2000系統(tǒng)具有很強的數(shù)據(jù)互操作性。 microsoft sql server2000系統(tǒng)具有功能強大的網(wǎng)上功能,可以在internet上發(fā)布數(shù)據(jù)庫中的數(shù)據(jù)。 microsoft sql server2000雖然采用了分布式的計算模式,但是它也支持單用戶的計算模式。 microsoft sql server2000系統(tǒng)具有內置的數(shù)據(jù)復制功能。 2.1.1 microsoft sql server 2000的特點上一頁上一頁下一頁下一頁返回首頁返回首頁
16、 sql server 企業(yè)管理器是一個集成化的數(shù)據(jù)庫操作環(huán)境,是基于一種新的被稱為微軟管理控制臺的公共服務器管理環(huán)境,是sql server中最重要的一個管理工具。下圖是一個典型的sql server 企業(yè)管理器窗口。2.1.2 sql server 企業(yè)管理器 (enterprise manager) 上一頁上一頁下一頁下一頁返回首頁返回首頁 sql query analyzer既是一個圖形化的執(zhí)行transact-sql查詢語句的強大工具,又是一個方便易用的工具。見下圖是一個典型的sql query analyzer窗口。 返回本章目錄返回本章目錄2.1.3 sql 查詢分析器(quer
17、y analyzer)上一頁上一頁下一頁下一頁返回首頁返回首頁 sql語言是結構化查詢語言(structure query language)的簡稱,是當前最流行的數(shù)據(jù)庫語言,是訪問關系數(shù)據(jù)庫的標準語言。microsoft 的sql server使用的sql語言叫transact-sql(事務sql,簡稱t-sql)。 一體化的特點,集數(shù)據(jù)查詢、數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)控制功能為一體; 高度非過程化語言,只需要提出“干什么”,而不需指出“如何干”,語句的操作過程由系統(tǒng)自動完成; 語言簡潔,類似于人的思維習慣,容易理解和掌握; 可以直接以命令方式交互使用,也可以嵌入到程序設 計語言中使用。 tr
18、ansact-sql語言有以下幾個主要特點:2.2.1 sql 概述上一頁上一頁下一頁下一頁返回首頁返回首頁 transact-sql語言按其功能,可分為四大部分:數(shù)據(jù)定義功能、數(shù)據(jù)控制功能、數(shù)據(jù)查詢功能和數(shù)據(jù)操縱功能。 數(shù)據(jù)定義(ddl):實現(xiàn)定義、刪除和修改數(shù)據(jù)庫對象的功能(create、drop、alter )。 數(shù)據(jù)查詢(ql):實現(xiàn)查詢數(shù)據(jù)的功能(select )。 數(shù)據(jù)操縱(dml)實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的增加、刪除和修改的功能(insert、update、delete )。 數(shù)據(jù)控制(dcl):實現(xiàn)控制用戶對數(shù)據(jù)庫的操作權限的功能(grant、revoke、deny )。2.2.1 s
19、ql 概述上一頁上一頁下一頁下一頁返回首頁返回首頁bigint int smallint tinyint bit numeric(p,s) decimal(p,s) float real1數(shù)值型2字符數(shù)據(jù)類型 字符型數(shù)據(jù)是由漢字、字母、數(shù)字和各種符號組成的,在sql server 2000中,默認情況下,字符數(shù)據(jù)是用單引號括起來的。 普通編碼:char(n) varchar(n) text unicode編碼: nchar(n) nvarchar(n) ntext 二進制編碼:binary(n) varbinary(n) image2.2.2 transact-sql 數(shù)據(jù)類型 數(shù)值型有以下幾
20、類:上一頁上一頁下一頁下一頁返回首頁返回首頁 sql server 2000提供了兩種用存儲日期和時間的數(shù)據(jù)類型:datetime和smalldatetime。 當存儲此種類型數(shù)據(jù)時,默認的格式是mmddyyyyhh:mm:ss am/pm,當插入數(shù)據(jù)或在其它地方使用該類型時,需用單引號把它括起來。 3日期時間類型 輸入日期數(shù)據(jù)時,可采用如下幾種輸入格式: apr 22 2003 /*英文數(shù)字格式*/ 2003-04-22 /*數(shù)字加分隔符格式*/ 20030422 /*純數(shù)字格式*/ 輸入時間時,可采用12小時格式或24小時格式: 2003-04-22 2:25:35 pm /*12小時格式
21、*/ 2003-04-22 14:25:35 /*24小時格式*/ 2.2.2 transact-sql 數(shù)據(jù)類型上一頁上一頁下一頁下一頁返回首頁返回首頁 貨幣數(shù)據(jù)表示正的或負的貨幣值,在sql server 2000中使用money和smallmoney數(shù)據(jù)類型存儲貨幣數(shù)據(jù)。4貨幣類型 貨幣類型的數(shù)據(jù)實際上都是帶有4位小數(shù)的decimal類型的數(shù)據(jù)。 在money或smallmoney類型的字段中輸入貨幣數(shù)據(jù)時必須在數(shù)值前加上一個貨幣符號,如$符號;輸入負值時,應當在貨幣數(shù)據(jù)的后面加一個負號。 2.2.2 transact-sql 數(shù)據(jù)類型上一頁上一頁下一頁下一頁返回首頁返回首頁 一個語句批
22、是一組transact-sql語句的集合,語句批的結束標記為:go 1語句批 腳本是存儲在文件中的一組transact-sql語句的集合。 2腳本3注釋 注釋是程序代碼中不執(zhí)行的文本字符串 ,transact-sql支持兩種類型的注釋:一種是單行注釋“-”;另一種是塊注釋即“/* */”。 sql server中的編程語言是transact-sql,transact-sql是一種非過程化的高級語言,其基本成分是語句,由一個或多個語句構成一個批處理,由一個或多個批處理構成一個腳本,并保存到磁盤文件中。 2.2.3 基本概念上一頁上一頁下一頁下一頁返回首頁返回首頁 標準標識符可以包含1128個字符
23、,包括字母、符號(_、#、$)及數(shù)字。標準標識符里不允許有空格,應遵循:第一個字符必須是字母(az或az),第一個字符后面可以是數(shù)字、字符或符號。但當?shù)谝粋€字符是符號時,則有如下特殊含義: 1標準標識符 以開頭的標識符代表一個局部變量或參數(shù) 以#號開頭的標識符代表一個臨時表或存儲過程 以#號開頭的標識符代表一個全局臨時對象 2.2.4 sql server命名規(guī)則上一頁上一頁下一頁下一頁返回首頁返回首頁2限定標識符 如果不遵守一個或多個標準標識符格式規(guī)則時,必須使用限定標識符。一般地,在下列兩種情況下使用限定標識符: 當對象名中包含空格時 當保留關鍵字被用作對象名或對象部分的名字時 當限定標識
24、符出現(xiàn)在transact-sql語句中時,必須用方括號( )或雙引號(“”)將限定標識符括起來。 返回本章目錄返回本章目錄2.2.4 sql server命名規(guī)則上一頁上一頁下一頁下一頁返回首頁返回首頁 數(shù)據(jù)庫是數(shù)據(jù)和數(shù)據(jù)庫對象的容器。數(shù)據(jù)庫對象就是存儲和管理數(shù)據(jù)的結構形式,這些數(shù)據(jù)庫對象主要包括數(shù)據(jù)庫圖表、表、函數(shù)、視圖、存儲過程、觸發(fā)器等。設計數(shù)據(jù)庫的過程就是設計這些數(shù)據(jù)庫對象的過程。 1數(shù)據(jù)庫對象 事務就是一個單元的工作,該單元的工作或者全部完成,或者全部不完成。sql server 2000系統(tǒng)具有事務功能,可以保證數(shù)據(jù)庫操作的一致性和完整性。 2事務和事務日志3數(shù)據(jù)庫文件和文件組 數(shù)
25、據(jù)庫的物理表現(xiàn)是操作系統(tǒng)文件。sql server 2000使用一組 操作系統(tǒng)文件來創(chuàng)建一個數(shù)據(jù)庫。數(shù)據(jù)庫中的所有數(shù)據(jù)和對象, 都存儲在這些操作系統(tǒng)文件中。如前所述,這些操作系 統(tǒng)的文件有兩種形式:一種是數(shù)據(jù)文件,另一種 是日志文件。文件組就是數(shù)據(jù)文件的集合。 2.3.1 sql server 2000數(shù)據(jù)庫特點上一頁上一頁下一頁下一頁返回首頁返回首頁1創(chuàng)建數(shù)據(jù)庫 在企業(yè)管理器中,打開左邊的樹狀結構,在數(shù)據(jù)庫文件夾或其下屬任一數(shù)據(jù)庫圖標上右擊,從彈出的快捷菜單中選擇新建數(shù)據(jù)選項,或直接單擊工具欄上的“新數(shù)據(jù)庫”圖標,然而按步驟依次進行操作。 create database語句的語法形式如下:c
26、reate database database_name on primary , n , , n log on , n 示例示例2.3.22.3.3 創(chuàng)建和管理數(shù)據(jù)庫 可以在sql server企業(yè)管理器中創(chuàng)建數(shù)據(jù)庫,也可使用transact-sql語句中的create database命令來創(chuàng)建數(shù)據(jù)庫。 上一頁上一頁下一頁下一頁返回首頁返回首頁 創(chuàng)建一個示例數(shù)據(jù)庫。該數(shù)據(jù)庫的主數(shù)據(jù)文件的邏輯名稱是示例數(shù)據(jù)庫_data,物理文件是示例數(shù)據(jù)庫.mdf,大小是10mb,最大是30mb,以20%的速度增加;該數(shù)據(jù)庫的日志文件的邏輯名稱是示例數(shù)據(jù)庫_log,操作系統(tǒng)文件是示例數(shù)據(jù)庫.ldf,大小是3
27、mb,最大是10mb,以1mb的速度增加。 create databse 示例數(shù)據(jù)庫on primary(name=示例數(shù)據(jù)庫_data, filename=c:microsoft sql serverdata示例數(shù)據(jù)庫.mdf , size=10mb, maxsize=30mb, filegrowth=20%)log on (name=示例數(shù)據(jù)庫_log, filename=c:microsoft sql serverdata示例數(shù)據(jù)庫.ldf , size=3mb, maxsize=10mb,filegrowth=1mb) 創(chuàng)建和管理數(shù)據(jù)庫示例上一頁上一頁下一頁下一頁返回首頁返回首頁 數(shù)據(jù)
28、庫創(chuàng)建以后,可以在企業(yè)管理器中利用數(shù)據(jù)庫的屬性設置,來更改創(chuàng)建時的某些設置和創(chuàng)建時無法設置的屬性。 2修改數(shù)據(jù)庫 也可使用alter databse語句來修改數(shù)據(jù)庫 。語法如下:alter database databasename|add log file ,n |remove file logical_file_name with delete|add filegroup filegroup_name|remove filegroup filegroup_name|modify file |modify name=new_dbname示例示例2.3.22.3.3 創(chuàng)建和管理數(shù)據(jù)庫上一頁上一
29、頁下一頁下一頁返回首頁返回首頁 為了擴大示例數(shù)據(jù)庫的數(shù)據(jù)文件,可以增加一個次要數(shù)據(jù)文件示例數(shù)據(jù)庫_data2,其大小為10mb,最大是20mb,以20%的速度增長。 alter database 示例數(shù)據(jù)庫add file (name=示例數(shù)據(jù)庫_data2, filename= c:microsoft sql serverdata示例數(shù)據(jù)庫2.mdf , size=10mb, maxsize=20mb,filegrowth=20%) 創(chuàng)建和管理數(shù)據(jù)庫示例上一頁上一頁下一頁下一頁返回首頁返回首頁 對于那些不再需要的數(shù)據(jù)庫,可以刪除它以釋放在磁盤上占用的空間。在企業(yè)管理器中,右擊所要刪除的數(shù)據(jù)庫
30、,從彈出的快捷菜單中選擇“刪除”選項或直接按下鍵盤上的delete按鈕即可刪除數(shù)據(jù)庫,也可以選擇數(shù)據(jù)庫文件夾或圖標后單出工具欄中的“刪除”圖標來刪除數(shù)據(jù)庫。 3刪除數(shù)據(jù)庫 也可以利用drop database語句來刪除數(shù)據(jù)庫。語法如下:drop database database_name ,n 例:刪除已建立的示例數(shù)據(jù)庫drop database 示例數(shù)據(jù)庫返回本章目錄返回本章目錄2.3.22.3.3 創(chuàng)建和管理數(shù)據(jù)庫上一頁上一頁下一頁下一頁返回首頁返回首頁 表是包含數(shù)據(jù)庫中所有數(shù)據(jù)的數(shù)據(jù)庫對象 。既可以使用create table 語句創(chuàng)建表,也可以通過企業(yè)管理器創(chuàng)建表。 使用create
31、 table 語句的語法如下:create table database_name. owner.| owner. table_name ( | column_name as computed_column_expression | | ,n ) 示例示例 在企業(yè)管理器中,展開指定的服務器和數(shù)據(jù)庫,打開想要創(chuàng)建新表的數(shù)據(jù)庫,右擊表對象,并從彈出的快捷菜單中選擇“新建表”選項,然后按步驟操作即可。2.4.1 創(chuàng)建表上一頁上一頁下一頁下一頁返回首頁返回首頁 在示例數(shù)據(jù)庫中創(chuàng)建學生表,該表包含了學生的有關信息:學號、姓名、性別、班級、年齡。 use 示例數(shù)據(jù)庫create table 學生表 (學號
32、 int not null ,姓名 varchar (50) null ,性別 char (1) null ,班級 char (10) null ,年齡 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增加、刪除、修改字段 例:在學生表中,增加一個字段“出生年月”,該字段的數(shù)據(jù)類型為datetime,
33、允許為空,沒有默認值。 alter table 學生表 add 出生年月 datetime null2在企業(yè)管理器中增加、刪除、修改字段 在企業(yè)管理器中,打開指定的服務器中要修改的表的數(shù)據(jù)庫, 用右鍵單擊進行修改的表,從彈出的快捷菜單中選擇“設計 表”選項,然后按步驟操作即可。 2.4.2 修改、刪除表結構上一頁上一頁下一頁下一頁返回首頁返回首頁 刪除表就是將指定的表中的數(shù)據(jù)和表的結構從數(shù)據(jù)庫中永久性地去除。表刪除之后,就不能再恢復該表的定義。3刪除表的結構 刪除表也可以使用drop table語句,該語句的語法形式如下: drop table table_name 可以使用企業(yè)管理器刪除表,
34、在該工具中,打開指定表所在的數(shù)據(jù),右擊該表,從彈出的菜單中選擇“刪除”項即可。當然,系統(tǒng)表不能被刪除。 如: drop table 學生表2.4.2 修改、刪除表結構上一頁上一頁下一頁下一頁返回首頁返回首頁 表創(chuàng)建之后,只是一個空表。因此,向表中插入數(shù)據(jù)是在表結構創(chuàng)建之后,首先需要執(zhí)行的操作。在表中插入數(shù)據(jù),使用insert語句。該語句的語法形式如下:1插入數(shù)據(jù) 例:要求往學生表中插入一行數(shù)據(jù):學號為999999,姓名為張小三,性別為男,其它情況未知??捎靡韵氯N方式完成: insert into table_name (column_list) values (default | null
35、| expression ,n )| default values insert into 學生表( 學號,姓名,性別) values(999999, 張小三, m) insert into 學生表 values(999999, 張小三, m,null,null) insert into 學生表 values(999999, 張小三, m, default , default) 注意:insert語句每一次只能插入一行數(shù)據(jù),在向表 中插入數(shù)據(jù)時要注意,字符數(shù)據(jù)和日期數(shù)據(jù)要 使用單引號引起來。 2.4.3 操縱數(shù)據(jù)上一頁上一頁下一頁下一頁返回首頁返回首頁可以使用update語句修改表中已經存在的
36、數(shù)據(jù)。update語句既可以一次修改一行數(shù)據(jù),也可以一次修改多行數(shù)據(jù)。其語法形式如下: 2修改數(shù)據(jù) 例:將學生表中學生的年齡都提高1歲 update table_name set column_name= expression | default | null | variable = expression | variable = column = expression ,n from ,n where update 學生表 set 年齡=年齡+1 2.4.3 操縱數(shù)據(jù)上一頁上一頁下一頁下一頁返回首頁返回首頁 刪除數(shù)據(jù)可以使用delete語句。delete語句可以一次從表中刪除一行或多行數(shù)據(jù)
37、。其語法形式如下: 3刪除數(shù)據(jù) 例:刪除學生表中班級為gz02房產的全部學生信息。 delete from table_name from ,n where delete from 學生表 where 班級=gz02房產 注意:delete 語句只是刪除表中的數(shù)據(jù),表本身依然存在于數(shù)據(jù)庫中。如果需要刪除表本身,則應使用前面已經講 過的drop table語句。 返回本章目錄返回本章目錄2.4.3 操縱數(shù)據(jù)上一頁上一頁下一頁下一頁返回首頁返回首頁 數(shù)據(jù)檢索就是把數(shù)據(jù)庫中存儲的數(shù)據(jù)根據(jù)用戶的需求提取出來的過程,并且使用select語句進行數(shù)據(jù)檢索。 select語句完整的語法形式非常復雜,這里給出
38、如下的select簡潔語法形式: 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 order by clause compute clause for browse 2.5.1 sql查詢的基本結構上一頁上一頁下一頁下一頁返回首頁返回首頁 在上述結構中: select子句用于指定輸出的字段; from 子句用于指定數(shù)據(jù)的來源; where 子
39、句用于指定數(shù)據(jù)的選擇條件; group by 子句用于對檢索到的記錄進行分組; having 子句用于指定組的選擇條件; order by 子句用于對查詢的結果進行排序 在這些子句中,select子句和from子句是必須的,其它子句都是可選的。 以下所有的舉例都是以示例數(shù)據(jù)庫為基礎的,示例數(shù)據(jù)庫中建立了三張表:學生表、選課表、課程表,具體結構見教材圖2.14、圖2.15、圖2.16所示。2.5.1 sql查詢的基本結構上一頁上一頁下一頁下一頁返回首頁返回首頁select all | distinct select_listfrom table_name | view_name 其中:selec
40、t_list指定了要返回的列; from子句指定了返回的行和列所屬的表或視圖。 select子句的部分語法形式:1選擇列 最簡單的查詢:檢索學生表中的全部信息。 select * from 學生表* 表示檢索全部列。在這個結果中,顯示的信息與數(shù)據(jù)在表中存儲的順序完全一樣。 可在select 后面指出要檢索的列名:檢索每一個學生的姓名和班級。 select 姓名,班級 from 學生表 select 班級,姓名 from 學生表列順序的改變,只是影響數(shù)據(jù)結果的顯示,對于表中的數(shù)據(jù)的存儲順序無任何影響。 2.5.2 select 子句上一頁上一頁下一頁下一頁返回首頁返回首頁 在默認情況下,數(shù)據(jù)檢索
41、結果集中所顯示出來的列標題就是在創(chuàng)建表時所使用的列名。但是,顯示的列標題也是可以改變的。改變列標題有兩種方法: 使用“=”; 使用as關鍵字。 檢索學生表中的學號、姓名和班級信息,要求班級以“所在班級”列標題輸出。 select 學號,姓名,所在班級=班級 from 學生表 select 學號,姓名,班級 as 所在班級 from 學生表2改變列標題 上面兩個語句查詢顯示結果完全相同2.5.2 select 子句上一頁上一頁下一頁下一頁返回首頁返回首頁 select子句中可以包含算術表達式,允許+、-、*、/,當然也可以是常量。 要求輸出成績提高20%后的成績: select 學號,課程號,成
42、績,成績*1.2 as 提高后的成績 from 選課表 select distinct 學號 from 選課表3帶表達式的select子句4all與distinct sql允許關系和查詢結果中出現(xiàn)重復行,要強制消除重復,可在select后使用關鍵字distinct,而指定all則不消除重復。在mssql中,默認為all。 在選課表中,一個學生可以同時選多門課,如果要求檢索出已經 選過課的學生學號 :2.5.2 select 子句上一頁上一頁下一頁下一頁返回首頁返回首頁 在select語句中,where子句指定要檢索的數(shù)據(jù)行,將where關鍵字后面的搜索條件為真的記錄全部檢索出來。 要求檢索出選
43、課表中所有選修了1號課程的同學的學號和成績 : select 學號,成績 from 選課表 where 課程號=1select 學號,成績 from 選課表 where 課程號=1 and 成績=801比較運算符2邏輯運算符 要求檢索出選修了1號課程并且成績在80分以上的同學的學號和成績 2.5.3 用where 子句過濾記錄上一頁上一頁下一頁下一頁返回首頁返回首頁 要求檢索出學生表中年齡在20至23之間的所有男同學 : select * from 學生表 where 年齡 between 20 and 23 and 性別=m select * from 學生表 where 班級 in (gz
44、02計5,gz02計5,gz02計5)3betweenand4in(not in) in或者not in關鍵字允許指定要選擇的取值表,意思是包含在由in指定的列表之中或不包含在由not in指定的列表中。 betweenand可以指定搜索范圍,表示在之間。 要求檢索出學生表中gz02計5、gz02計6、gz02計7三個班級的同學信息 :2.5.3 用where 子句過濾記錄上一頁上一頁下一頁下一頁返回首頁返回首頁 select * from 學生表 where 姓名 like 陳% select * from 學生表 where 姓名 like 陳_ _ 5字符串模糊匹配 like關鍵字用于檢
45、索與特定字符串相匹配的記錄行。在like關鍵字中,可以使用4種匹配符:%、_、 、。帶有匹配符的字符串必須使用引號引起來。 要求檢索出學生表中所有姓“陳”的同學 信息: 要求檢索出學生表中所有不姓“陳”的同學 信息:在使用like進行數(shù)據(jù)檢索時,應注意,一個英文字母和一個漢字都是一個字符。 2.5.3 用where 子句過濾記錄上一頁上一頁下一頁下一頁返回首頁返回首頁 select 學號,成績 from 選課表 where 課程號=1 order by 成績 desc select 學號,成績 from 選課表 where 課程號=1 order by 成績,學號 desc 排序就是指用ord
46、er by子句排列查詢結果的順序;order by子句使用升序(asc)或降序(desc)指定一組列;對于在結果表中無列名稱的列,可以使用一個相對列號來代替列名,系統(tǒng)默認的排列順序是升序。 要求檢索出了選課表中所有選修課程號為1的同學的學號和成績,并按成績從高到低的順序排列 : 接上例,如果在成績相同的情況下,要求再按學號降序排列 :2.5.4 用order by子句對查詢結果排序上一頁上一頁下一頁下一頁返回首頁返回首頁1聚合函數(shù) 聚合函數(shù)可以返回整個或者幾個列或者一個列的匯總數(shù)據(jù),它常用來計算select語句查詢的統(tǒng)計值。聚合函數(shù)經常與select 語句的group by子句一同使用。常用的
47、函數(shù)及其功能 如下: avg 返回數(shù)據(jù)表達式的平均值 count 返回在某個表達式中數(shù)據(jù)值的數(shù)量 count(*) 返回所選擇行的數(shù)量 max 返回表達式中的最大值 min 返回表達式中的最小值 sum 返回表達式中所有值的和2.5.5 用group by 子句對查詢結果進行分組上一頁上一頁下一頁下一頁返回首頁返回首頁count(*)、count(列名)、count(distinc(列名) 三種用法的區(qū)別 要求查詢出選課表中1號課程的最高分、最低分及平均分: select max(成績) as 最高分, min(成績) as 最低分, avg(成績) as 平均分, from 選課表 wher
48、e 課程號=1 count(*)返回的是所選擇行的數(shù)量,包括空值在內的所有行 count(列名)統(tǒng)計出所指定列的數(shù)量,不包括null在內的行 count(distinct 列名)則統(tǒng)計出消除重復后的所指定列的數(shù)量 2.5.5 用group by 子句對查詢結果進行分組上一頁上一頁下一頁下一頁返回首頁返回首頁2使用group by子句 聚合函數(shù)本身只能產生一個單個的匯總數(shù)據(jù),使用group by子句之后,就可以生成分組的匯總數(shù)據(jù)。 要求在學生表中,按班級進行匯總人數(shù)和平均年齡: select 班級, count(*) as 班級人數(shù), avg(年齡) as 平均年齡 from 學生表 group
49、 by 班級 order by 班級 2.5.5 用group by 子句對查詢結果進行分組上一頁上一頁下一頁下一頁返回首頁返回首頁 聯(lián)合使用group by子句與having子句,將在數(shù)據(jù)分組的基礎上,進一步對數(shù)據(jù)進行匯總??梢杂米泳鋒aving為結果集中的組設置條件。 要求檢索出在選課表里同時選修了4門課程的同學的學號 : select 學號, count(課程號) as 課程門數(shù) from 選課表 group by 學號 having count(課程號)= 4 order by 學號 返回本章目錄返回本章目錄2.5.6 用having 子句篩選結果集上一頁上一頁下一頁下一頁返回首頁返回
50、首頁1ansi連接 在實際查詢中,常需要同時從兩個或者以上的表中檢索數(shù)據(jù)。連接就是允許同時從兩個表或者兩個以上的表中檢索數(shù)據(jù),指定這些表中的某個或者某些列作為連接條件。在sql server中,可使用兩種連接形式,一種是ansi連接,這時連接條件出現(xiàn)在from子句中;另一種是sql server連接,這時連接條件出現(xiàn)在where條件中。 ansi連接的語法形式如下:select table_name.column_name,table_name.column_name,from table_name join_type join table_name on search_conditions
51、where search_conditions 其中其中 join_type 有有如下三種形式:如下三種形式: inner(內連接);(內連接); cross(交叉連接);(交叉連接); outer(外連接)(外連接)2.6.1 連接查詢上一頁上一頁下一頁下一頁返回首頁返回首頁 上例給出了自連接的示例 。自連接可以理解為在某張表的多個“副本”之間進行的連接,注意此時一定要用as子句來區(qū)分到底是哪個“副本” ,即用as指定表的別名。 要求檢索出已經選修了4號課程的同學信息 :要求檢索出學號為 2011109的學生的同班同學的信息 : select 學生表.* from 學生表 join 選課表
52、on 學生表學號=選課表學號 where 選課表課程號=4 select 學生表* from 學生表 join 學生表 asb on 學生表班級=b班級 where b學號=20111092.6.1 連接查詢上一頁上一頁下一頁下一頁返回首頁返回首頁2sql server連接 sqlserver連接的語法形式如下:select table_name.column_name,table_name.column_name,from table_name,table_name, where table_name.column_name join_operator table_name.column_n
53、ame from子句列出了連接時所使用到的全部表名,where子句指定哪些行應該出現(xiàn)在結果集中,即用where子句設定過濾條件。在where子句中,在兩個連接的列中使用連接運算符。 2.6.1 連接查詢上一頁上一頁下一頁下一頁返回首頁返回首頁 上例給出了用sql server連接語法形式實現(xiàn)的自連接操作 要求檢索出至少已經有一門課程及格的同學的信息 :要求檢索出學號為 2011109的學生的同班同學的信息 : select distinct 學生表.* from 學生表, 選課表 where 學生表學號=選課表學號 and 成績=60 select 學生表* from 學生表 as a,學生表
54、 asb where a 班級=b 班級 and b學號=20111092.6.1 連接查詢上一頁上一頁下一頁下一頁返回首頁返回首頁1把子查詢用作派生的表 子查詢是一系列select語句。當一個查詢依賴于另一個查詢的結果時,子查詢會很有用。 使用子查詢時,應注意: 子查詢要用括號括起來;只要需要一個值或一系列的值,就可以用子查詢代替一個表達式 子查詢中不能查詢包含數(shù)據(jù)類型是text或image的字段 子查詢中也可以再包含子查詢,嵌套可以多至32層 可以用子查詢產生一個派生的表,用于代替from子句中的表。 select a* from (select 學號,姓名,年齡 from 學生表 whe
55、re 班級=gz02計6) as a 2.6.2 子查詢上一頁上一頁下一頁下一頁返回首頁返回首頁2把子查詢用作表達式 在t-sql中,所有使用表達式的地方,都可以用子查詢來代替。此時子查詢必須返回一個單個的值或某一個字段的值。子查詢可以返回一系列的值來代替出現(xiàn)在where子句中的in關鍵字的表達式。 要求查詢出gz02計7班同學的平均年齡以及每個同學年齡與平均年齡的差: 注意:當子查詢跟隨在比較運算符 =、= 之 后,或子查詢用作表達式時,子查詢必須只能返回單 值;當返回值多于一個的時候,則子查詢只能 跟在關鍵字in后形成集合。 2.6.2 子查詢 select 學號,姓名,年齡, (sele
56、ct avg(年齡) from 學生表 ) as 平均年齡 年齡-(select avg(年齡) from 學生表 ) as 年齡差 from 學生表 where 班級=gz02計7 上一頁上一頁下一頁下一頁返回首頁返回首頁3相關子查詢 相關子查詢可被用作動態(tài)表達式,這個表達式的值相對于外層查詢的每一行而變化。查詢處理器為外層查詢的每一個記錄計算子查詢的值,一次一行,而這個子查詢每次都會被作為一個表達式而被計算并返回給外層查詢。相關子查詢是動態(tài)執(zhí)行的子查詢和外層查詢間的一個非常有效的聯(lián)合。 select 學號,姓名 from 學生表 where 90=60) as 及格人數(shù) (select c
57、ount(*) from 選課表 where 課程號=課程表課程號 and 成績60) as 不及格人數(shù) from 課程表2.6.2 子查詢上一頁上一頁下一頁下一頁返回首頁返回首頁4使用exists與not exists操作符 在相關子查詢中可以使用exists和not exists操作符判斷某個值是否在一系列的值中。sql server處理帶有exists和not exists操作符的子查詢時: select 學號,姓名,班級 from 學生表where exists(select * from 選課表 where 學號=學生表.學號 and 課程號=1) and exists(select
58、 * from 選課表 where 學號=學生表.學號 and 課程號=1) 外層查詢測試子查詢返回的記錄是否存在; 基于查詢所指定的條件,子查詢返回true或false; 子查詢不產生任何數(shù)據(jù)。 要求檢索出同時選修了1號課程和2號課程的同學的信息 :2.6.2 子查詢上一頁上一頁下一頁下一頁返回首頁返回首頁 在使用select語句進行查詢時,如果只希望列出前幾個結果,而不是全部結果,這時就可使用top關鍵字來選取輸出的結果。 select top 5 學號,sum(成績) as 總分 from 選課表group by 學號order by 總分 desc select top n perce
59、nt with ties 查詢列表 要求檢索出總分在前5位的同學的學號及其總分 : 使用top的格式為:2.6.3 使用top限制結果集上一頁上一頁下一頁下一頁返回首頁返回首頁 可以將兩個或多個查詢的結果組合為一個結果集,這就是合并多個結果集的含義。使用union可以實現(xiàn)這個目的。 select * from 學生表 where 班級=gz02計6 unionselect * from 學生表 where 班級=gz02計7 select 語句1 unionselect 語句2 union all 要求將對gz02計6班和gz02計7班學生的查詢結果合并為一個結果集 : 使用union的格式為
60、: :2.6.4 合并多個結果集返回本章目錄返回本章目錄上一頁上一頁下一頁下一頁返回首頁返回首頁1數(shù)據(jù)庫訪問方法 data control:data control dao對象:data access object rdo對象:remote data object ado對象:activex data object3.1.1數(shù)據(jù)訪問簡述上一頁上一頁下一頁下一頁返回首頁返回首頁1數(shù)據(jù)源類型 數(shù)據(jù)源分成相應的三種:jet數(shù)據(jù)源、isam數(shù)據(jù)源、odbc數(shù)據(jù)源。 2三種數(shù)據(jù)源比較 jet數(shù)據(jù)源包括通過dao api和microsoft access創(chuàng)建的數(shù)據(jù)源,一般被稱為本地數(shù)據(jù)源,是vb默認的數(shù)據(jù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《電子欺騙》課件
- 2024年公務員個人總結
- (高頻非選擇題25題)第2單元 社會主義制度的建立與社會主義建設的探索(解析版)
- 2013年高考語文試卷(重慶)(空白卷)
- 寒假安全家長會
- 未成年人監(jiān)護制度創(chuàng)新-洞察分析
- 行業(yè)趨勢預測與洞察-洞察分析
- 無線醫(yī)療設備-洞察分析
- 新型貯藏保鮮方法研究-洞察分析
- 網(wǎng)絡切片安全態(tài)勢感知-洞察分析
- 四川省食品生產企業(yè)食品安全員理論考試題庫(含答案)
- 人教版八年級音樂上冊 第一單元 《拉起手》 教案
- 《馬克思主義基本原理》學習通超星期末考試答案章節(jié)答案2024年
- 期末測試卷(試題)-2024-2025學年人教PEP版(2024)英語三年級上冊
- 《旅游大數(shù)據(jù)》-課程教學大綱
- 工藝以及質量保證措施,工程實施的重點、難點分析和解決方案
- 七年級上冊道德與法治第1-4單元共4個單元復習教學設計
- SY-T 5412-2023 下套管作業(yè)規(guī)程
- 四色安全風險空間分布圖設計原則和要求
- 八年級化學下冊期末試卷及答案【完整版】
- 合伙人散伙分家協(xié)議書范文
評論
0/150
提交評論