數(shù)據(jù)庫基礎(chǔ)
1.什么是數(shù)據(jù)庫
數(shù)據(jù)庫:database
高效的存儲和處理數(shù)據(jù)的介質(zhì)(磁盤和內(nèi)存)
2.數(shù)據(jù)庫分類
根據(jù)存儲介質(zhì):
- 關(guān)系型數(shù)據(jù)庫:SQL
- 非關(guān)系型數(shù)據(jù)庫:NoSQL(Not Only SQL)
3.不同的數(shù)據(jù)庫陣營中的產(chǎn)品有哪些?
關(guān)系型數(shù)據(jù)庫:
- 大型:Oracle,DB2
- 中型:SQL-SERVER捐友,Mysql等
- 小型:access等
非關(guān)系型數(shù)據(jù)庫:memcached苗胀,mongodb,redis(同步到磁盤)
4.兩種數(shù)據(jù)庫陣營的區(qū)別栈源?
關(guān)系型數(shù)據(jù)庫:安全
(保存到磁盤基本不可能丟失),容易理解,比較浪費空間(二維表厨诸,沒數(shù)據(jù)還是有表格存在)
非關(guān)系型數(shù)據(jù)庫:效率高,不安全(斷點丟失)
關(guān)系型數(shù)據(jù)庫 ——維護實體內(nèi)部禾酱,實體與實體之間的關(guān)系
- 定義:是一種建立在
關(guān)系模型
(數(shù)學模型)上的數(shù)據(jù)庫
關(guān)系模型
——>數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)存儲的問題微酬,二維表(行和列)
——>數(shù)據(jù)指令集合:所有SQL語句
——>完整性約束:表內(nèi)數(shù)據(jù)約束(字段與字段),表與表之間約束(外鍵) - 關(guān)系型數(shù)據(jù)庫設(shè)計
---數(shù)據(jù)需求分析:
一類數(shù)據(jù)(實體):—— 二維表(數(shù)據(jù)名字和實際存儲數(shù)據(jù)單元
)
表頭 | 字段名1 | 字段名2 |
---|---|---|
數(shù)據(jù)單元 | 數(shù)據(jù)1 | 數(shù)據(jù)2 |
舉例關(guān)系型數(shù)據(jù)庫設(shè)計:
教務(wù)系統(tǒng)
學生表
班級表
關(guān)鍵字
DBS=DBMS+DB
數(shù)據(jù)庫:database
數(shù)據(jù)庫系統(tǒng):DBS(Database System):是一種虛擬系統(tǒng)颤陶,將多種內(nèi)容關(guān)聯(lián)起來的稱呼
DBMS:Database Management颗管,數(shù)據(jù)庫管理系統(tǒng),專門管理數(shù)據(jù)庫
DBA:Database Administrator滓走,數(shù)據(jù)庫管理員
行/記錄:row/record垦江,本質(zhì)是一個東西:表中的一行(一條記錄)。行從結(jié)構(gòu)角度
出發(fā)搅方,記錄從數(shù)據(jù)角度
出發(fā)
列/字段:column/field比吭,本質(zhì)是一個東西
SQL
SQL:Structured Query Language绽族,結(jié)構(gòu)化查詢語言(因為大多在查詢99%)
SQL分3部分:
- DDL:Data Definition Language,數(shù)據(jù)定義語言衩藤,用來維護存儲數(shù)據(jù)的結(jié)構(gòu)(數(shù)據(jù)庫吧慢,表),指令代表:create赏表,drop检诗,alter等
- DML:Data Mainpulation Language,數(shù)據(jù)庫操作語言瓢剿,用來對數(shù)據(jù)進行操作(數(shù)據(jù)表中的內(nèi)容)逢慌,代表指令:insert,delete跋选,update等涕癣。其中DML內(nèi)部又分了一個=>DQL(Data Query Languager:數(shù)據(jù)查詢語言,如:select)
- DCL:Data Control Language前标,數(shù)據(jù)控制語言坠韩,主要負責權(quán)限管理(用戶),指令代表:grant炼列,revoke等
SQL是關(guān)系型數(shù)據(jù)庫的操作指令只搁,是一種約束,但不強制俭尖。
持久化和序列化氢惋,transient關(guān)鍵字
1. 持久化(Persistence):持久化是將程序數(shù)據(jù)在持久狀態(tài)和瞬時狀態(tài)間轉(zhuǎn)換的機制。通俗的講稽犁,就是瞬時數(shù)據(jù)(比如內(nèi)存中的數(shù)據(jù)焰望,是不能永久保存的)持久化為持久數(shù)據(jù)(比如持久化至數(shù)據(jù)庫中,能夠長久保存)已亥。
通過輸入輸出流實現(xiàn):
- java.io.ObjetOutputStream
- java.io.ObjectInputStream
2. 序列化:在數(shù)據(jù)儲存與傳送的部分是指將一個對象存儲至一個儲存媒介熊赖,例如檔案或是記億體緩沖等,或者透過網(wǎng)絡(luò)傳送資料時進行編碼的過程虑椎,可以是字節(jié)或是XML等格式震鹉。而字節(jié)的或XML編碼格式可以還原完全相等的對象。這程序被應(yīng)用在不同應(yīng)用程序之間傳送對象捆姜,以及服務(wù)器將對象儲存到檔案或數(shù)據(jù)庫传趾。相反的過程又稱為反序列化。
通過繼承接口實現(xiàn):
- Serializable
- Externlizable
3. transient關(guān)鍵字:
transient修飾的關(guān)鍵字將不會被序列化泥技,靜態(tài)變量不論是否有transient關(guān)鍵字修飾都不參與序列化浆兰。