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