SQL第一章基本概念_第1頁
SQL第一章基本概念_第2頁
SQL第一章基本概念_第3頁
SQL第一章基本概念_第4頁
SQL第一章基本概念_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第一章 關(guān)系型數(shù)據(jù)庫基本概念和操作=1 數(shù)據(jù)庫簡史 數(shù)據(jù)庫是依照某種數(shù)據(jù)模型組織到一起,并存放在外存(主要指硬盤)中的數(shù)據(jù)集合。具有如下特點:(1)每個數(shù)據(jù)盡可能只有一個版本(無冗余),以便以最可靠和最優(yōu)方式為多種應(yīng)用服務(wù);(2)數(shù)據(jù)獨立于使用它的應(yīng)用程序,以便使不同的應(yīng)用程序用一致的方式對數(shù)據(jù)進行增、刪、改、查;(3)數(shù)據(jù)庫是由文件管理系統(tǒng)發(fā)展起來的,數(shù)據(jù)庫是特殊的文件,數(shù)據(jù)庫的數(shù)據(jù)是結(jié)構(gòu)化或半結(jié)構(gòu)化的,而文件的數(shù)據(jù)大多是非結(jié)構(gòu)化的,當(dāng)需要管理大量數(shù)據(jù)時,數(shù)據(jù)庫比文件具有更高的效率和準(zhǔn)確性。 數(shù)據(jù)庫大約出現(xiàn)于1960年代,當(dāng)時占主導(dǎo)地位的是網(wǎng)狀數(shù)據(jù)庫和層次數(shù)據(jù)庫。 網(wǎng)狀數(shù)據(jù)庫有點像社會的人際

2、關(guān)系,數(shù)據(jù)以自然的、隨意的方式組織成網(wǎng)狀,這種數(shù)據(jù)庫過于復(fù)雜,發(fā)展過程中遇到很多困難,后來逐漸被邊緣化了,我們很少能看到它的商業(yè)產(chǎn)品,但是網(wǎng)頁的超鏈接就是網(wǎng)狀數(shù)據(jù)結(jié)構(gòu),我們可以體會到,超鏈接使閱讀方便快捷,但要在大量網(wǎng)頁中準(zhǔn)確快速的查找和定位數(shù)據(jù)又很困難(比如搜索引擎提供的垃圾數(shù)據(jù)太多)。 層次數(shù)據(jù)庫將數(shù)據(jù)組織成樹形結(jié)構(gòu)。樹形結(jié)構(gòu)是計算機軟件中很重要的數(shù)據(jù)結(jié)構(gòu),樹形結(jié)構(gòu)的數(shù)據(jù)有明確的上下級和平級關(guān)系,但這種數(shù)據(jù)庫在理論和實踐上發(fā)展的不夠好,后來也逐漸被邊緣化了,但最近十幾年,XML數(shù)據(jù)技術(shù)和面向?qū)ο蠹夹g(shù)的流行使層次數(shù)據(jù)庫有再度走紅的跡象。 1970年代,IBM公司的一位研究員發(fā)表了一系列論文,

3、奠定了關(guān)系模型的理論基礎(chǔ),他后來也獲得了圖靈獎。關(guān)系模型用數(shù)學(xué)理論奠定了關(guān)系數(shù)據(jù)庫的理論基礎(chǔ),使關(guān)系數(shù)據(jù)庫的商業(yè)產(chǎn)品抽象級別比較高,而且簡單清晰,便于程序員理解和編程,到了1980年代便占據(jù)了市場的絕對主流,一直到現(xiàn)在也是如此。所以,大學(xué)本科階段的數(shù)據(jù)庫課程,講解的內(nèi)容幾乎都是這種易于理解和使用的關(guān)系型數(shù)據(jù)庫,雖然它本身有很多先天缺陷,不如網(wǎng)狀數(shù)據(jù)庫和層次數(shù)據(jù)庫那樣可以自然的方式表示和處理數(shù)據(jù),但簡單易用,受到了程序員等技術(shù)階層的擁戴。2 二維表格及其相互關(guān)系 什么是關(guān)系型數(shù)據(jù)庫?如果講純數(shù)學(xué)的關(guān)系理論,是很難懂的,在這一章里不講理論,以后章節(jié)也盡量少講。【重要說明:國內(nèi)外的數(shù)據(jù)庫教材,用很多

4、篇幅講關(guān)系理論。但這門課的教學(xué)內(nèi)容以技術(shù)和技能為主,學(xué)術(shù)為輔,因為工程類專業(yè)的本科培養(yǎng)目標(biāo)是為社會提供優(yōu)質(zhì)工程師而不是研究人員。實際工作中,很多程序員知道關(guān)系數(shù)據(jù)庫的基本概念,也能熟練的編寫數(shù)據(jù)庫應(yīng)用程序,但沒幾個人能說清楚關(guān)系理論,雖然他們在大學(xué)也學(xué)過。這說明,純數(shù)學(xué)的關(guān)系理論對多數(shù)人的實際工作不重要,因為他們在實際工作中使用的是簡單易用的SQL語言等東西,這些東西的基礎(chǔ)是關(guān)系理論,但關(guān)系理論被數(shù)據(jù)庫開發(fā)商深深的隱藏在底層,數(shù)據(jù)庫的應(yīng)用程序員或數(shù)據(jù)庫管理員看到的是關(guān)系理論經(jīng)過層層轉(zhuǎn)換后的結(jié)果,不需要知道這些理論也能比較好的使用數(shù)據(jù)庫,比如常用的SQL語言便是關(guān)系理倫的轉(zhuǎn)換,當(dāng)然知道一點理論更

5、好,有利于素質(zhì)培養(yǎng),后續(xù)章節(jié)也要適當(dāng)?shù)慕Y(jié)合實際說一點理論,但盡量少說。有個別同學(xué)將來考研可能是數(shù)據(jù)庫方向,你得自學(xué)一點關(guān)系理論,課件講的很不夠,但對其它同學(xué)來說,課程講的理論夠用了。有一點要知道,計算機軟件的理論基礎(chǔ)多是由“不懂”計算機的數(shù)學(xué)家奠定的,而“懂得”計算機的計算機研究人員,多是做基礎(chǔ)理論到應(yīng)用的層層轉(zhuǎn)換工作。比如關(guān)系型數(shù)據(jù)庫,從關(guān)系理論到實用的SQL語言,數(shù)據(jù)庫開發(fā)商要做若干層轉(zhuǎn)換才可以,這些轉(zhuǎn)換工作有很高的技術(shù)含量,但使用SQL語言的程序員和數(shù)據(jù)庫系統(tǒng)管理員不需要知道這些轉(zhuǎn)換細(xì)節(jié),他們要做的主要是怎樣利用數(shù)據(jù)庫去做應(yīng)用,為各行業(yè)的信息化提供應(yīng)用服務(wù)?!咳绻f大白話,關(guān)系數(shù)據(jù)庫是很

6、容易懂的,雖然不夠精確:關(guān)系數(shù)據(jù)庫的基本內(nèi)容是若干張二維表格,以及表格之間的關(guān)聯(lián)。下面建立幾張二維表格,并且建立表格之間的關(guān)系,從中說明關(guān)系數(shù)據(jù)庫的幾個基本概念。表1:學(xué)生表學(xué)號姓名出生日期性別籍貫院系10001張三1992.3.5男山東威海信工電子10006李四1992.6.30男河北滄州信工通訊11006王五1993.7.9男江蘇鎮(zhèn)江信工數(shù)媒我們很熟悉這種表格,表的第一行是“表頭”說明每一列“是什么:”,表的第2-4行是數(shù)據(jù),每一行數(shù)據(jù)是一條“記錄”。“表頭”有一行就夠了,而記錄可以有很多行。注意“學(xué)號”這一列,學(xué)號是不允許重復(fù)的,根據(jù)學(xué)號可以唯一確定一條記錄。 表2:教師表教師工號姓名性

7、別院系9001劉一一女信工電子9210趙二二男信工計算機注意“工號”這一列,工號是不允許重復(fù)的,根據(jù)工號可以唯一確定一條記錄。表3:課程表(本學(xué)期課程及任課教師)課程號課程名開課單位教師工號3001數(shù)據(jù)庫信工90013400JAVA語言信工9210注意“課程號”這一列,是不允許重復(fù)的,根據(jù)課程號可以唯一確定一條記錄。表3的“教師工號”列和表2的“教師工號”列是關(guān)聯(lián)的,其數(shù)據(jù)只能來自表2。 表4:選課表自然序號課程號學(xué)號13001100012300110006330011100643400100015340010006 表4的“課程號”列與表3“課程表”關(guān)聯(lián),其數(shù)據(jù)只能來自表3.表4的“學(xué)號”列

8、與表1“學(xué)生表”關(guān)聯(lián),其數(shù)據(jù)只能來自表1表4的“自然序號”作用是唯一的確定一條記錄,因為其它列都不能唯一確定一條記錄,所以加上了這一列。3 從二維表格到關(guān)系型數(shù)據(jù)庫 上述的4張表及其關(guān)聯(lián)關(guān)系。便構(gòu)成了一個關(guān)系型數(shù)據(jù)庫的模型,將其輸入到某種關(guān)系數(shù)據(jù)庫系統(tǒng)中,便是個關(guān)系型數(shù)據(jù)庫。 下面給出幾個關(guān)系型數(shù)據(jù)庫術(shù)語的定義,這些定義是工程級別的,不很嚴(yán)格,但是容易理解。1. 一個關(guān)系數(shù)據(jù)庫是由若干二維表和表之間的關(guān)聯(lián)組成,這個庫也叫一個“實例(instance)”。2 表的第一行是“表頭”,它并不是數(shù)據(jù),而是說明每一列的數(shù)據(jù)應(yīng)該“是什么”,以及取值范圍和其它約束條件,“表頭”的每個字段叫屬性(attrib

9、ute),屬性的取值范圍及其他約束條件叫域(field)。屬性是描述數(shù)據(jù)的數(shù)據(jù),叫元數(shù)據(jù)。下面對表1到表4的屬性加上約束條件,使屬性的描述更加嚴(yán)格。表5:學(xué)生表學(xué)號姓名出生日期性別籍貫院系整數(shù),不能為空字符串,最大長度10,可以重名日期類型字符串字符串,最大長度為20字符串,最大長度為1010001張三1992.3.5男山東威海信工電子10006李四1992.6.30男河北滄州信工通訊11006王五1993.7.9男江蘇鎮(zhèn)江信工數(shù)媒表6:教師表教師工號姓名性別院系整數(shù),不能為空字符串,最大長度10,可以重名字符串字符串,最大長度為109001劉一一女信工電子9210趙二二男信工計算機表7:課程

10、表(本學(xué)期課程及任課教師)課程號課程名開課單位教師工號整數(shù),不能為空字符串,最大長度10,可以重名字符串,最大長度為103001數(shù)據(jù)庫信工90013400JAVA語言信工9210 表8:選課表自然序號課程號學(xué)號整數(shù),不能為空13001100012300110006330011100643400100015340010006 3 每個表的各個屬性不能重名,不同表的屬性可以重名。一個表也可以叫一個關(guān)系,表中的數(shù)據(jù),有的是本表實體的數(shù)據(jù),有的是與其它表的聯(lián)系,比如“表8:選課表”,“課程號”和“學(xué)號”列是聯(lián)系。4 每張表從第二行往后是數(shù)據(jù)部分、每一行叫一條記錄,或一個元組。記錄中的每一列可以叫一個字

11、段。關(guān)系型數(shù)據(jù)庫的主要任務(wù)是,根據(jù)用戶輸入的條件,增加、刪除、修改、查詢相應(yīng)的記錄,這些工作多數(shù)是由一種可編程的數(shù)據(jù)庫語言-SQL語言去完成。SQL語言是比高級語言還高級的超級語言,比較容易學(xué),后面的課程主要講SQL語言。5 每張表至少應(yīng)該有一個,也可以有多個屬性,可以唯一的確定一條記錄,這種屬性叫候選鍵(candidate key),比如,表5:“學(xué)生表”的“學(xué)號”肯定是候選鍵,而“姓名”如果加上不允許重復(fù)的約束條件,也是候選鍵,否則不是。6 當(dāng)一個表中有多個候選鍵,可以從中任選一個作為主鍵(prime key) ,當(dāng)一個表只有一個候選鍵,它自然就是主鍵。主鍵可以是數(shù)值,可以是字符串或其它類

12、型,但無論如何主鍵的值不能為空,不同記錄的主鍵值也不能重復(fù)。7 外鍵(foreign key):在本表中是主鍵,而在其它表中可能不是主鍵,叫外鍵。比如,“表8:選課表”的“課程號”和“學(xué)號”在該表中都不是主鍵,是可以重復(fù)的。而在“表7:課程表”和“表5:學(xué)生表”中,卻是各自的主鍵。外鍵說明了一個表和另一個表的關(guān)聯(lián),是關(guān)系數(shù)據(jù)庫中重要的鍵。比如在查詢“表8:選課表”的記錄時,可以根據(jù)該表的“課程號”和“學(xué)號”關(guān)聯(lián)查詢其它表中的課程名和學(xué)生姓名,這種關(guān)聯(lián)查詢是關(guān)系型數(shù)據(jù)庫的重要特性。課后習(xí)題:=【注意:每一章后面的課后習(xí)題,是作業(yè),也是期末考試主要的題源,期末試卷中約50分的試題就從這些題目中選取

13、】1各用一句話說明以下概念 關(guān)系數(shù)據(jù)庫,實例,屬性,域,記錄(元組),候選鍵,主鍵,外鍵實驗1 使用MS SQL Server創(chuàng)建及管理關(guān)系數(shù)據(jù)庫【注意:每一章后面的實驗,是上機實驗內(nèi)容,也是期末考試題源,期末試卷中約20分的試題是實驗,主要是測試你是否做了上機實驗】 在目前的數(shù)據(jù)庫應(yīng)用中,關(guān)系型數(shù)據(jù)庫占了絕對優(yōu)勢。這門課程講解和實驗的主要內(nèi)容也是關(guān)系型數(shù)據(jù)庫的概念及其SQL語言。在關(guān)系型數(shù)據(jù)庫的商用產(chǎn)品中,主要有Oracle,IBM DB2,MS SQL Server,MySQL(免費)等幾個系列,每個系列又有不同版本,涵蓋了高端的企業(yè)級應(yīng)用到底端的部門級應(yīng)用,此外還有MS Access(含

14、在Office套件中)等桌面版關(guān)系型數(shù)據(jù)庫、智能手機嵌入式關(guān)系數(shù)據(jù)庫等等。他們遵循相同的概念和設(shè)計原理,也都支持SQL語言,但具體操作方式有很多不同。上機實驗只用其中一種:MS SQL Server。MS SQL Server主要有2005,2008,2012等“年份系列”版本,每個年份系列又大致可分為以下幾個版本:精簡版(express edition):免費的,可用于學(xué)習(xí)及小型應(yīng)用。標(biāo)準(zhǔn)版(standard edition):適合中小企業(yè)的收費版本。企業(yè)版(enterprise edition):適合企業(yè)級應(yīng)用,價格昂貴。此外,SQL Server還有網(wǎng)絡(luò)版,開發(fā)版,評估版等等。在課堂上演

15、示使用的是SQL Server2005精簡版(express edition)。對于本課程(數(shù)據(jù)庫入門課程來說,使用這個版本足夠了,而且不侵權(quán)。課堂演示使用的版本可能與實驗室安裝的SQL Server版本不同,但這無關(guān)緊要,只是在操作界面上有所差異而已。SQL Server2005精簡版可以從微軟網(wǎng)站免費下載,需要下載2個文件:1個是SQL Server數(shù)據(jù)庫,另一個是數(shù)據(jù)庫管理工具-前者安裝在服務(wù)器上,安裝完成后基本不用變動了;后者可以安裝在服務(wù)器或另一臺客戶機上,它的作用是管理服務(wù)器上的數(shù)據(jù)庫,是用戶經(jīng)常操作的。這2個文件已經(jīng)放在課程FTP上,同學(xué)們可以從FTP下載到自己的電腦上。這個版本

16、的功能足以滿足課程需要。下面演示SQL Server2005精簡版的安裝。1 首先安裝數(shù)據(jù)庫 (圖“實驗1-1)安裝到這一步時,最好如圖選擇“混合模式”(如果安裝時不選,安裝完后還能修改)。如上圖,用戶登錄SQL Server有兩種身份驗證模式:(1)windows 身份驗證:相對于混合模式更加安全,僅根據(jù)用戶的windows權(quán)限來進行身份驗證,稱為“信任連接”,但是在遠(yuǎn)程連接的時候會因驗證的緣故,無法登陸。(2)混合模式驗證:當(dāng)本地用戶登錄時采用windows身份驗證建立信任連接,當(dāng)遠(yuǎn)程用戶訪問時由于未通過windows身份認(rèn)證而進行sql server認(rèn)證(默認(rèn)使用用戶名sa登錄,sa是S

17、QL Server為數(shù)據(jù)庫管理員特設(shè)的用戶名,改用戶名不能修改),建立“非信任連接”,從而使得遠(yuǎn)程用戶也可以登錄。數(shù)據(jù)庫安裝完成后,按“開始所有程序”出現(xiàn)以下界面:(圖“實驗1-2)不用更改其中的設(shè)置,繼續(xù)安裝數(shù)據(jù)庫管理工具。2 然后安裝數(shù)據(jù)庫管理工具 該管理工具可以與數(shù)據(jù)庫安裝在同一臺機器(服務(wù)器)上,也可以安裝在另一臺機器(客戶機)上遠(yuǎn)程管理數(shù)據(jù)庫,在實際應(yīng)用中遠(yuǎn)程管理更常見,但在課堂上還是安裝在同一臺機器上吧。 安裝完成后,按“開始所有程序”出現(xiàn)以下界面:(圖“實驗1-3)進入管理工具(Management Studio),鏈接數(shù)據(jù)庫服務(wù)器,出現(xiàn)以下界面,以后的演示及實驗主要在這個界面下

18、進行了:(圖“實驗1-4)SQL Server允許建立多個數(shù)據(jù)庫,每個數(shù)據(jù)庫叫一個“實例”,有四個重要的系統(tǒng)級數(shù)據(jù)庫是安裝時自動創(chuàng)建好的:master,model,msdb,tempdb,我們原則上不要改動它們.(1)master:記錄SQL Server系統(tǒng)的所有系統(tǒng)級信息,包括實例范圍的元數(shù)據(jù),端點,鏈接服務(wù)器和系統(tǒng)配置設(shè)置,還記錄其他數(shù)據(jù)庫是否存在以及這些數(shù)據(jù)問文件的位置等等.如果master不可用,數(shù)據(jù)庫將不能啟動.(2)model:用在SQL Server 實例上創(chuàng)建的所有數(shù)據(jù)庫的模板。因為每次啟動 SQL Server 時都會創(chuàng)建 tempdb,所以 model 數(shù)據(jù)庫必須始終存在

19、于 SQL Server 系統(tǒng)中。(3)msdb:由SQL Server 代理用來計劃警報和作業(yè)。(4)tempdb:是連接到 SQL Server 實例的所有用戶都可用的全局資源,它保存所有臨時表,臨時工作表,臨時存儲過程,臨時存儲大的類型,中間結(jié)果集,表變量和游標(biāo)等。另外,它還用來滿足所有其他臨時存儲要求3 建立一個新的數(shù)據(jù)庫(或者說新建一個數(shù)據(jù)庫實例) 【注意:在課件中,我沒有將每個操作步驟說得很清楚,但將實驗要求說得很明確。這樣有利于同學(xué)們自我發(fā)揮和互相交流。在大學(xué)的學(xué)習(xí)生活中,同學(xué)的互相交流極為重要】 下面,將課件表5,6,7,8錄入到SQL Server2005精簡版(expres

20、s edition)系統(tǒng),將紙上設(shè)計的數(shù)據(jù)庫變成計算機上的數(shù)據(jù)庫。3.1 建立一個數(shù)據(jù)庫(實例)數(shù)據(jù)庫,數(shù)據(jù)庫名字為“實驗1” 進入(圖“實驗1-4)的界面,創(chuàng)建新數(shù)據(jù)庫“實驗1”。 3.2 分別創(chuàng)建4個表:學(xué)生表,教師表,課程表,選課表 的列(屬性)和約束條件(域),這一步是創(chuàng)建表的結(jié)構(gòu)(元數(shù)據(jù),俗稱表頭),先不要錄入數(shù)據(jù)。 右鍵 實驗1下面的 表-新建表,分別輸入表名、列(屬性)和類型。 下圖是 學(xué)生表 的創(chuàng)建截圖,其中表名在截圖的由側(cè)。其它幾個表的創(chuàng)建與之類似。全部4個表創(chuàng)建完后,可以看到以下界面圖:3.4 分別定義每個表的主鍵 右鍵 學(xué)生表設(shè)計,右鍵學(xué)號設(shè)置主鍵,學(xué)號左側(cè)出現(xiàn)鑰匙圖標(biāo),

21、這就是主鍵。其它幾個表的主鍵設(shè)置類似。3.5 分別定義 課程表、選課表 的外鍵這個實驗的操作稍微復(fù)雜一些。(1)課程表 只有一個外鍵“教師工號”,與教師表的主鍵“教師工號”關(guān)聯(lián)。可以這樣錄入關(guān)聯(lián): 右鍵 課程表設(shè)計;在設(shè)計窗口中右鍵 教師工號-關(guān)系,在下面的界面中錄入關(guān)聯(lián)關(guān)系:(2)選課表 有兩個外鍵: 外鍵“課程號”與課程表的主鍵“課程號”關(guān)聯(lián); 外鍵“學(xué)號”與學(xué)生表的主鍵“學(xué)號”關(guān)聯(lián)。右鍵 課程表設(shè)計;在設(shè)計窗口中右鍵 任一列-關(guān)系,在下面的界面中錄入兩個關(guān)聯(lián)關(guān)系:3.6 為每個表錄入幾行數(shù)據(jù) 右鍵表名打開表,便可以可以錄入數(shù)據(jù), 注意,課程表有一個外鍵、選課表有兩個外鍵,外鍵這一列的取值是有要求的:只能取外鍵在本表中的值,否則系統(tǒng)會有錯誤提示,比如:表7:課程表(本學(xué)期課程及任課教師)課程號課程名開課單位教師工號3001數(shù)據(jù)庫信工90013400JAVA語言信工9210“教師

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論