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