詳細解說關係型數據庫

目錄sql

一、認識關係型數據庫數據庫

1.1.1 什麼是關係型數據庫編程

1.1.2  實體關係模型安全

1.1.3  關係型數據庫管理系統RDBMS服務器

1.1.4  使用SQL語言管理數據庫數據結構


一、認識關係型數據庫

數據庫簡而言之就是數據的集合,它是由文件系統存儲數據發展起來的,數據庫系統解決了多人數據庫讀取和寫入的併發性問題,同時它提供了事務的機制,使得存儲和管理數據庫數據更加安全可靠。數據庫系統讓用戶只處理邏輯數據層,好比表和視圖等。它使得用戶可使用簡單易管理的方式來操做數據的數據。併發

1.1.1 什麼是關係型數據庫

數據技術通過幾十年的發展,經歷了人工管理、文件系統到如今的數據庫管理,提供了對數據更高級和更有效的管理。數據庫系統管理數據具備以下特色:app

      (1)使用數據模型表示複製的數據庫結構,用戶可使用實體關係模型對數據進行建模,不只能夠表達數據自己,還能夠描述數據之間的關係,這使得存儲在數據庫中的數據更容易理解和維護。框架

(2)數據系統將數據的邏輯結構與物理結構分離,用戶能夠簡單地使用邏輯結構操做數據庫,而不用考慮物理存儲結構,簡化了數據庫操做的複雜性。通常來講,一個數據庫系統能夠分爲如圖1.1所示的3級。數據庫設計

(3)數據庫系統提供了數據的控制功能,他提供了多用戶併發機制,防止數據庫數據被非法更改。數據庫系統會提供數據的備份和恢復功能,能夠避免出現災難性時間致使的數據丟失。數據提供數據完整性功能,而且提供了必要的安全性機制。

關係型數據庫系統是近30年來數據庫系統的主流模型,他使用數據之間的關係模型來存儲和管理數據庫。關係型數據庫的模型創建與20世紀70年代,美國的E.F.Codd發表了一遍名爲《大型共享數據庫的數據關係模型》的論文,他定義了一個基於數學幾何理論的關係模型,關係型數據庫是一個符合關係模型的數據庫。

●注意:《大型共享數據庫的數據關係模型》已經具備簡體中文版本,感興趣的用戶能夠經過湊所引擎瞭解關於這邊論文的詳細信息。

在現實世界彙總,大量的數據都是具備一些相關性的,關係型數據庫系統就是更具數據的關係對數據進行結構化的組織和存儲。對關係型數據庫的定義簡而言之就是:使用關係或二維表存儲信息。二維表是由行(也能夠稱爲元組)和列(也看能夠稱爲屬性)組成的,一般簡稱爲表或者是關係型數據庫的實體。表中的每一行都具備相同的列集,所以能夠將關係型數據稱爲存儲在關係表中的數據庫。

舉個例子,爲了存儲人事部門的數據,能夠建立一個員工表和一個部門表,因爲員工表中的每一個人員信息都是屬於部門,所以關係型數據庫還會存儲員工表和部門之間的引用關係。當沒有使用關係型數據庫系統時,認識部門可能使用Excel建立一張人員表,示意結構如圖1.2所示。

人事部門還會建立一張部門表,部門表中包含了部門的名稱、部門的位置部門的編號等信息,人員表的所屬部門應該是要與部門表中的部門名稱保持一致,不然數據庫中的數據庫就會出現混亂,如圖1.3所示。

關係型數據庫出了存儲這些基本的數據信息外,還會存儲表之間的關係。關係型數據會維護這些關係的完整性,一遍提供更加結構話的存儲方式。

1.1.2  實體關係模型

數據庫主要用來存儲現實世界中的數據,關係型數據庫經過使用表盒關係來存儲數據,能夠保存現實世界中的數據集合。實體關係模型對現實世界進行抽象,得出實體類型和實體間的關係,用來描述現實世界中數據的組成結構。在構建了實體關係後,通常會使用實體關係的圖來清晰地表達出實體關係的機構。實體關係圖(Entity Relationship Diagram)是指提供了表實體、屬性和關係的圖形化表示方式,用來描述現實世界的概念模型,簡稱爲E-R圖。

實體關係模型具備3個核心的元素,在進行數據庫的分析和設計時,須要認真地理解這幾個元素的具體含義及在E-R圖彙總的表現形式,分別以下所示。

●實體(Entity):是具備相同特徵和屬性的顯示世界事務的抽象,在E-R圖彙總用矩形表示,矩形框內註明實體的名稱。好比員工張3、員工趙七都是實體。

●屬性(Attribute):是指實體具備的特徵,一個實體能夠包含若干個實體。在E-R圖彙總屬性用橢圓形表示,並使用線條將其與相應的實體鏈接起來。好比員工具備工號、入職日期等屬性。

●關係(Relationship):是指實體之間的像話聯繫的方式,通常具備一對一關係(1:1)、一對多關係(1:N)、多對多關係(M:N)。

以認識管理系統的人員信息和員工請假爲例,經過使用實體關係建模,回執瞭如圖1.4所示的ER實體關係圖。

由圖1.4能夠發現,人員和請假單這兩個實體使用矩形表示,實體的屬性使用橢圓形表示,實體與實體之間的關係使用另行表示。人員實體與請假單實體居勇1對多的關係,所以在另行附近使用1和N表示。

通常來講,數據庫設計人員對數據庫進行需求分析時,與數據庫的用戶進行溝通,數據庫的設計人員可能須要回執多種不一樣類型的圖來表單關係型數據庫的存儲結構,在邏輯設計階段回執E-R關係圖,可使用Visio、PowerDesigner或者是ERWin Data Modeler等軟件來實現。

1.1.3  關係型數據庫管理系統RDBMS

數據庫管理系統是基於關係型數據庫模型建立的計算機軟件程序,其英文全稱是Relational Database Management System,簡稱RDBMS。數據庫管理系統是位於操做系統和用戶(或者是基於數據庫的應用程序)之間的一組數據庫管理程序,它提供了對數據庫中的數據進行統一管理和控制的功能,對歸根到底,數據庫中的數據是以文件的形式存放在操做系統中的,數據庫管理系統提供了數據庫和高級組織造成,他提供了對數據庫中的數據的統一管理和控制的功能,數據庫管理系統與用戶的示意圖如圖1.5所示。

數據庫管理系統負責對數據庫進行全方位的管理,他包含了如圖1.6所示的幾項職責。

如圖1.6所示,一個數據庫管理系統一般要提供以下所示的幾項功能。

●定義數據庫結構:DBMS提供數據定義語言來定義(DDL)數據庫結構,用來搭建數據庫框架,並被保存在數據字典中。

●存取數據庫內容:DBMS提供數據操做語言(DML),實現對數據庫數據的基本存取操做——檢索、插入、修改和刪除。

●數據庫的運行管理:DBMS提供數據控制功能,即數據的安全性、完整性和併發控制等對數據庫運行進行有效的控制和管理,以確保數據正確有效。

●數據庫的創建和維護:包括數據庫出事數據的裝入,數據的轉儲、恢復、重組織,系統性能監視、分析等功能。

●數據庫的傳輸:DBMS提供處理數據的傳輸,實現用戶程序與DBMS之間的通訊,一般與操做系統協調完成。

有了關係型數據庫管理系統,開發人員就能夠在數據庫中建立數據庫、建立表、存取數據庫內容、對數據庫進行備份和管理,只須要理解經常使用的系統相關的操做,而不用去研究關係型數據庫系統內部深奧難懂的數學方方面的理論知識。

目前比較常見的DBMS有Oracle、SQL Server、Mysql、DB2等,它們都使用關係型數據庫模型做爲基礎構建的軟件,它們創建在關係數據模型的基礎之上,經過一系列相關的表和其餘數據庫,對象把現實世界中存在的事務及事務之間的聯繫用數據庫對象,好比表、視圖、索引、關係加以存儲,使之爲數據庫的用戶提供規範化的信息。

1.1.4  使用SQL語言管理數據庫

爲了便於管理關係型數據庫,數據庫管理系統使用一種稱爲SQL的聲明性語言。SQL的全稱是結構化查詢語言(Structured Query Language),是一種對關係數據庫中的數據進行定義和操做的句法。他獨立於數據庫管理系統,而且以經被國際標準化組織指定爲一種操做數據庫的標準語言。SQL語言能夠操做和管理數據庫,各類數據庫管理廠商使用SQL標準來定製本身的數據庫管理方式,所以它對於全部的數據庫管理系統來講是通用的。

●注意:因爲不一樣的數據庫廠商對SQL語言的支持與標準仍然存在着細微的不一樣,所以在使用時必需要參加各個數據庫廠商提供的SQL操做文檔。

SQL語言是一種高級的非過程化編程語言。SQL語言容許用戶不瞭解數據庫的底層結構和具體的操做方式,只須要在一個標準化的、較高層次的數據結構上進行工做,這就大大簡化了數據庫的操做方式,同時由於不與數據庫、硬件等緊密耦合,所以也使得基於數據庫的應用系統具備很好的可移值性。其操做示意如圖1.7 所示。

由圖中能夠看到,任何客戶端經過SQL語言來與數據庫管理系統進行通訊,經過向服務器端發送SQL語句,數據庫管理系統將這些SQL語句轉換爲實際的對數據庫數據進行操做的指令來對數據庫進行管理,這簡化了數據庫管理系統的複雜程度,提升了用戶對數據庫的使用效率。

SQL語言主要又分爲以下6大類。

(1)數據查詢語言(DQL) :也稱爲「數據檢索語句」,用於從表中得到數據,肯定數據怎樣在應用程序給出。關鍵字SELECT是DQL ( 也是全部SQL)用得最多的語句,其餘DQL經常使用的關鍵字有WHERE、ORDER BY、GROUP BY和HAVING.這些DQL關鍵字常與其餘類型的SQL語句一塊兒使用。

(2)數據操做語言(DML) :分別用於添加、修改和刪除表中的行。也稱爲動做查詢語言。

(3)事務處理語言(TPL) :能確保被DML語句影響的表的全部行及時得以更新。TPL語句包括BEGIN TRANSACTION、COMMIT和ROLLBACK.

(4)數據控制語言(DCL) :經過GRANT或REVOKE得到許可,肯定單個用戶和用戶組對數據庫對象的訪問。某些RDBMS可用GRANT或REVOKE控制對錶單各列的訪問。

(5)數據定義語言(DDL):在數據庫中建立新表或刪除表(CREAT TABLE或DROP(5)數據定義語言(DDL):在數據庫中建立新表或刪除表(CREAT TABLE或DROP也是動做查詢的一部分。

(6)指針控制語言(CCL) :用於對一個或多個表的單獨行進行操做,好比DECLARECURSOR、FETCH INTO和UPDATE WHERE CURRENT等語句。

能夠看到這些SQL語句基本上涵蓋了進行數據庫操做的方方面面,基本上學習數據庫操做多數時間都是在使用SQL語句進行管理,所以對於一名合格的DBA來講,熟練地掌握SQL語言是很是有必要的。

相關文章
相關標籤/搜索