《ASP程序設(shè)計(jì)》課件第8章數(shù)據(jù)庫基礎(chǔ)_第1頁
《ASP程序設(shè)計(jì)》課件第8章數(shù)據(jù)庫基礎(chǔ)_第2頁
《ASP程序設(shè)計(jì)》課件第8章數(shù)據(jù)庫基礎(chǔ)_第3頁
《ASP程序設(shè)計(jì)》課件第8章數(shù)據(jù)庫基礎(chǔ)_第4頁
《ASP程序設(shè)計(jì)》課件第8章數(shù)據(jù)庫基礎(chǔ)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

本章導(dǎo)讀數(shù)據(jù)庫的基本概念1結(jié)構(gòu)化查詢語言SQL語句2MicroftAccess2000數(shù)據(jù)庫創(chuàng)建3本章導(dǎo)讀:數(shù)據(jù)庫技術(shù)是ASP實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁功能的物質(zhì)基礎(chǔ)。利用ASP開發(fā)小型項(xiàng)目時(shí),Access往往是首選的數(shù)據(jù)庫管理系統(tǒng)。SQL(StructureQueryLanguage,結(jié)構(gòu)化查詢語言)是關(guān)系型數(shù)據(jù)庫的通用查詢語言,用于對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行組織、管理和檢索的工具。

本章要點(diǎn):8.1數(shù)據(jù)庫概述

8.1.1數(shù)據(jù)庫的基本概念

數(shù)據(jù):是指存儲在某一種媒體上能夠被識別的物理符號。它包括兩方面的內(nèi)容:一是描述事務(wù)特性的數(shù)據(jù)內(nèi)容,二是存儲在某一種媒體上的數(shù)據(jù)形式。描述事務(wù)特性必須借助一定的符號,這些符號就是數(shù)據(jù)形式。數(shù)據(jù)形式多種多樣,例如,某人的出生日期可以是{^2008-1-18},也可以是#2008-1-18#,或者是”2008年1月18日”等。

8.1.1數(shù)據(jù)庫的基本概念數(shù)據(jù)庫管理系統(tǒng):是用于管理數(shù)據(jù)庫的計(jì)算機(jī)軟件,是用戶與數(shù)據(jù)庫之間的接口。數(shù)據(jù)庫管理系統(tǒng)使用戶能方便地定義和操作數(shù)據(jù),維護(hù)數(shù)據(jù)的安全性和完整性,以及進(jìn)行多用戶的并發(fā)控制和數(shù)據(jù)庫恢復(fù)。根據(jù)數(shù)據(jù)之間的關(guān)系,數(shù)據(jù)庫管理系統(tǒng)可以分為:層次型、網(wǎng)狀型和關(guān)系型?,F(xiàn)在使用較多的是關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。與ASP搭配的數(shù)據(jù)庫主要是SQLServer和Access。8.1.1數(shù)據(jù)庫的基本概念關(guān)系型數(shù)據(jù)庫采用二維表的方式來描述數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系,表格的每一列都是一個(gè)屬性,俗稱字段;字段有字段名和字段值,字段名在一個(gè)表中不能重復(fù)。表格的每一行都表示一個(gè)實(shí)體或者兩個(gè)實(shí)體之間的聯(lián)系,俗稱記錄;行列交叉位置稱為值,值有數(shù)據(jù)類型、字節(jié)大小等相關(guān)屬性。數(shù)據(jù)庫系統(tǒng):是指引進(jìn)數(shù)據(jù)庫技術(shù)的計(jì)算機(jī)系統(tǒng),包括計(jì)算機(jī)硬件系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)、操作系統(tǒng)以及在它支持下建立起來的數(shù)據(jù)庫,應(yīng)用程序、用戶和維護(hù)人員的組成的一個(gè)整體。數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心軟件。8.2數(shù)據(jù)庫SQLServer2000簡介簡介數(shù)據(jù)庫SQLServer2000是創(chuàng)建面向大型聯(lián)機(jī)事務(wù)處理,數(shù)據(jù)倉庫和電子商務(wù)的一個(gè)新型平臺。SQLServer2000支持完全集成的XML環(huán)境、分析服務(wù)中的新的數(shù)據(jù)開采特性,以及元數(shù)據(jù)服務(wù)器中增強(qiáng)的知識庫技術(shù)。SQLServer2000的數(shù)據(jù)庫能夠被分散在一組獨(dú)立的數(shù)據(jù)庫服務(wù)器上,以支持大規(guī)模web站點(diǎn)的訪問需求和企業(yè)級的數(shù)據(jù)處理系統(tǒng)。8.3數(shù)據(jù)庫Access簡介數(shù)據(jù)庫Access是一個(gè)桌面關(guān)系型數(shù)據(jù)庫管理系統(tǒng)和應(yīng)用程序生成器。Access具有很強(qiáng)的數(shù)據(jù)處理功能,人們可以利用它來解決大量數(shù)據(jù)的管理功能。Access數(shù)據(jù)庫是由二維表組成。它使用標(biāo)準(zhǔn)的SQL作為它的數(shù)據(jù)庫訪問語言。作為網(wǎng)站后臺數(shù)據(jù)庫的選擇之一,Access具有簡單易用,快捷方便的特點(diǎn)。本書主要以Access作為數(shù)據(jù)庫平臺。8.3.1建立數(shù)據(jù)庫8.3.2建立查詢

8.3.1建立數(shù)據(jù)庫可以通過Access管理界面方便地創(chuàng)建Access數(shù)據(jù)庫和數(shù)據(jù)庫表,主要步驟如下:⑴啟動(dòng)Access程序,首次出現(xiàn)新建和打開數(shù)據(jù)庫窗口,如圖8-1所示的【新建數(shù)據(jù)庫】對話框;8.3.1建立數(shù)據(jù)庫⑵在當(dāng)前對話框中選擇“空Access數(shù)據(jù)庫”單選按鈕,并單擊【確定】按鈕,彈出如圖8-2所示的【文件新建數(shù)據(jù)庫】對話框,在當(dāng)前窗口選擇一個(gè)存儲位置,并為數(shù)據(jù)庫文件命名jxgl,最后單擊【創(chuàng)建】按鈕,彈出數(shù)據(jù)庫設(shè)計(jì)器,如圖8-3所示的【jxgl:數(shù)據(jù)庫】對話框①;8.3.1建立數(shù)據(jù)庫

⑶在當(dāng)前對話框中雙擊“設(shè)計(jì)器創(chuàng)建表”,彈出表設(shè)計(jì)器如圖8-4所示的【表1:表】對話框,設(shè)置相關(guān)字段名和數(shù)據(jù)類型等,單擊菜單【文件→保存】命令,彈出如圖8-5所示的【另存為】對話框,輸入表名稱“xsxx”,再單擊【確定】按鈕;返回表設(shè)計(jì)器;即如圖8-4所示的【表1:表】對話框。

8.3.1建立數(shù)據(jù)庫⑷單擊當(dāng)前窗口中的右上角的關(guān)閉按鈕,回到主界面如圖8-6所示的【jxgl:數(shù)據(jù)庫】對話框②;在當(dāng)前對話框中雙擊xsxx,打開記錄輸入如圖8-7所示的【xsxx表】輸入記錄對話框,輸入數(shù)據(jù)。

8.3.1建立數(shù)據(jù)庫8.3.1建立數(shù)據(jù)庫根據(jù)上述步驟依次建立課程表kc和選課表xx,如圖8-8和圖8-9所示。

8.3.2建立查詢集合首先,回到數(shù)據(jù)庫的主窗口,在左邊對象列表中選擇“查詢”,如圖8-10所示的【jxgl:數(shù)據(jù)庫】對話框③,在右邊雙擊“在設(shè)計(jì)視圖中創(chuàng)建查詢”,彈出查詢設(shè)計(jì)器窗口,如圖8-11所示;8.3.2建立查詢集合其次選擇對象表,如選擇表xsxx,單擊【添加】按鈕,將表xsxx加入查詢設(shè)計(jì)器窗口,然后單擊【關(guān)閉】按鈕,如圖8-12所示,在本窗口中,可以進(jìn)行可視化查詢設(shè)計(jì),從中選擇查詢的字段,如字段“籍貫”字段,雙擊即可。8.3.2建立查詢集合最后單擊【查詢】→【運(yùn)行】,則查詢結(jié)果以表格形式出現(xiàn),如圖8-13所示。以上操作也可以通過SQL語句完成。在查詢設(shè)計(jì)器窗口中單擊【關(guān)閉】按鈕,然后單擊右鍵,選擇“SQL視圖”,彈出如圖8-14所示的【查詢2:選擇查詢】對話框,輸入查詢語句select籍貫fromxsxx也可。8.4SQL語言簡介

SQL(StructureQueryLanguage,結(jié)構(gòu)化查詢語言)是一種被關(guān)系型數(shù)據(jù)庫產(chǎn)品廣泛使用的標(biāo)準(zhǔn)結(jié)構(gòu)化查詢語言。主要用于對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行組織、管理和檢索。各種關(guān)系型數(shù)據(jù)庫都支持SQL指令。SQL語句是一種類似于英語的語句,很容易理解,大多數(shù)語句都直述其意,讀起來像自然語言一樣明了。SQL語言是非過程化的語言(第四代語言),不像C、Cobol、Fortran等那樣是完整的計(jì)算機(jī)語言,確切地說,SQL是一種數(shù)據(jù)庫子語言,SQL可以被嵌入到另一種語言中,從而使其具有數(shù)據(jù)庫功能。學(xué)好SQL語言對ASP編程是非常重要的。

8.4SQL語言簡介結(jié)合SQL語句分為4類:DDL數(shù)據(jù)定義語言:用于定義、修改或者刪除數(shù)據(jù)庫對象,如create、drop、alter;DQL數(shù)據(jù)查詢語言:用于對數(shù)據(jù)進(jìn)行查詢,如select;DML數(shù)據(jù)操縱語言:用于訪問、建立或者操縱在數(shù)據(jù)庫中已經(jīng)存在數(shù)據(jù),如insert、update、delete;DCL數(shù)據(jù)控制語言:管理對數(shù)據(jù)庫對象的訪問權(quán)限和回收,如表grant、revoke。8.4.1基本SQL語句

8.4.2Select語句

8.4.3insert語句

8.4.4delete語句

8.4.5update語句

8.4.1基本SQL語句

基本SQL語句包括DQL和DML。也就是最常用的四大基本操作:查詢(select)、插入(insert)、刪除(delete)、更新(update)。

8.4.2Select語句select語句是SQL中功能最強(qiáng)大也是最復(fù)雜的語句,它負(fù)責(zé)從數(shù)據(jù)庫中檢索數(shù)據(jù)。它的基本形式由Select–From-Where查詢塊組成,多個(gè)查詢塊可以被嵌套執(zhí)行,select-SQL的語法基本結(jié)構(gòu)如下:select[all|distinct|top<數(shù)值>[percent]][*|字段名列表][<聚合函數(shù)><*|字段名>]from<表或查詢視圖>[[left|right|inner|full]join<表或查詢>on<條件表達(dá)式>][where<條件表達(dá)式>][groupby<分組字段名>[having<條件表達(dá)式>]][orderby<排序字段名>[asc|desc]]

8.4.2Select語句功能:完成各種查詢?nèi)蝿?wù)。說明:⑴

select:查詢的命令;⑵

all|distinct|top<數(shù)值>[percent]:all表示輸出所有滿足條件的記錄;distinct表示去掉重復(fù)的記錄,只輸出第一次出現(xiàn)的記錄,即重復(fù)的記錄不重復(fù)輸出;top<數(shù)值>[percent]表示在滿足條件的記錄中選擇前若干條記錄輸出,其中percent表示所占百分比;⑶*|字段名列表:查詢輸出的字段內(nèi)容,“*”表示所有字段;⑷<聚合函數(shù)><*|字段名>:用于統(tǒng)計(jì)和計(jì)算;⑸

from<表或查詢視圖>:查詢的數(shù)據(jù)來源哪些表和查詢視圖8.4.2Select語句集合⑹[left|right|inner|full]join<表或查詢>on<條件表達(dá)式>:進(jìn)行多表查詢的聯(lián)接方式及聯(lián)接條件;⑺

where<條件表達(dá)式>:設(shè)置查詢的條件,過濾不需要的記錄行。where子句包以下幾類條件運(yùn)算符號:①比較運(yùn)算符:>、>=、=、<、<=、<>;②范圍運(yùn)算符:[not]in、[not]between…and、is[not]null;③邏輯運(yùn)算符:not、and、or;④模式匹配運(yùn)算符:[not]like,模式匹配運(yùn)算符可以使用一些通配符,不同數(shù)據(jù)庫的通配符可能不一樣,如SQLServer中,使用“%”匹配任意長度的字符串,使用“_”匹配一個(gè)未知的字符。在Access中,常用的通配符及其意義如表8-1所示:8.4.2Select語句集合通配符說明示例*匹配任意長度的字符串wh*可以找到what,white,why等,ASP語句恢復(fù)使用“%”?匹配1個(gè)長度的字符串b?ll可以找到ball,bill等,ASP語句恢復(fù)使用“_”[]匹配[]指定字符中的一個(gè)b[ae]ll可以找到ball,bell但找不到bill[!]匹配不在[]之內(nèi)的字符b[!ae]ll能找到bill和bull,但不找ball和bell[-]匹配某個(gè)范圍內(nèi)一個(gè)字符b[a-c]d可以找到bad,bbd和bcd#匹配任意單個(gè)數(shù)字字符1#3可以找到103,113,123表8-1子字段取值及其含義8.4.2Select語句集合⑻[groupby<分組字段名>[having<條件表達(dá)式>]]:groupby用于對查詢結(jié)果進(jìn)行分組,進(jìn)行分類匯總,不可以在子查詢中使用該子句;having必須跟在groupby后面,用于限定分組的條件;⑼orderby<排序字段名>[asc|desc]:對查詢結(jié)果輸出進(jìn)行排序,不可以在子查詢中使用該子句,asc|desc表示升降序,缺省時(shí)為升序。

8.4.2.1簡單查詢簡介簡單查詢是由select…from和where短語構(gòu)成的基本語句。⑴從xsxx表中檢索所有籍貫;select籍貫fromxsxx⑵從xsxx檢索所有不同籍貫;selectdistinct籍貫fromxsxx⑶檢索表中所有記錄;select*fromkc⑷檢索入學(xué)成績高于600分的記錄;select*fromxsxxwhere入學(xué)成績>600⑸檢索哪些籍貫的學(xué)生有男生;selectdistinct籍貫fromxsxxwhere性別="男"⑹檢索工商管理或信息管理專業(yè)學(xué)習(xí),并且入學(xué)成績低于600分的學(xué)生學(xué)號;select學(xué)號fromxsxxwhere入學(xué)成績<600and(專業(yè)="信息管理"or專業(yè)="工商管理")8.4.2.2簡單的聯(lián)接查詢簡介簡單的聯(lián)接查詢是指基于多個(gè)表的基本語句。⑴找出入學(xué)成績高于600分和他們的所選修的課程號;selectxsxx.學(xué)號,課程代號fromxsxx,xxwhere入學(xué)成績>600andxsxx.學(xué)號=xx.學(xué)號;⑵找出男生所選修的課程代號及其姓名;select姓名,性別,課程代號fromxsxx,xxwhere性別="男"andxsxx.學(xué)號=xx.學(xué)號;

8.4.2.3嵌套查詢

嵌套查詢是基于多個(gè)表的查詢,與聯(lián)接查詢的區(qū)別,查詢的結(jié)果來自一個(gè)表,而查詢的條件卻涉及多個(gè)表。⑴找出選修課的成績?yōu)?5分的學(xué)生;select姓名fromxsxxwhere學(xué)號in(select學(xué)號fromxxwhere成績=85);⑵查詢所有選修課的成績都高于80分的學(xué)生的信息;select*fromxsxxwhere學(xué)號notin(select學(xué)號fromxxwhere成績<=80)and學(xué)號in(select學(xué)號fromxx);注意:查詢所有選修課的成績都高于80分的學(xué)生信息,并且這些學(xué)生至少選了一門課,所以加上and學(xué)號in(select學(xué)號fromxx);⑶找出和王同學(xué)同年出生的所有學(xué)生,輸出他們的姓名,性別和出生日期;select姓名,性別,出生日期fromxsxxwhereyear(出生日期)=(selectyear(出生日期)fromxsxxwhere姓名="王同學(xué)");8.4.2.4特殊的運(yùn)算符號

[not]in:[不]在……之中[not]between…and:[不]在……之間[not]like:[不]與……匹配is[not]null:是[否]空值⑴檢索入學(xué)成績在550分到590分之間的學(xué)生信息;select*fromxsxxwhere入學(xué)成績between550and590;⑵找出籍貫不在湖北的全部學(xué)生的學(xué)號、姓名和籍貫信息;select學(xué)號,姓名,籍貫fromxsxxwherenot籍貫="湖北";⑶找出選修課成績不在80分到90分之間的全部選修信息;select*fromxxwhere成績notbetween80and90;⑷找出“學(xué)生”表里專業(yè)中含有“管”字的學(xué)生信息;select*fromxsxxwhere專業(yè)like"*管*";⑸找出尚未確定選課老師的課程情況;select*fromkcwhere教師isnull;8.4.2.5查詢結(jié)果排序

格式:[orderby<排序選項(xiàng)1>[asc|desc]]功能:將結(jié)果排序。⑴按入學(xué)成績的升序檢索男生的學(xué)號、姓名、性別和入學(xué)成績信息;select學(xué)號,姓名,性別,入學(xué)成績fromxsxxwhere性別="男"orderby入學(xué)成績;⑵先按學(xué)生的性別排序,再按出生年月排序,并輸出全部學(xué)生信息;select*fromxsxxorderby性別,出生日期;8.4.2.6聚合函數(shù)查詢方法集合函數(shù)在信息管理系統(tǒng)中經(jīng)常使用,功能是進(jìn)行一些基本的統(tǒng)計(jì)和計(jì)算,聚合函數(shù)有5個(gè),這些函數(shù)如表8-2所示。

名稱說明sum(<字段名>)計(jì)算出某個(gè)字段的總和avg(<字段名>)計(jì)算出某個(gè)字段的平均值Count(<*|字段名>)計(jì)算出返回記錄的行數(shù)max(<字段名>)計(jì)算出某個(gè)字段的最大值min(<字段名>)計(jì)算出某個(gè)字段的最小值表8-2SQL聚合函數(shù)8.4.2.6聚合函數(shù)查詢方法⑴求入學(xué)成績的總分?jǐn)?shù);selectsum(入學(xué)成績)fromxsxx;⑵求王同學(xué)和潘同學(xué)選修課程成績的總和;selectsum(成績)fromxxwhere學(xué)號in(select學(xué)號fromxsxxwhere姓名="王同學(xué)"or姓名="潘同學(xué)");⑶求選修課程代號為01的平均成績;selectavg(成績)fromxxwhere課程代號="01";⑷求選修了課程的教師人數(shù);selectcount(教師)fromkc;⑸求出入學(xué)成績最高的學(xué)生;selectmax(入學(xué)成績)as最高分fromxsxx;⑹求出選修課成績最小的學(xué)生;selectmin(成績)as最低分fromxx;8.4.2.7分組查詢

格式:[groupby<分組選項(xiàng)>[having<條件表達(dá)式>]]說明:指定輸出分組和分組的條件。⑴求每門選修課程課的平均成績;select課程代號,avg(成績)fromxxgroupby課程代號;⑵求至少有3個(gè)學(xué)生選修的課程的平均成績;select課程代號,count(*),avg(成績)fromxxgroupby課程代號

havingcount(*)>=3;8.4.2.8超聯(lián)接查詢

格式:select…from<表1>inner|left|right|full|join<表2>on<連接條件>where……功能:根據(jù)聯(lián)接條件對<表1>和<表2>進(jìn)行內(nèi)部聯(lián)接,或左聯(lián)接,或右聯(lián)接,完全聯(lián)接。說明:⑴innerjoin:內(nèi)部聯(lián)接,只有滿足條件的記錄才出現(xiàn)在查詢結(jié)果中;例:查詢學(xué)生姓名的同時(shí)查詢對應(yīng)的選修成績。selectxsxx.姓名,xx.成績

fromxsxxinnerjoinxxonxsxx.學(xué)號=xx.學(xué)號;⑵leftjoin:左聯(lián)接,以<表1>為依據(jù),顯示<表2>與之關(guān)聯(lián)的數(shù)據(jù)記錄;⑶rightjoin:右聯(lián)接,以<表2>為依據(jù),顯示<表1>與之關(guān)聯(lián)的數(shù)據(jù)記錄;⑷fulljoin:完全聯(lián)接,先以<表1>為依據(jù),顯示<表2>與之關(guān)聯(lián)的數(shù)據(jù)記錄,再以<表2>為依據(jù),顯示<表1>與之關(guān)聯(lián)的數(shù)據(jù)記錄,去掉重復(fù)出現(xiàn)的記錄行。8.4.3insert語句

ASP網(wǎng)頁向數(shù)據(jù)庫添加記錄的方法主要分為兩種:一種使用recordset對象的(記錄對象)的addnew方法;另一種是直接執(zhí)行SQL插入語句insert命令。insert語句可給數(shù)據(jù)庫中的某一個(gè)表添加一條或多條新記錄。單記錄格式:insertinto<表名>[<字段名列表>]values<表達(dá)式清單>多記錄格式:insertinto<表名>[<字段名列表>]select[<源字段名列表>]from<源表名>⑴往選修表里摻入記錄("02301","05",90);insertintoxx(學(xué)號,課程代號,成績)values("02501","05",90)⑵選修課“離散數(shù)學(xué)”老師尚未確定,往“課程”表追加記錄("11","離散數(shù)學(xué)",null);insertintokc(課程代號,課程名稱,教師)values("11","離散數(shù)學(xué)",null)8.4.4delete語句

格式:deletefrom<表名>where<條件表達(dá)式>功能:可刪除表或視圖中的一條或多條記錄。

溫馨提示

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

最新文檔

評論

0/150

提交評論