全體數據的邏輯結構和特徵的描述
,是全部用戶的公共數據視圖。一個數據庫只有一個模式,模式處於三級結構的中間層。定義模式時不只要定義數據的邏輯結構,並且要定義數據之間的聯繫,定義與數據有關的安全性完整性要求
數據庫用戶(包括應用程序員和最終用戶)可以看見和使用的局部數據的邏輯結構和特徵的描述
,是數據庫用戶的數據視圖
,是與某一應用有關的數據的邏輯表示
。外模式是模式的子集。一個數據庫能夠有多個外模式。外模式是保證數據安全性的一個有力措施。
它是數據物理結構和存儲方式的描述,是數據在數據庫內部的表示方式
。爲了可以在內部實現數據庫的3個抽象層次的聯繫和轉換,數據庫管理系統在三級模式之間提供了兩層映射。html
保證數據與程序的邏輯獨立性
。保證數據與程序的物理獨立性
。數據模型是一種對客觀事物抽象化的表現形式。它對客觀事物加以抽象,經過計算機來處理現實世界中的具體事物。它客觀地反映了現實世界,易於理解,與人們對外部事物描述的認識相一致。程序員
數據模型由數據結構、數據操做、完整性約束組成。
數據結構
:是對系統靜態特徵的描述。描述對象包括數據的類型、內容、行政和數據之間的相互關係。
數據操做
:是對系統動態特徵的描述,是對數據庫中各類對象實例的操做。
完整性約束
:是完整性規則的集合。他定義了給定數據模型中數據及其聯繫所具備的制約和依存規則。sql
層次模型
:用樹形結構表示實體類型及實體間聯繫的數據模型成爲層次模型。網狀模型
:用有向圖結構表示實體類型及實體間聯繫的數據模型成爲網狀模型。用網狀模型編寫應用程序及其複雜,數據的獨立性較差。關係模型
:以二維表來描述數據。在關係模型中,每一個表有多個字段列和記錄行,每一個字段列有固定的屬性(數字、字符、日期等)。關係模型數據結構簡單、清晰、具備很高的數據獨立性,所以是目前主流的數據庫數據模型。關係
:二維表元組
:二維表一行,表中的記錄屬性
:二維表一列,用類型和值表示域
:每一個屬性取值的變化範圍,如性別的域爲{男,女}關係模型中的數據約束:數據庫
實體完整性約束
:約束關係的主鍵屬性值不能爲空參照完整性約束
:關係之間的基本約束用戶定義的完整性約束
:反應具體應用中數據的語義要求第一範式(1NF)、2NF、3NF、鮑依斯-科得範式(BCNF)、4NF、5NF。其中,NF是Normal Form的縮寫。通常狀況下,只要把數據規範到第三範式標準便可知足須要。安全
1NF
:在一個關係中,消除重複字段,且各字段都是最小的邏輯存儲單位。2NF
:1NF基礎上,消去非主屬性對鍵的部分函數依賴3NF
:2NF基礎上,消去非主屬性對鍵的傳遞函數依賴BCNF
:3NF基礎上,消去主屬性對鍵的傳遞函數依賴4NF
:BCNF基礎上,消去表中的多值依賴實體是指客觀存在並可相互區別的事物,也能夠是抽象的概念或關係。實體之間有三種關係。服務器
學生與學生的身份證號
一個學生只屬於一個班,一個班有多名學生
一個學生能夠選擇多門課,一門課也有多名學生
詳細說明數據結構
Oracle在並行處理、實時性、數據處理速度方面都有較好的性能。數據庫設計
關係數據庫
關係數據庫是支持關係模型的數據庫。關係模型由關係數據結構、關係操做集合和完整性約束3部分組成。函數
關係數據結構
:在啊關係模型中數據結構單一,現實世界的實體以及實體間的聯繫均用關係來表示,實際上關係模型中數據結構就是一張二維表關係操做集合
:關係操做分爲關係代數、關係演算、具備關係代數和關係演算雙重特色的語言(SQL語言)完整性約束
表
:表是包含數據庫中全部數據的數據庫對象,由行和列組成,用於組織和存儲數據。字段
:表中每列成爲一個字段,字段具備本身的屬性,如字段類型、字段大小等。其中,字段類型是字段最重要的屬性,它決定了字段可以存儲哪一種數據。索引
:索引是一個單獨的、無力的數據庫結構。它是依賴於表創建的,在數據庫中索引是數據庫程序無需對整個表進行掃描,就能夠在其中找到所需的數據。視圖
:視圖是從一張或多張表中導出的表(也稱虛擬表),是用戶查看數據表中數據的一種方式。表中包括幾個被定義的數據列與數據行,其結構和數據創建在對錶的查詢基礎上。存儲過程
:存儲過程是一組爲了完成特定功能的SQL語句集合(包含查詢、插入、刪除和更新等操做),經編之後以名稱的形式儲存在SQL Server服務器端的數據庫中,由用戶經過制定存儲過程更的名字來執行。當這個存儲過程被調用執行時,這些操做也會被同時執行。「」
或[]
內的標識符。該標識符能夠不符合標識符的格式規則。在一個數據庫中建立了一個數據庫對象後,數據庫對象的完整名稱應該由服務器名、數據庫名、擁有者名和對象名
4部分組成
[[[server.][database].][owner_name].]object_name
服務器、數據庫和全部者的名稱即所謂的對象名稱限定符。當引用一個對象時,不須要指定服務器、數據庫和全部者,能夠利用句號標出他們的位置,從而省略限定符。
指定了全部4哥部分的對象名稱被稱爲徹底合法名稱。post
刪除數據庫時必須知足如下條件
刪除數據庫後應當即備份master數據庫,由於刪除數據庫將更新master數據庫中的信息。
基本數據類型詳情
char、varchar、nchar、nvarchar的區別:
建立用戶自定義數據類型
語法:
sp_addtype [ @typename = ] type, [ @phystype = ] system_data_type [ , [ @nulltype = ] 'null_type' ] ;
實例:
USE test EXEC sp_addtype postcode,'char(8)','not null'
刪除用戶自定義數據類型
語法:
sp_droptype [ @typename = ] 'type'
實例:
USE test EXEC sp_droptype postcode
Microsost SQL Server 2008提供多種強制數據完整性的機制。
約束是SQL Server提供的自動強制數據完整性的一種方式,它是經過定義列的取值規則來維護數據的完整性,是強制完整性的標準機制。使用約束優先於使用觸發器、規則和默認值。查詢分析器也使用約束定義生成高性能的查詢執行計劃。
當在表中已建立主鍵,但又要保證其餘數據列的值惟一時,可使用UNIQUE約束。
使用UNIQUE約束能夠確保在非主鍵列中部輸入重複的值。UNIQUE約束和PRIMARY KEY約束都具備強制惟一性,但想要強制一列或多列組合(不是PRIMARY KEY)的惟一性時,應使用UNIQUE約束而不是PRIMARY KEY約束。
能夠對一個表定義多個UNIQUE約束,但只能定義一個PRIMARY KEY約束。並且UNIQUE約束容許NULL。當與參與UNIQUE約束的任何值一塊兒使用時,每列只容許一個NULL。FOREIGN KEY約束能夠引用UNIQUE約束。
操做:
表->設計->索引/鍵->增長 列:選擇列 類型:惟一鍵
CHECK約束經過限制輸入到列中的值來強制域的完整性。此類約束相似於FOREIGN KEy約束,能夠控制放入到列中的值。
表->設計->CHECK約束->增長 表達式:old>18 and old<100
默認約束使用戶可以定義一個值,每當用戶沒有在某一列中輸入值時,則將所定義的值提供給這一列。若是用戶對此列沒有特定的要求,可使用默認約束來爲此列輸入默認值。
即便列爲NOT NULL,設置默認約束後,可不進行輸入,會使用默認值。
操做
表->設計->選中列->列屬性 默認值或綁定:https://image.baidu.com/s/101.jpg
FK適用於創建兩個表數據之間鏈接的一列或多列。經過將保存表中主鍵值的一列或多列增長到另外一個表中,可建立兩個表之間的連接,這個列就成爲第二個表的外鍵。
操做
表->設計->關係->增長 表和列規範:選擇主鍵表的列和外鍵表的列 INSERT和UPDATE規範 刪除規則 不執行任何操做:報錯不執行 級聯:刪除主鍵表列的同時將關聯的外鍵表中的列同時刪除 更新規則 級聯:更新主鍵表列的同時將關聯的外鍵表中的列同時更新
SQL的主鍵和外鍵的做用:
外鍵取值規則:空值或參照的主鍵值。
在一對一關係中,大部分相關信息都在一個表中。特色
一對多關係是最多見的關係類型,是指表A中的行能夠在表B中有許多匹配行,可是表B中的行只能在表A中有一個匹配行
若是在相關列中只有一列是主鍵或具備惟一約束,則建立的是一對多關係。
多對多關係是指關係中每一個表的行在相關表中具備多個匹配行。在數據庫中,多對多關係的創建是依靠第3哥表即鏈接表實現的,鏈接表包含相關的兩個表的主鍵列,而後從兩個相關表的主鍵列分別建立與連接表中匹配列的關係。
視圖是一種經常使用的數據庫對象,它將查詢的結果以虛擬表的形式存儲在數據中。視圖並不在數據庫中以存儲數據集的形式存在。視圖的結構和內容是創建在對錶的查詢基礎之上的,和表同樣包括行和列,這些行列數據都來源於其所引用的表,而且是在引用視圖過程當中動態生成的。
視圖中的內容是有查詢定義來的,而且視圖和查詢都是經過SQL語句定義的,他們有着許多相同和不一樣之處。
× | 視圖 | 查詢 |
---|---|---|
存儲 | 視圖存儲爲數據庫設計的一部分, | 查詢不存儲 |
排序 | 只有當視圖包括TOP子句才能排序視圖 | 能夠排序任何查詢結果 |
加密 | 能夠加密視圖 | 不能加密查詢 |
能夠禁止全部用戶訪問數據庫的基表,而要求用戶只能經過視圖操做數據。這種方法能夠保護用戶和應用程序不受某些數據庫修改的影響
標準視圖:保存在數據庫中的SELECT查詢語句,即一般意義上理解的視圖。 索引視圖:建立有索引的視圖成爲索引視圖。他通過計算並存儲有本身的數據,能夠提升某些類型查詢的性能,尤爲適用於聚合許多行的查詢,但不太適合於常常更新的基本數據集。 分區視圖:是在一臺或多臺服務器間水平聯結一組表中的分區數據,以使數據看上去來源於一個表。