工作兩年了怀估,一直做著各種業(yè)務狮鸭,是時候靜下心來總結回顧以及復習一些知識了,先從第一個專題數(shù)據(jù)庫開始吧多搀。
什么是數(shù)據(jù)庫呢歧蕉?
數(shù)據(jù)庫(database),顧名思義康铭,就是存儲和管理數(shù)據(jù)的一個程序倉庫惯退,存儲什么數(shù)據(jù)呢,內(nèi)存數(shù)據(jù)么麻削?當然不是蒸痹,存儲的是駐留在內(nèi)存之外的數(shù)據(jù)春弥,所以它存儲的肯定是持久型的數(shù)據(jù),不會因為程序結束了數(shù)據(jù)沒有了叠荠,要不然要它也沒用了匿沛,數(shù)據(jù)庫必須要具有高的可靠性,因為一般我們存儲的數(shù)據(jù)都是比較重要的榛鼎,所以數(shù)據(jù)庫必須要考慮硬件故障逃呼,軟件故障,斷電者娱,人為攻擊等等方面的因素抡笼。數(shù)據(jù)庫數(shù)據(jù)一般會由多個用戶操作的,所以還需要保證數(shù)據(jù)的一致性黄鳍,支持并發(fā)操作推姻。
總結如下,數(shù)據(jù)庫具有這些特點:
- 處理大規(guī)模數(shù)據(jù)
- 持久性
- 安全性
- 多用戶操作框沟,并發(fā)操作
- 方便操作
- 高效和高可靠性
數(shù)據(jù)庫管理系統(tǒng)(DBMS)
數(shù)據(jù)庫管理系統(tǒng)(Database Management System 簡稱DBMS)是一種操縱和管理數(shù)據(jù)庫的大型軟件藏古,是用于創(chuàng)建、使用和維護數(shù)據(jù)庫的程序軟件忍燥。
1.DBMS的主要功能
- 數(shù)據(jù)定義功能:提供數(shù)據(jù)定義語言(DDL)【drop create alter】
- 數(shù)據(jù)操縱功能:提供數(shù)據(jù)操縱語言(DML)【select insert delete update】
- 數(shù)據(jù)庫運行管理
a.保證數(shù)據(jù)的安全性 b.多用戶對數(shù)據(jù)的并發(fā)使用 c.發(fā)生故障后的系統(tǒng)恢復
- 數(shù)據(jù)庫的建立和維護功能
- DBMS分類
- 小型數(shù)據(jù)庫: Access foxbase sqlite
- 中型數(shù)據(jù)庫: mysql, sql server infomix posgreSql(開源) MongoDB(開源)
- 大型數(shù)據(jù)庫: Sysbase oracle db2
數(shù)據(jù)庫分類
數(shù)據(jù)庫基于存儲介質(zhì)的不同:進行了分類拧晕,分為兩類:
關系型數(shù)據(jù)庫(SQL)
非關系數(shù)據(jù)庫(NoSQL : Not Only SQL, 不是關系型的數(shù)據(jù)庫都叫做非關系數(shù)據(jù)庫)關系型數(shù)據(jù)庫:安全(保存磁盤基本不會丟失)梅垄,容易理解厂捞,符合人類的認知。但是比較浪費空間(二維表)
非關系型數(shù)據(jù)庫:效率高队丝,不安全(斷電丟失)
關系型數(shù)據(jù)庫
1靡馁、什么是關系型數(shù)據(jù)庫?
? 關系型數(shù)據(jù)庫:是一種建立在關系模型(數(shù)學模型)上的數(shù)據(jù)庫炭玫。
? 關系模型:一種所謂建立在關系上的模型奈嘿。關系模型包含三個方面:
? 數(shù)據(jù)結構: 數(shù)據(jù)存儲的問題貌虾,二維表(有行和列)
? 操作指令集合:所有的SQL語句吞加;
? 完整性約束:表內(nèi)數(shù)據(jù)約束,表與表之間約束(外鍵)
2尽狠、關系型數(shù)據(jù)庫的設計衔憨?
? 關系型數(shù)據(jù)庫: 從需要存儲的數(shù)據(jù)需求中分析,如果是一類數(shù)據(jù)(實體)應該設計成一張二維
表:表是由表頭(字段名:用來規(guī)定數(shù)據(jù)的名字)和數(shù)據(jù)部分組織(實際存儲的數(shù)據(jù)單位)
? ? ? 二維表:行和列
? ? ? 表頭 字段名1 字段名2
? ? ? 數(shù)據(jù)單元 數(shù)據(jù)1 數(shù)據(jù)2
SQL
SQL: Structured Query Language 袄膏,結構化查詢語句(數(shù)據(jù)主要是以查詢?yōu)橹鳎?9%是在進行查詢操作)
SQL分為三個部分
? ? DDL: Data Definition Language 數(shù)據(jù)定義語言践图,用來維護存儲數(shù)據(jù)的結構(s數(shù)據(jù)庫,
表)代表指令: create沉馆,drop码党, alter等德崭。
? ? DML : Data Manipulation Language ,數(shù)據(jù)操作語言揖盘,用來對數(shù)據(jù)進行操作(數(shù)據(jù)表的>> 內(nèi)容)眉厨,代表指令:insert delete update等。其中DML內(nèi)部又單獨進行了一種分類兽狭,DQL(Data Query >> Language):數(shù)據(jù)庫查詢語句憾股,如selectDCL: Data Control Language ,數(shù)據(jù)控制語句箕慧,主要負責權限>> 管路(用戶)服球,代表指令:grant、revoke等SQL是關系型數(shù)據(jù)庫的操作指令颠焦,SQL是一種約束,但不強制
(類似W3C)伐庭,不同的數(shù)據(jù)庫產(chǎn)品(如Oracle座享, mysql)可能內(nèi)部會有一些細微的區(qū)別!