




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數據庫原理與應用(第3版)第1章 數據庫概述1.1 數據管理的發展 1.2 數據獨立性1.3 數據庫系統的組成1.4 數據庫應用結構 1.1 數據管理的發展 1.1.1 文件管理 1.1.2 數據庫管理1.1.1 文件管理應用程序1文件1應用程序2文件2應用程序n文件n文件系統文件管理系統示例應用程序A2應用程序A1學生基本信息管理學生選課管理學生信息文件F1課程信息文件F2學生選課信息文件F3文件管理系統的缺點 編寫應用程序不方便 數據冗余不可避免應用程序依賴性 不支持對文件的并發訪問 數據間聯系弱 難以按用戶視圖表示數據 無安全控制功能1.1.2 數據庫管理應用程序1應用程序2應用程序nD
2、BMS數據庫數據庫管理系統實現示例應用程序A1學生基本信息管理學生有關的數據庫應用程序A2學生選課管理數據庫管理系統數據庫管理系統的優點 相互關聯的數據的集合 較少的數據冗余 程序與數據相互對立保證數據的安全、可靠最大限度地保證數據的正確性數據可以并發使用并能保證一致性相互關聯的數據的集合數據庫中的數據不是孤立的,數據與數據之間是相互關聯的。也就是說,在數據庫中不僅要能夠表示數據本身,還要能夠表示數據與數據之間的聯系。學生課程學生與課程之間的聯系較少的數據冗余 數據庫中的數據被統一管理,合理組織,任何對數據的操作都由數據庫管理系統DBMS完成。DBMSDBMS數據具有較高的獨立性數據獨立性是指
3、數據的組織和存儲方法與應用程序互不依賴、彼此獨立的特性。保證數據的安全、可靠 數據庫技術要能夠保證數據庫中的數據是安全、可靠的。 有效地防止數據庫中的數據被非法使用或非法修改 數據遭到破壞時能立刻將數據完全恢復主動安全被動安全安全機制備份恢復最大限度地保證數據的正確性 保證數據正確的特性在數據庫中稱之為數據完整性。學生的年齡200歲數據可并發使用并能保證數據的一致性 在多個用戶同時使用數據庫時,能夠保證不產生沖突和矛盾,保證數據的一致性和正確性。并發操作示例10張票訂8張票:10-8=2訂4張票:10-6=4421010?1.2 數據獨立性數據獨立性包含兩個方面邏輯獨立性物理獨立性物理獨立性是
4、指當數據的存儲結構發生變化時,比如,從鏈表存儲改為哈希表存儲,不影響應用程序的特性;邏輯獨立性是指當表達現實世界的信息內容發生變化時,比如增加一些列、刪除無用列等,也不影響應用程序的特性。 1.3 數據庫系統的組成 應用程序1應用程序2應用程序n數據庫管理系統(DBMS)數據庫核心用戶類型系統管理員:負責數據庫的規劃、設計、協調、維護和管理等工作,主要是為了保證數據庫正確和高效的運行。應用程序開發人員:負責使用某個程序設計語言編寫數據庫應用程序,這些應用程序通過向數據庫管理系統發出SQL請求獲得對數據庫的訪問,并將數據庫管理系統返回的結果按照一定格式顯示給用戶。最終用戶:是數據庫應用程序的使用
5、者。1.4 數據庫應用結構數據庫應用結構是指數據庫運行的軟、硬件環境。通過這個環境,用戶可以訪問數據庫中的數據。四種最常見的應用結構:集中式結構文件服務器結構客戶/服務器結構互聯網應用結構 1.4.1 集中式應用結構 應用程序數據庫大型機按鍵信息終端字符終端1終端n終端2客戶端優點是可以實現集中管理,安全性好。缺點是費用昂貴,不能真正劃分應用程序的邏輯。 1.4.2 文件服務器結構 優點在于實現的費用比較低廉,而且配置非常靈活。缺點是,由于所有的應用處理都要在客戶端完成,因此客戶端的個人計算機必須要有足夠的能力。 應用程序數據庫網絡文件服務器文件文件請求工作站1工作站n工作站2客戶端應用程序應
6、用程序1.4.3 客戶/服務器結構 優點:應用程序或應用邏輯可以根據需要劃分在服務器和客戶工作站中,同時減少了網絡流量。 應用程序數據庫服務器數據請求結果工作站1工作站n工作站2客戶端應用程序應用程序1.4 互聯網應用結構 優點:最終用戶應用軟件的安裝和維護都非常簡單,客戶端不再需要安裝、配置應用軟件的工作。這些工作只需在Web服務器上完成,從而減少客戶端與服務器端軟件配置的不一致以及不同版本應用軟件所帶來的問題。 客戶端應用程序數據庫數據庫服務器頁面請求頁面個人機1個人機n個人機2數據請求結果Web服務器瀏覽器瀏覽器瀏覽器第2章 數據庫系統結構 2.1 數據和數據模型 2.2 概念層數據模型
7、 2.3 組織層數據模型 2.4 數據庫系統的結構2.1 數據和數據模型1.數據人們從實際中抽取的感興趣的事物特征。有一定的格式,如,性別是一個漢字的字符。格式的規定是數據的語法,而數據的含義是數據的語義。 數據是信息存在的一種形式,只有通過解釋或處理才能成為有用的信息。 通過解釋、推論、歸納、分析和綜合等方法,從數據所獲得的有意義的內容稱為信息。示例數據:(張三,9912101,男,1981,計算機系,應用軟件)解釋:張三是9912101班的男生,1981年出生,計算機系應用軟件專業。2022/7/11 18:4727數據信息解釋2.1.2 數據模型對于模型,人們并不陌生。建筑模型 飛機模型
8、計算機中的模型是對事物、對象、過程等客觀系統中感興趣的內容的模擬和抽象表達,是理解系統的思維工具數據模型(data model)也是一種模型,它是對現實世界數據特征的抽象。2022/7/11 18:4728數據模型(續)數據庫管理系統是基于某種數據模型對數據進行組織的,因此,了解數據模型的基本概念是學習數據庫知識的基礎。在數據庫領域中,數據模型用于表達現實世界中的對象,即將現實世界中雜亂的信息用一種規范的、形象化的方式表達出來。2022/7/11 18:4729數據模型(續)數據模型即要面向現實世界,又要面向機器世界,因此需滿足三個要求:能夠真實地模擬現實世界;容易被人們理解;能夠方便地在計算
9、機上實現。2022/7/11 18:47302. 數據模型模型是現實世界感興趣的內容的抽象特征的模擬和抽象。(是理解系統的思維工具)數據模型是用來抽象、表示和處理現實世界中的數據和信息的。(如:數據庫、文件)數據模型應滿足三個條件:能比較真實地模擬現實世界;容易被人們理解;便于在計算機上實現。數據模型(續)數據模型實際上是模型化數據和信息的工具。根據模型應用的不同目的,可以將模型分為兩大類:概念層數據模型(概念模型),從數據的語義視角來抽取模型,是按用戶的觀點來對數據和信息進行建模。組織層數據模型(組織模型)。從數據的組織層次來描述數據。2022/7/11 18:4732概念層數據模型從數據的
10、應用語義視角來抽取現實世界中有價值的數據并按用戶的觀點對數據進行建模。主要用在數據庫的設計階段,與具體的數據庫管理系統無關,與具體的實現方式無關。2022/7/11 18:4733組織層數據模型從數據的組織方式來描述數據。主要有:層次模型網狀模型關系模型對象-關系模型是從計算機系統的觀點對數據進行建模,與所使用的數據庫管理系統有關。2022/7/11 18:4734現實世界信息世界:概念模型機器世界:具體DBMS支持的數據模型轉換人的認識抽象現實世界客觀事物的抽象過程 數據的兩個特征靜態特性:包括數據的基本結構、數據間的聯系和數據中的約束。 動態特征:指定義在數據上的操作。比如對學生的基本信息
11、可以查詢、修改和增加新記錄等。 2.2 概念層數據模型1. 基本概念2. 實體-聯系模型2022/7/11 18:47371. 基本概念概念層數據模型是指抽象現實系統中有應用價值的元素及其關聯關系,反映現實系統中有應用價值的信息結構,并且不依賴于數據的組織層數據模型。用于對信息世界建模,是現實世界到信息世界的第一層抽象,是數據庫設計人員進行數據庫設計的工具,也是數據庫設計人員和業務領域的用戶之間進行交流的工具。2022/7/11 18:4738基本概念(續)概念層數據模型應該:具有較強的語義表達能力;能夠方便、直接地表達應用中的各種語義知識;簡單、清晰,易于被用戶理解。是面向用戶、面向現實世界
12、的數據模型,與具體的DBMS無關。常用概念模型:實體-聯系模型、語義對象模型2022/7/11 18:47392. 實體-聯系模型由P. P. S. Chen于1976年提出,即通常所說的E-R方法。這種方法由于簡單、實用,因此得到了廣泛的應用,也是目前描述信息結構最常用的方法。實體-聯系方法使用的工具稱為E-R圖。也把這種描述結果稱為E-R模型。2022/7/11 18:4740 2.2 概念層數據模型 概念層次模型實際上是現實世界到機器世界的一個中間層次。 概念層次模型:抽象現實系統中有應用價值的元素及其關聯,反映現實系統中有應用價值的信息結構,不依賴于數據的組織結構。 概念模型用于信息世
13、界的建模,是現實世界到信息世界的第一層抽象。是數據庫設計人員和用戶之間進行交流的工具 。是面向用戶、面向現實世界的數據模型,是與DBMS無關 。常用的概念模型:實體-聯系模型、語義對象模型 實體-聯系模型 實體 屬性 聯系 實體具有公共性質的可相互區分的現實世界對象的集合。可以是具體的事物,也可以是抽象的概念或聯系具體的事物:學生、課程、職工抽象的聯系:學生選課實體的表示方式在E-R圖中用矩形框表示實體,把實體名寫在框內,比如學生實體可以表示為:學生屬性實體所具有的特征或性質。身高年齡性別體重屬性的表示方式 用圓角矩形或橢圓框表示,框內寫上屬性名,并用連線連到相應實體。學生學號姓名性別2022
14、/7/11 18:4746聯系 聯系是數據之間的關聯集合,是客觀存在的應用語義鏈 。實體內部的聯系:一個實體內屬性之間的聯系。職工實體內部的職工號和職工的部門經理號實體之間的聯系:不同實體之間的聯系。課程實體和學生實體之間的選課聯系。聯系的表示方式 實體之間的聯系用菱形框表示,框內寫上聯系名,并用連線與有關的實體相連。 聯系名實體1實體2聯系的種類一對一聯系(1:1)一對多聯系(1:n)多對多聯系(m:n) 如果實體A中的每個實例在實體B中至多有一個(也可以沒有)實例與之關聯,反之亦然,則稱實體A與實體B具有一對一聯系, 記作:1 : 1。 一對一聯系(1:1)一對一聯系的例子部門和正經理(假
15、設一個部門只有一個正經理,一個人只當一個部門的經理)、系和正系主任(假設一個系只有一個正主任,一個人只當一個系的主任)都是一對一聯系。 管理經理部門11一對多的聯系 如果實體A與實體B之間存在聯系,并且對于實體A中的一個實例,實體B中有多個實例與之對應;而對實體B中的任意一個實例,在實體A中都只有一個實例與之對應,則稱實體A到實體B的聯系是一對多的。 記作: 1 : n 有部門和職工兩個實體,并且有語義:一個部門可以有多名職工,但是一個職工只在一個部門工作。則部門和職工之間的聯系是一對多的,我們把這種聯系命名為工作。一對多聯系的例子工作部門職工1n多對多的聯系 如果實體A與實體B之間存在聯系,
16、并且對于實體A中的一個實例,實體B中有多個實例與之對應;而對實體B中的一個實例,在實體A中也有多個實例與之對應,則稱實體A到實體B的聯系是多對多的。 記作:m : n 多對多聯系的例子 有學生和課程兩個實體,并且有語義:一個學生可以修多門課程,一門課程可以被多個學生修。那么學生和課程之間的聯系就是多對多的,我們把這種聯系命名為選課。學生課程選課mn關聯多個實體的聯系顧客購買商品:每個顧客可以從多個售貨員那里購買商品,并且可以購買多種商品;每個售貨員可以向多名顧客銷售商品,并且可以銷售多種商品;每種商品可由多個售貨員銷售,并且可以銷售給多名顧客。 mnp顧客商品售貨員銷售2.3 組織層數據模型2
17、.3.1 關系數據模型的數據結構2.3.2 關系數據模型的數據操作2.3.3 關系數據模型的數據完整性約束關系數據模型的數據結構把數據看成是二維表中的元素,而這個二維表就是關系 用關系(表格數據)表示實體和實體之間聯系的模型稱為關系數據模型示例:學生基本信息表一些基本術語關系(relation) :就是二維表,它滿足如下性質:關系表中的每一列都是不可再分的基本屬性。 表中各屬性不能重名。 表中的行、列次序并不重要。學號姓名年齡性別所在系出生日期年月日0611101李勇21男計算機系1987460611102劉晨20男計算機系198812150611103王敏20女計算機系19888210621
18、101張立20男信息管理系198863不是基本屬性不是關系一些基本術語(續)屬性(attribute) :二維表中的每個列稱為一個屬性(或叫字段)。 每個屬性有一個名字,稱為屬性名。二維表中對應某一列的值稱為屬性值;二維表中列的個數稱為關系的元數。如果一個二維表有n個列,則稱其為n元關系。一些基本術語(續)值域(domain)二維表中屬性的取值范圍稱為值域。如:“年齡”取值為0150的整數“性別” 的取值為“男”和“女”一些基本術語(續)元組(tuple):二維表中的一行數據稱為一個元組(記錄值)。(0611101,李勇,21,男,計算機系)(0611102,劉晨,20,男,計算機系)(061
19、1103,王敏,20,女,計算機系)(0621101,張立,20,男,信息管理系)(0621102,吳賓,19,女,信息管理系)元組一些基本術語(續)分量(component):元組中的每一個屬性值稱為元組的一個分量,n元關系的每個元組有n個分量。例如,元組(0611101,李勇,21,男,計算機系),有5個分量:0611101、李勇、21、男、計算機系一些基本術語(續)關系模式(relation schema):二維表的結構稱為關系模式,或者說,關系模式就是二維表的表框架或表頭結構。設有關系名為R,屬性分別為A1,A2,An,則關系模式可以表示為: R(A1,A2,An)如果將關系模式理解為
20、數據類型,則關系就是該數據類型的一個具體值。一些基本術語(續)關系數據庫(relation database):對應于一個關系模型的所有關系的集合稱為關系數據庫。候選碼(candidate key):如果一個屬性或屬性集的值能夠惟一標識一個關系的元組而又不包含多余的屬性,則稱該屬性或屬性集為候選碼。候選碼也稱為候選鍵或候選關鍵字。在一個關系上可以有多個候選碼。一些基本術語(續)主碼(primary key):當一個關系中有多個候選碼時,可以從中選擇一個作為主碼。每個關系只能有一個主碼。主碼也稱為主鍵或主關鍵字,用于惟一地確定一個元組。主碼可以由一個屬性組成,也可以由多個屬性共同組成。注意:不能
21、根據關系在某時刻所存儲的內容來決定其主碼。主碼示例學生關系模式:(學號,姓名,年齡,性別,所在系)選課關系模式:(學號,課程號,成績):一個學生對一門課程只能有一次考試;(學號,課程號,考試次數,成績):一個學生對一門課程可有多次考試。一些基本術語(續)主屬性(primary attribute)和非主屬性(nonprimary attribute)包含在任一候選碼中的屬性稱為主屬性。不包含在任一候選碼中的屬性稱為非主屬性。術語對比關系術語一般的表格術語關系名表名關系模式表頭(表所含列的描述)關系(一張)二維表元組記錄或行屬性列分量一條記錄中某個列的值關系模型的數據操作 關系模型的操作對象是集
22、合(也就是關系)非關系型數據庫系統中典型的操作是一次一行或一次一個記錄。集合處理能力是關系系統區別于其他系統的一個重要特征。關系數據模型的數據操作主要包括四種:查詢、插入、刪除和修改數據。 關系模型的數據完整性約束 數據的完整性是指保證數據正確性的特征。數據完整性是一種語義概念,包括兩方面:與現實世界中應用需求的數據的相容性和正確性;數據庫內數據之間的相容性和正確性。實體完整性 參照完整性用戶定義的完整性實體完整性實體完整性指的是關系數據庫中所有的表都必須有主碼。 而且表中不允許存在如下的記錄:無主碼值的記錄主碼值相同的記錄參照完整性參照完整性一般是指實體(表)之間的關聯關系。 在關系數據庫中
23、用外碼來實現參照完整性。外碼一般出現在聯系所對應的關系中,用于表示兩個或多個實體之間的關聯關系。外碼實際上是表中的一個(或多個)屬性,它引用某個其他表(特殊情況下,也可以是外碼所在的表)的主碼。 外碼引用例1學生專業屬于(學號, 姓名, 專業號, )(專業號,專業名)外碼引用例2學生課程修課(學號,姓名,)(課程號,課程名, )(學號, 課程號, 成績, )參照完整性規則參照完整性規則就是定義外碼與主碼之間的引用規則。對于外碼,一般應符合如下要求:或者值為空;或者等于其所應用的關系中的某個元組的主碼值。外碼說明:外碼不一定要與被引用列同名,只要它們的語義相同即可。外碼為空示例職工(職工號,職工
24、名,部門號,工資級別)部門(部門號,部門名)如果某新來職工還沒有被分配到具體的部門,則其“部門號”就為空值;如果職工已經被分配到了某個部門,則其部門號就有了確定的值(非空值)。用戶定義的完整性也稱為域完整性或語義完整性。按應用語義,屬性數據有:類型與長度限制:方便計算機操作;取值范圍限制:防止屬性值與應用語義矛盾。示例:成績:0 . 100 或 優、良、中、及格、不及格2.4 數據庫系統的結構 2.4.1 模式的基本概念 2.4.2 三級模式結構 2.4.3 數據庫的模式映像功能與數據獨立性 考察數據庫系統的結構可以有多種不同的層次或不同的角度。從數據庫管理角度看,數據庫系統通常采用三級模式結
25、構。這是數據庫系統的內部結構; 從數據庫最終用戶角度看,數據庫系統的結構分為集中式結構、文件服務器結構、客戶/服務器結構等。這是數據庫系統的外部結構。2.4.1 模式的基本概念模式是用給定的數據模型對具體數據的描述。模式是數據庫中全體數據的邏輯結構和特征的描述,它僅僅涉及型的描述,不涉及具體的值。關系模式是關系的“型”或元組的結構共性的描述。關系模式表頭 (關系模式)元組屬性1屬性2屬性n示例:學生關系模式:學生(學號,姓名,年齡,性別,所在系) 關系與實例模式的一個具體值稱為模式的一個實例,在關系數據庫中就是一個元組。關系實例2.4.2 三級模式結構關系數據庫中的模式是關系的。外模式也是關系
26、的或接近關系的,它們的內容來自模式 。內模式不是關系的,它是數據的物理存儲方式。外模式也稱為用戶模式、子模式。 用戶對現實系統中感興趣整體的局部數據結構的描述。 是DB整體數據結構的子集或局部重構。 是保證數據庫安全的一個措施。 模式 也稱為邏輯模式或概念模式,是數據庫中全體數據的邏輯結構和特征的描述,是所有用戶的公共數據描述。 是數據庫系統結構的中間層。既不涉及數據的物理存儲細節和硬件環境,也與具體的應用程序、所使用的應用開發工具和環境無關。 內模式也稱為存儲模式。是對整個數據庫的底層表示,它描述了數據的存儲結構,比如數據的組織與存儲方式,如是順序存儲、B樹存儲還是散列存儲、索引按什么方式組
27、織、是否加密等。與物理層不一樣,它不涉及物理記錄的形式,也不考慮具體設備的柱面或磁道大小。 數據庫的模式映像功能與數據獨立性 三級模式是對數據的三個抽象級別,它把數據的具體組織留給DBMS管理,使用戶能邏輯地、抽象地處理數據,而不必關心數據在計算機中的具體表示方式與存儲方式。為了能夠在內部實現這三個抽象層次的聯系和轉換,數據庫管理系統在三級模式之間提供了兩層映象:外模式/模式映象模式/內模式映象是數據庫管理系統的基本功能之一。維護DB數據與DB應用程序相互獨立,從而使DB應用程序不隨DB數據的邏輯或存儲結構的變動而變動。 模式間的映象外模式/模式映象 對于每個外模式,數據庫管理系統都有一個外模
28、式/模式映像,它定義了該外模式與模式之間的對應關系。當模式改變時,可用外模式/模式定義語句,調整外模式/模式映象定義,從而保持外模式不變。保證了數據與程序的邏輯獨立性。模式/內模式映象 模式/內模式映像定義了數據庫的邏輯結構與存儲結構之間的對應關系。當存儲結構改變時,只需要對模式/內模式映像做相應的修改,就可以保持模式不變,從而也不必改變應用程序。保證了數據與程序的物理獨立性。三個模式小結模式(即全局邏輯結構)是數據庫的中心與關鍵,它獨立于數據庫系統的其他層。設計數據庫系統時也是首先設計數據庫系統的邏輯模式。內模式依賴于數據庫的全局邏輯結構,但獨立于數據庫的用戶視圖,也就是外模式,也獨立于具體
29、的存儲設備。外模式面向具體的應用程序,它定義在邏輯模式之上,但獨立于存儲模式和存儲設備。 三個模式小結(續)應用程序一般是在外模式描述的結構上編寫的與數據庫系統的模式和存儲結構獨立。不同的應用程序可以共用同一個外模式。數據庫系統的兩級映像保證了數據庫外模式的穩定性,從而從底層保證了應用程序的穩定性。數據與程序之間的獨立性,使得數據的定義和描述可以從應用程序中分離出來。數據的存取由DBMS負責,因此,用戶不必考慮存取路徑等細節,從而簡化了應用程序的編制,減少了對應用程序的維護和修改工作。 數據庫原理與應用(第3版)第3章 SQL語言基礎及數據定義功能 3.1 SQL語言概述3.2 數據類型 3.
30、3 創建數據庫3.4 創建與維護關系表概述SQL(Structured Query Language)是用戶操作關系數據庫的通用語言。包含數據定義、數據查詢、數據操作和數據控制等與數據庫有關的全部功能。已成為關系數據庫的標準語言。所有的關系數據庫管理系統都支持SQL。 3.1 SQL語言概述 3.1.1 SQL語言的發展 3.1.2 SQL語言的特點3.1.3 SQL語言功能概述 3.1.1 SQL語言的發展1986年10月美國ANSI公布最早的SQL標準。 1989年4月,ISO提出了具備完整性特征的SQL,稱為SQL-89(SQL1)。1992年11月,ISO又公布了新的SQL標準,稱為S
31、QL-92(SQL2) (以上均為關系形式)。1999年頒布SQL-99(SQL3),是SQL92的擴展。3.1.2 SQL語言的特點1. 一體化2. 高度非過程化3. 簡潔4. 使用方式多樣3.1.3 SQL語言功能概述SQL功能命令動詞數據查詢SELECT數據定義CREATE、DROP、ALTER數據操縱INSERT、UPDATE、DELETE數據控制GRANT、REVOKE四部分:數據定義功能、數據控制功能、數據查詢功能和數據操縱功能。 3.2 數據類型數值類型 字符串類型日期時間類型貨幣類型精確數值類型精確數值類型說明存儲空間bigint存儲從263 (9,223,372,036,85
32、4,775,808)到263-1 (9,223,372,036,854,775,807) 范圍的整數8字節int存儲從231 (2,147,483,648 ) 到 231-1 ( 2,147,483,647 ) 范圍的整數。4字節smallint存儲從215 (32,768 ) 到 215-1 (32,767 ) 范圍的整數2字節tinyint存儲從 0 到 255 之間的整數。1字節bit存儲1或0。如果一個表中有不多于8個的bit列,則這些列公用一個字節存儲1字節numeric(p,s)或decimal(p,s)定點精度和小數位數。使用最大精度時,有效值從 1038 +1 到 1038 -
33、1。其中,s為精度,指定小數點左邊和右邊可以存儲的十進制數字的最大個數。精度必須是從1到最大精度之間的值。最大精度為38。s為小數位數,指定小數點右邊可以存儲的十進制數字的最大個數,0 = s = p。s的默認值為0最多17字節近似數值數類型近似數值類型說明存儲空間float(n)存儲從-1.79E + 308至-2.23E 308、0以及2.23E308至1.79E + 308范圍的浮點數。n有兩個值,如果指定的n在124之間,則使用24,占用4字節空間;如果指定的n在2553之間,則使用53,占用8字節空間。若省略(n),則默認為53 4字節或8字節real存儲從3.40E + 38到3.
34、40E + 38范圍的浮點型數4字節字符串類型普通編碼字符串類型統一字符編碼字符串類型二進制字符串類型普通編碼字符串類型普通編碼字符串類型說明存儲空間char(n)固定長度的普通編碼字符串類型,n表示字符串的最大長度,取值范圍為18000 n個字節。當實際字符串所需空間小于n時,系統自動在后邊補空格varchar(n)可變長度的字符串類型,n表示字符串的最大長度,取值范圍為18000字符數2字節額外開銷text最多可存儲231-1 (2,147,483,647) 個字符每個字符1個字節varchar(max)最多可存儲231-1個字符字符數2字節額外開銷說明:如果在使用char(n)或varc
35、har(n)類型時未指定n,則默認長度為1。如果在使用CAST和CONVERT函數時未指定n,則默認長度為30。統一字符編碼字符串類型統一編碼字符串類型說明存儲空間nchar(n)固定長度的統一編碼字符串類型,n表示字符串的最大長度,取值范圍為140002n字節。當實際字符串所需空間小于2n時,系統自動在后邊補空格nvarchar(n)可變長度的統一編碼字符串類型,n表示字符串的最大長度,取值范圍為140002*字符數2字節額外開銷ntext最多可存儲230-1 (1,073,741,823) 個統一字符編碼的字符每個字符2個字節nvarchar(max)最多可存儲230-1個統一字符編碼的字
36、符2*字符數2字節額外開銷二進制字符串類型二進制字符串類型說明存儲空間binary(n)固定長度的二進制數據,n的取值范圍為18000n字節varbinary(n)可變長度的二進制數據,n的取值范圍為18000。字符數2字節額外開銷image可變長度的二進制數據,最多為231-1 (2,147,483,647)個十六進制數字每個字符1個字節varbinary(max)可變長度的二進制數據,最多為231-1 (2,147,483,647)個十六進制數字字符數2字節額外開銷日期時間類型日期時間類型說明存儲空間date定義一個日期,范圍為 到 。字符長度10位,默認格式為:YYYY-MM-DD。YY
37、YY表示4位年份數字,范圍從0001到9999;MM表示2位月份數字,范圍從01到12;DD表示2位日的數字,范圍從 01 到 31(最大值取決于具體月份)3字節time(n)定義一天中的某個時間,該時間基于24小時制。默認格式為:hh:mm:ss.nnnnnnn,范圍為00:00:00.0000000到23:59:59.9999999。精確到100納秒。n為秒的小數位數,取值范圍是0到7的整數。默認秒的小數位數是7(100ns)35字節datetime定義一個采用24小時制并帶有秒的小數部分的日期和時間,范圍為到-,時間范圍是00:00:00到23:59:59.997。默認格式為:YYYY-
38、MM-DD hh:mm:ss.nnn,n為數字,表示秒的小數部分(精確到0.00333 秒)8字節日期時間類型(續)日期時間類型說明存儲空間smalldatetime定義一個采用24小時制并且秒始終為零(:00)的日期和時間,范圍為到。默認格式為:YYYY-MM-DD hh:mm:00。精確到1分鐘4字節datetime2定義一個結合了24小時制時間的日期。可將該類型看成是datetime類型的擴展,其數據范圍更大,默認的小數精度更高,并具有可選的用戶定義的精度。默認格式是:YYYY-MM-DD hh:mm:ss.nnnnnnn,n為數字,表示秒的小數位數(最多精確到100 納秒),默認精度是
39、7位小數。該類型的字符串長度最少19 位(YYYY-MM-DD hh:mm:ss),最多27位(YYYY-MM-DD hh:mm:ss.0000000)68字節datetimeoffset定義一個與采用 24 小時制并與可識別時區的一日內時間相組合的日期,該數據類型使用戶存儲的日期和時間(24小時制)是時區一致的。語法格式為:datetimeoffset (n),n為秒的精度,最大為7。默認格式為:YYYY-MM-DD hh:mm:ss.nnnnnnn +|-hh1:mm1,其中hh1的取值范圍為-14 到 +14,mm1的取值范圍為00 到 59。該類型的日期范圍為到,時間范圍為00:00:
40、00 到 23:59:59.9999999。時區偏移量范圍為-14:00 到+14:00。該類型的字符串長度為:最少26位(YYYY-MM-DD hh:mm:ss +|-hh:mm),最多34位 (YYYY-MM-DD hh:mm:ss.nnnnnnn +|-hh:mm)810字節貨幣類型貨幣類型說明存儲空間money存儲922,337,203,685,477.5808到922,337,203,685,477.5807范圍的數值,精確到小數點后4位8字節smallmoney存儲-214,748.3648 到214,748.3647范圍的數值,精確到小數點后4位4字節3.3 創建數據庫3.3.1
41、 SQL Server數據庫分類3.3.2 數據庫基本概念3.3.3 用圖形化方法創建數據庫3.3.4 用T-SQL語句創建數據庫3.3.1 SQL Server數據庫分類兩大類:系統數據庫:存放維護系統正常運行的信息。用戶數據庫:存放用戶自己的信息。系統數據庫Master:最重要數據庫,用于記錄所有系統級信息。Msdb:保存關于報警、作業、操作員等信息Model:包含所有用戶數據庫的共享信息。當用戶創建數據庫時,系統自動將model數據庫中的內容復制到新建數據庫中。Tempdb:臨時數據庫,用于存儲用戶創建的臨時表、用戶聲明的變量以及用戶定義的游標數據等。3.3.2 數據庫基本概念1SQL
42、Server數據庫的組成2關于數據的存儲分配3數據庫文件的屬性1SQL Server數據庫的組成SQL Server將數據庫映射為一組操作系統文件,這些文件被劃分為兩類:數據文件和日志文件。數據文件包含數據和對象,例如表、索引、存儲過程和視圖等。日志文件包含恢復數據庫中的所有事務需要的信息。數據和日志信息不混合在同一個文件中,一個文件只由一個數據庫使用。數據文件用于存放數據庫數據。數據文件又分為:主要數據文件:推薦擴展名是.mdf,包含數據庫的系統信息,也可存放用戶數據。每個數據庫都有且只能有一個主要數據文件。是為數據庫創建的第一個數據文件。不能小于3MB。次要數據文件:推薦擴展名是.ndf。
43、一個數據庫可以包含0n個次要數據文件。可與主要數據文件存放在不同地方。所有文件的使用對用戶也是透明的。日志文件推薦擴展名為.ldf。用于存放恢復數據庫的所有日志信息。每個數據庫有1n個日志文件。2關于數據的存儲分配數據庫中數據的存儲分配單位是數據頁。一頁是一塊8KB(其中用8060個字節存放數據,另外132個字節存放系統信息)的連續磁盤空間。頁是存儲數據的最小空間分配單位。不允許表中的一行數據存儲在不同頁上(varchar(max)、nvarchar(max)、text、ntext、varbinary(max)和image數據類型除外),即行不能跨頁存儲。示例假設某數據表有10000行數據,每
44、行3000字節,估算其需要的空間: (10000/2) * 8KB = 40MB其中,每頁中有6000字節用于存儲數據,有2060個字節是浪費的。3數據庫文件的屬性文件名及其位置:每個文件都有一個邏輯文件名和物理文件名及物理存儲位置。初始大小:指定每個文件的初始大小。增長方式:指定文件是否自動增長。最大大小:指定文件增長的最大空間限制。3.3.4 用T-SQL語句創建數據庫CREATE DATABASE database_name ON PRIMARY ,.n LOG ON ,.n := ( NAME = logical_file_name , FILENAME = os_file_name
45、| filestream_path , SIZE = size KB | MB | GB | TB , MAXSIZE =max_sizeKB|MB|GB|TB| UNLIMITED , FILEGROWTH =growth_incrementKB|MB|GB|TB|% ) ,.n 示例1例1創建一個名為“學生管理數據庫”的數據庫,其他選項均采用默認設置。CREATE DATABASE 學生管理數據庫示例2CREATE DATABASE RShDBON ( NAME = RShDB, FILENAME = D:RShDB_DataRShDB.mdf , SIZE = 10, MAXSIZE =
46、 30, FILEGROWTH = 5 )LOG ON( NAME = RShDB_log, FILENAME = D:RShDB_DataRShDB_log.ldf , SIZE = 3, MAXSIZE = 12, FILEGROWTH = 2 )示例3CREATE DATABASE studentsON PRIMARY ( NAME = students, FILENAME = F:Datastudents.mdf, SIZE = 3MB, MAXSIZE = UNLIMITED ), ( NAME = students_data1, FILENAME = D:Datastudents_
47、data1.ndf, SIZE = 5MB, MAXSIZE = 10MB, FILEGROWTH = 1MB )LOG ON ( NAME = students_log, FILENAME = F:Datastudents_log.ldf, SIZE = 2MB, MAXSIZE = 6MB, FILEGROWTH = 10% )3.4 創建與維護關系表3.4.1 用T-SQL語句實現3.4.2 用SSMS工具實現3.4.1 用T-SQL語句實現1 創建表2 定義完整性約束3 修改表結構4 刪除表1 創建表CREATE TABLE ( 列級完整性約束定義, 列級完整性約束定義 , 表級完整性
48、約束定義 ) 2 定義完整性約束NOT NULL:限制列取值非空。DEFAULT:給定列的默認值。UNIQUE:限制列取值不重。CHECK:限制列的取值范圍。PRIMARY KEY:定義主碼。FOREIGN KEY:定義外碼。說明:NOT NULL和DEFAULT只能定義在列級完整性約束處多列的CHECK約束只能定義在表級完整性約束處主碼約束語法格式: PRIMARY KEY ( , n )如果是在列級完整性約束處定義單列的主碼,可省略方括號部分。外碼約束語法格式為:FOREIGN KEY () REFERENCES ()如果是在列級完整性約束處定義單列的外碼,可省略方括號部分。UNIQUE約
49、束用于限制在一個列中不能有重復的值。語法格式為: 數據類型 UNIQUE ( , n )如果是在列級完整性約束處定義單列的UNIQUE約束,則可以省略括號部分。DEFAULT約束用于提供列的默認值。一個列只能有一個默認值約束,而且一個默認值約束只能用在一個列上。只能定義在列級完整性約束處。語法格式: DEFAULT 默認值CHECK約束用于限制列的輸入值在指定的范圍內。語法格式: CHECK (邏輯表達式)說明:邏輯表達式中不能包含來自多個表的列。Student表結構列名含義數據類型約束Sno學號CHAR(7)主碼Sname姓名NCHAR(5)非空SID身份證號CHAR(18)取值不重Ssex
50、性別NCHAR(1)默認值為“男”Sage年齡TINYINT取值范圍為1545Sdept所在系NVARCHAR(20)定義Student表CREATE TABLE Student ( Sno CHAR(7) PRIMARY KEY, Sname NCHAR(5) NOT NULL, SID CHAR(18) UNIQUE, Ssex NCHAR(1) DEFAULT 男, Sage TINYINT CHECK(Sage=15 AND Sage0), Semester TINYINT)SC表結構列名含義數據類型約束Sno學號CHAR(7)主碼列,引用Student的外碼Cno課程名CHAR(6)
51、主碼列,引用Course的外碼Grade成績TINYINT定義SC表CREATE TABLE SC ( Sno CHAR(7) NOT NULL, Cno CHAR(6) NOT NULL, Grade TINYINT, PRIMARY KEY (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno) 3 修改表結構在定義基本表之后,如果需求有變化,比如添加列、刪除列或修改列定義,可以使用ALTER TABLE語句實現。ALTER TABLE語句可以對表添加列、
52、刪除列、修改列的定義,也可以添加和刪除約束。ALTER TABLE語句語法ALTER TABLE ALTER COLUMN | ADD | DROP COLUMN | ADD 約束定義| DROP 示例例2為SC表添加“修課類別”列,此列的定義為:Type NCHAR(1),允許空。 ALTER TABLE SC ADD Type NCHAR(1) NULL例3將新添加的Type列的數據類型改為NCHAR(2)。 ALTER TABLE SC ALTER COLUMN Type NCHAR(2)示例例4為Type列添加限定取值范圍為必修、選修的約束。 ALTER TABLE SC ADD CH
53、ECK(Type IN (必修, 選修) )例5刪除SC表的“Type”列。 ALTER TABLE SC DROP COLUMN Type4 刪除表當不再需要某個表時,可以將其刪除。刪除表的語句格式為:DROP TABLE , 例:刪除test表:DROP TABLE test數據庫原理與應用(第2版)第4章 數據操作語句4.1 數據查詢功能4.2 數據更改功能4.1 數據查詢功能 4.1.1 查詢語句的基本結構4.1.2 簡單查詢4.1.3 多表連接查詢4.1.4 CASE函數4.1.5 子查詢 4.1.1 查詢語句基本格式SELECT -需要哪些列 FROM -來自于哪些表 WHERE
54、-根據什么條件 GROUP BY HAVING ORDER BY 4.1.2 簡單查詢1 選擇表中若干列2 選擇表中的若干元組3 對查詢結果進行排序4 使用聚合函數匯總數據5 對查詢結果進行分組計算 1. 選擇表中若干列查詢表中用戶感興趣的部分屬性列。例1:查詢全體學生的學號與姓名。SELECT Sno,Sname FROM Student例2:查詢全體學生的姓名、學號和所在系。SELECT Sname,Sno,Sdept FROM Student 查詢全部列 例3查詢全體學生的記錄 SELECT Sno,Sname,Ssex, Sage, Sdept FROM Student等價于: SEL
55、ECT * FROM Student 查詢經過計算的列 例4查詢全體學生的姓名及其出生年份。 SELECT Sname, 2011 - Sage FROM Student例5含字符串常量的列:查詢全體學生的姓名和出生年份,并在出生年份列前加一列,此列的每行數據均為“出生年份”常量值。 SELECT Sname, 出生年份, 2011 - Sage FROM Student改變列標題 語法:列名 | 表達式 AS 列標題或:列標題 列名 | 表達式例: SELECT Sname 姓名, 2011 - Sage 年份 FROM Student2 選擇表中的若干元組消除取值相同的行查詢滿足條件的元組
56、消除取值相同的記錄例6在修課表中查詢有哪些學生修了課程,要求列出學生的學號。 SELECT Sno FROM SC結果中有重復的行。用DISTINCT關鍵字可以去掉結果中的重復行。DISTINCT關鍵字放在SELECT詞的后邊、目標列名序列的前邊。SELECT DISTINCT Sno FROM SC 查詢滿足條件的元組 查詢條件謂 詞比較運算符=, , =, , =, NOT+比較運算符 確定范圍BETWEENAND, NOT BETWEENAND確定集合IN, NOT IN字符匹配LIKE, NOT LIKE 空值IS NULL, IS NOT NULL邏輯謂詞)AND, OR比較大小例7
57、查詢計算機系全體學生的姓名。SELECT Sname FROM Student WHERE Sdept = 計算機系例8查詢年齡在20歲以下的學生的姓名及年齡。SELECT Sname, Sage FROM Student WHERE Sage 20例9查詢考試成績有不及格的學生的學號 SELECT DISTINCT Sno FROM SC WHERE Grade =20 AND Sage=23 示例例11查詢年齡不在2023之間的學生姓名、所在系和年齡。SELECT Sname, Sdept, Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 2
58、3等價于:SELECT Sname, Sdept, Sage FROM Student WHERE Sage 23 示例例12 對于日期類型的數據也可以使用基于圍的查找。設有教師表(Teachers),有:工號(Tid)、姓名(Tname)和出生日期(BirthDate)列。查詢1970年1月1日至1979年12月31日出生的教師信息。 SELECT Tid, Tname, BirthDate from Teachers WHERE BirthDate between 1970/1/1 and 1979/12/31確定集合用來查找屬性值屬于指定集合的元組。格式為: 列名 NOT IN(常量1,
59、 常量2,常量n)IN:當列中的值與IN中的某個常量值相等時,則結果為True,表明此記錄為符合查詢條件的記錄。NOT IN:當列中的值與某個常量值相等時,結果為False,表明此記錄為不符合查詢條件的記錄。示例例13 查詢信息管理系、通信工程系和計算機系學生的姓名和性別。SELECT Sname, Ssex FROM Student WHERE Sdept IN (信息管理系, 通信工程系, 計算機系)等價于:SELECT Sname, Ssex FROM Student WHERE Sdept = 信息管理系 OR Sdept = 通信工程系 OR Sdept = 計算機系 示例(續)例1
60、4 查詢既不是信息管理系、通信工程系,也不是計算機系學生的姓名和性別。SELECT Sname, Ssex FROM Student WHERE Sdept NOT IN (信息管理系, 通信工程系, 計算機系)等價于:SELECT Sname, Ssex FROM Student WHERE Sdept!= 信息管理系 AND Sdept!= 通信工程系 AND Sdept!= 計算機系 字符匹配一般形式為: 列名 NOT LIKE 匹配串中可包含如下四種通配符:_:匹配任意一個字符;%:匹配0個或多個字符; :匹配 中的任意一個字符(若要比較的字符是連續的,則可以用連字符“-”表達 );
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中政治課程資源開發與法治教育融合研究論文
- 高中語文閱讀:校園經典文學作品分析與人文素養提升論文
- 中國醫用超聲儀行業市場占有率及投資前景預測分析報告
- 艾炙養生館管理制度
- 苗圃維護與管理制度
- 調直機行業相關投資計劃提議
- 財務制度體系
- 艾倫心理咨詢案例分析步驟
- 連鎖超市安全培訓教材
- 解析匯編化學-專題11化學實驗基礎(原卷版)
- 2025年北京市水務局所屬事業單位招聘工作人員101人筆試高頻重點提升(共500題)附帶答案詳解
- 【MOOC】新媒體文化十二講-暨南大學 中國大學慕課MOOC答案
- 國家開放大學《Python語言基礎》實驗2:基本數據類型和表達式計算參考答案
- 大學學生代表大會流程課件
- 尾礦庫堆壩模型試驗
- 福建省普通公路建設項目施工單位管理標準化指南(共119頁)
- 《心電監護》ppt課件
- 土地整治項目管理PPT
- GB∕T 40754-2021 商場公共設施服務規范
- 會計工作證明模板
- 中國核電標準化組織方式及工作方案
評論
0/150
提交評論