基于我現(xiàn)在的水平,學(xué)習(xí)數(shù)據(jù)庫(kù)系統(tǒng)從三個(gè)方面入手:
1、學(xué)習(xí)表的設(shè)計(jì)規(guī)范和表間關(guān)系的設(shè)計(jì)
2、sql語(yǔ)言的深入學(xué)習(xí),包括視圖、存儲(chǔ)過(guò)程的學(xué)習(xí)
3、數(shù)據(jù)庫(kù)系統(tǒng)本身的操作
下面正式開(kāi)始:
眾所周知,數(shù)據(jù)庫(kù)系統(tǒng)當(dāng)前的主流模型是關(guān)系型和面向?qū)ο竽P停瑢哟涡秃途W(wǎng)狀模型都處于逐步淘汰的地位,關(guān)系型數(shù)據(jù)庫(kù)的基本構(gòu)成是一個(gè)個(gè)的二維表(table),二維表中包含“型(type)”和“值(value)”,“型”也就是我們通常意義上說(shuō)的列屬性,也叫字段,而“值”,就是我們的行(也叫記錄)的內(nèi)容了。表和表之間的相關(guān)性,就是我們通常所說(shuō)的“關(guān)系”。
數(shù)據(jù)庫(kù)系統(tǒng)在體系結(jié)構(gòu)上采用三級(jí)模式結(jié)構(gòu)(外模式schema、模式external schema和內(nèi)模式internal schema)
外模式是數(shù)據(jù)庫(kù)用戶的數(shù)據(jù)視圖,它是用戶看到的數(shù)據(jù)形式,可以理解為sql語(yǔ)言執(zhí)行的結(jié)果,也就是從各數(shù)據(jù)表中提取出我們想要的數(shù)據(jù)。
模式是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,可以理解為各個(gè)表的設(shè)計(jì)以及表之間關(guān)系設(shè)計(jì),它與應(yīng)用程序設(shè)計(jì)需求直接關(guān)聯(lián),它是數(shù)據(jù)存儲(chǔ)的架構(gòu),設(shè)計(jì)的好壞直接影響到應(yīng)用程序的執(zhí)行效率。
內(nèi)模式是數(shù)據(jù)在數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部的存儲(chǔ)方式,比如我們的數(shù)據(jù)到底是用順序存儲(chǔ),還是鏈表存儲(chǔ),按b樹(shù)結(jié)構(gòu)存儲(chǔ)還是按hash方法存儲(chǔ),存儲(chǔ)是否加密等等,這個(gè)模式我們不用理會(huì),它是數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)師要關(guān)心的內(nèi)容。
所以,我們要關(guān)心的是模式和外模式,對(duì)應(yīng)于我上面所說(shuō)的第1點(diǎn)和第2點(diǎn)。
關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)是支持關(guān)系數(shù)據(jù)模型的數(shù)據(jù)庫(kù)系統(tǒng),關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束三部分組成。關(guān)系數(shù)據(jù)結(jié)構(gòu)就是一張張的二維表,關(guān)系操作通常包括:
選擇(select)、投影(project)、連接(join)、除(divide)、并(union)、交(intersection)、差(difference)
增加(insert)、刪除(delete)、修改(update)
關(guān)系的三個(gè)完整性約束包括:實(shí)體完整性、參照完整性和用戶定義的完整性。
接下來(lái)是sql查詢語(yǔ)言了,sql語(yǔ)言把復(fù)雜的數(shù)據(jù)操作過(guò)程全部都隱藏起來(lái)了,我們只需要關(guān)心做什么,設(shè)計(jì)相應(yīng)的sql語(yǔ)句,怎么做就由系統(tǒng)給我們做得好好的。
sql語(yǔ)言分為四類:數(shù)據(jù)查詢、數(shù)據(jù)操縱、數(shù)據(jù)定義、數(shù)據(jù)控制,其中數(shù)據(jù)查詢就是我們最熟悉的select了,它的group by語(yǔ)句我最喜歡,一下子就將要的數(shù)據(jù)統(tǒng)計(jì)出來(lái)了。下面是一個(gè)select中嵌套select的例子:
select sname,sage from student where sage<(select min(sage) from student where sdep='計(jì)算機(jī)系') and sdept<>'計(jì)算機(jī)系'
本sql的功能是查詢:其它系中比計(jì)算機(jī)系中所有學(xué)生年齡都小的學(xué)生姓名和年齡
sql語(yǔ)言的學(xué)習(xí)和精通是我們學(xué)好數(shù)據(jù)庫(kù)的重點(diǎn)之一,它和數(shù)據(jù)表架構(gòu)的設(shè)計(jì)互相作用,有什么樣的數(shù)據(jù)表,才會(huì)有什么樣的sql語(yǔ)句,這兩者的學(xué)習(xí)是互相促進(jìn)的,最需要經(jīng)驗(yàn)積累?;谒膹?fù)雜性,這里不深入探索。
有了sql語(yǔ)言,不得不說(shuō)的是視圖,視圖其實(shí)和select語(yǔ)句是緊密關(guān)聯(lián)的,它其實(shí)相當(dāng)于一個(gè)虛表,執(zhí)行視圖以后看到的是對(duì)應(yīng)的后臺(tái)表的sql結(jié)果。
這里順便提一下,sql server2000中提供了完整的sql支持和視圖支持,執(zhí)行sql語(yǔ)句和視圖可以在企業(yè)管理器中操作,也可以在查詢分析器中操作,更可以在自己的程序中通過(guò)對(duì)應(yīng)的接口操作。
聯(lián)系客服