數(shù)據(jù)庫DataBase,我們都沒有接觸過數(shù)據(jù)庫,那么數(shù)據(jù)庫是什么?
它是一個有結(jié)構(gòu)的、集成的、可共享的統(tǒng)一管理的數(shù)據(jù)集合!
所謂有結(jié)構(gòu)的,指的是數(shù)據(jù)是按一定的模型組織起來的。
簡單的說,拿個箱子,用隔板把它隔開,如此箱子被分為許多格子,因而我們像填坑一樣把數(shù)據(jù)放進去!OK,那么就把數(shù)據(jù)組裝起來,有人說不如用結(jié)構(gòu)體?但是不要忘了,箱子還可以分類、儲存。這是結(jié)構(gòu)體不能做到的!
所謂集成的,是指數(shù)據(jù)庫中集中存放著企業(yè)各種各樣的數(shù)據(jù)。
就如上面我所講的一樣,箱子把零散的數(shù)據(jù)集結(jié)在一起一樣!
而且你可以在這個箱子里面把你多余的東西全部清理掉,對吧?
如此集中存放的好處顯而易見:
(1)一個數(shù)據(jù)只需一個備份,重復(fù)存儲少,即消除了數(shù)據(jù)的冗余。
(2)沒有數(shù)據(jù)冗余,也就能保證數(shù)據(jù)的一致。
所謂共享,指的是數(shù)據(jù)庫中的數(shù)據(jù)可以被不同的用戶使用。也就是說,每一個用戶可以按自己的要求訪問相同的數(shù)據(jù)庫。
所謂統(tǒng)一管理的,指的是數(shù)據(jù)庫由DBMS統(tǒng)一管理,任何數(shù)據(jù)訪問都是通過DBMS來完成的。
共享和統(tǒng)一管理我就不說了,一個箱子當(dāng)然是可以給其他人用啦,只要你不上鎖!
剛才大家又見到了一個新的單詞:DBMS
這是個什么東西呢?
其實他的全名為DataBase Management System數(shù)據(jù)庫管理系統(tǒng)
是用來管理數(shù)據(jù)庫的一種商品化軟件。
所有訪問數(shù)據(jù)庫的請求都由DBMS來完成的。
DBMS提供了操作數(shù)據(jù)庫的許多命令(語言),即SQL語言。
官方的解釋非常復(fù)雜,什么應(yīng)用層,語言翻譯處理、數(shù)據(jù)存取層等等!好吧,我非常討厭這樣子,于是就有我來給大家縮減地來講解!
![](http://img.jbzj.com/file_images/article/201408/201481991022870.png?201471991033)
通過上面的圖大家有看清是咋么回事嗎?多么直白!但有人要問了,咋么管理呢?那就是我們的SQL語句了!當(dāng)然在linux下絕對不會使用非常大的數(shù)據(jù)庫,因而我們只要掌握一些基本語句就可以了!
SQL語句我將在后面的博客進行相應(yīng)的歸納!
剛才是說到數(shù)據(jù)庫管理了吧?但是我們還要知道數(shù)據(jù)庫有哪些對不對?
Oracle 不用我多說,大家基本都聽過這個數(shù)據(jù)庫!特點是:支持多語言,極好的并行處理能力,多用于金融,保險等行業(yè)
SQL Server 微軟產(chǎn)品,很好的數(shù)據(jù)庫管理系統(tǒng),最好的應(yīng)該是現(xiàn)在微軟推廣云服務(wù),不瞞大家,我在azure上搭建過服務(wù)器,用的就是它!集成化極好,雖然我不是很會使用它!
DB2,這個也是我很少接觸過的數(shù)據(jù)庫!僅僅知道它的移植性非常好!
ACCESS 不多說了,office就有,圖形化界面就是操作很簡單
Sqlite3 極小的數(shù)據(jù)庫,等下將是我的主角!
好了,這5個數(shù)據(jù)庫類型已經(jīng)給大家介紹了!
那么數(shù)據(jù)庫還有一個非常重要的概念:數(shù)據(jù)模型
其實它就是一個組合:
(1) 數(shù)據(jù)結(jié)構(gòu) //類型 數(shù)值等
(2) 數(shù)據(jù)操作 //遍歷 刪除等
(3) 數(shù)據(jù)的完整性約束 //一定的關(guān)系連接
主要有4大類
層次數(shù)據(jù)模型
網(wǎng)狀數(shù)據(jù)模型
關(guān)系數(shù)據(jù)模型
面向?qū)ο髷?shù)據(jù)庫模型
我就講關(guān)系數(shù)據(jù),因為這個才是重點,至于其他,你想了解可以百度,面向?qū)ο蟮哪P兔菜谱罱艅倓偦鹌?,用的不是很?
總所周知,進入學(xué)校,學(xué)校會按什么給你定義呢?學(xué)號!對,因而學(xué)號和你的名字,成績及其他各類信息存在了關(guān)系,找到學(xué)號就是找到了你的所有信息,這就是關(guān)系模型!
![](http://img.jbzj.com/file_images/article/201408/201481991052279.png?20147199112)
那么它如何保證數(shù)據(jù)的獨立性的呢?那就要看數(shù)據(jù)庫他是如何構(gòu)造的!
數(shù)據(jù)庫系統(tǒng)的三級模式結(jié)構(gòu)是指數(shù)據(jù)庫系統(tǒng)是由外模式、模式和內(nèi)模式三級組成。但是我并不打算說這個,因為本人也對這個抽象的東西感到一些恐懼,其實在做開發(fā)過程中,我們壓根就不用去了解他,就算我去面試,如果考官問我,我也會直接告訴他,我不知道,尼瑪,我又不是來制造數(shù)據(jù)庫的人!大家不用去糾結(jié)于它,我提它就是說知道就行!
還有就是數(shù)據(jù)庫中還存在的候選鍵,主鍵什么,不要去管它了,這個等到我們在用sql server的時候再用吧!只要記住一點:學(xué)號就是你的主鍵!唯一標(biāo)識符!
而我為什么又要選擇用sqlite3來作為嵌入式使用的數(shù)據(jù)庫呢?
因為它小!體積適合!嵌入式的東西空間是有限的,用它來做數(shù)據(jù)正好!
可移植性高 ,嵌入式 我不多說,必須要有移植性!
編程接口簡單,簡單的編程我就可以用它了!不用它用什么?
代碼開源,節(jié)約成本那是必須的!否則做什么嵌入式?。?br />
具體優(yōu)勢有哪些呢? 百度一下!
SQLite的優(yōu)勢
內(nèi)存占用量小
事務(wù)操作是原子,一致,孤立,并且持久的(ACID),即使在系統(tǒng)崩潰和電源故障之后。
ACID兼容(原子性,一致性,獨立性,可持久性),支持視圖,子查詢,觸發(fā)器
單個庫文件中包含數(shù)據(jù)庫引擎與接口,且其運行不依賴其它庫
可以將數(shù)據(jù)放進單個文件
為C/C++, PHP等應(yīng)用提供了接口
免費
允許為SQL命令集動態(tài)添加自定義函數(shù)(簡單函數(shù)及聚集函數(shù)),而無需重編SQLite庫
改進的B-樹。對于表采用B+樹,大大提高查詢效率。
好了,今天我寫到這了,好餓,我要去吃飯了!回頭我來寫sqlite3的安裝與sql語法!
您可能感興趣的文章:- Python SQLite3數(shù)據(jù)庫操作類分享
- SQLite3中自增主鍵相關(guān)知識總結(jié)
- SQLite3中的日期時間函數(shù)使用小結(jié)
- python操作數(shù)據(jù)庫之sqlite3打開數(shù)據(jù)庫、刪除、修改示例
- SQLite3 API 編程手冊
- SQLite3 命令行操作指南
- sqlite3 top的查詢及l(fā)imit語法介紹