開(kāi)發(fā)網(wǎng)站報(bào)價(jià)方案/百度推廣登錄官網(wǎng)入口
目錄
1.什么是數(shù)據(jù)庫(kù)?
2.數(shù)據(jù)庫(kù)與文件系統(tǒng)的區(qū)別?
3.常見(jiàn)的數(shù)據(jù)庫(kù)由那些?
4.關(guān)系型數(shù)據(jù)庫(kù)(MySQL)的特征及組成結(jié)構(gòu)介紹
1.什么是數(shù)據(jù)庫(kù)?
數(shù)據(jù):描述事物的符號(hào)記錄,可以是數(shù)字,文字,圖形,聲音,語(yǔ)言等多種形式,他們都可以經(jīng)過(guò)數(shù)字化后存入計(jì)算機(jī)
數(shù)據(jù)庫(kù):存儲(chǔ)數(shù)據(jù)的倉(cāng)庫(kù),是長(zhǎng)期存放在計(jì)算機(jī)內(nèi),有組織,可共享的大量 數(shù)據(jù)集合。數(shù)據(jù)庫(kù)中的數(shù)據(jù)按照一定數(shù)據(jù)模型組織,描述和存儲(chǔ),具有較小的冗余度,較高的獨(dú)立性和易擴(kuò)展性,并為各種用戶(hù)共享。總結(jié)為一下幾點(diǎn)
- 數(shù)據(jù)結(jié)構(gòu)化
- 數(shù)據(jù)的共享性,冗余度低,易擴(kuò)充
- 數(shù)據(jù)獨(dú)立性高
- 數(shù)據(jù)由DBMS統(tǒng)一管理和控制(安全性,完整性,并發(fā)控制,故障恢復(fù))解釋:DBMS數(shù)據(jù)庫(kù)管理系統(tǒng) (能夠操作和管理數(shù)據(jù)庫(kù)的大型軟件)
2.數(shù)據(jù)庫(kù)與文件系統(tǒng)的區(qū)別?
文件系統(tǒng):文件系統(tǒng)是操作系統(tǒng)用于明確存儲(chǔ)設(shè)備(常見(jiàn)的是磁盤(pán))或分區(qū)上的文和數(shù)據(jù)結(jié)構(gòu);即在存儲(chǔ)設(shè)備上組織文件的方法。操作系統(tǒng)中負(fù)責(zé)管理和存儲(chǔ)文件信息的軟件機(jī)構(gòu)稱(chēng)為文件管理系統(tǒng),簡(jiǎn)稱(chēng)為文件系統(tǒng)
數(shù)據(jù)庫(kù)系統(tǒng):數(shù)據(jù)庫(kù)管理系統(tǒng)(DMS) 是一種操縱和管理數(shù)據(jù)庫(kù)的大型軟件,用于建立,使用和維護(hù)數(shù)據(jù)庫(kù),簡(jiǎn)稱(chēng)DBMS.他對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一的管理和控制,以保證數(shù)據(jù)庫(kù)的安全性和完整性。
對(duì)比和區(qū)別:
1.管理對(duì)象不同:文件系統(tǒng)的管理對(duì)象是文件,并非直接對(duì)數(shù)據(jù)進(jìn)行管理,不同的數(shù)據(jù)結(jié)構(gòu)需要使用不同的文件類(lèi)進(jìn)行保存(例如:txt文件和doc 文件不能通過(guò)修改文件名稱(chēng)完成轉(zhuǎn)換)而數(shù)據(jù)庫(kù)直接對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)和管理
2.存儲(chǔ)方式不同:文件系統(tǒng)使用不同的文件將數(shù)據(jù)分類(lèi)(.doc/.mp4/.jpg)保存在外部存儲(chǔ)上;數(shù)據(jù)庫(kù)系統(tǒng)使用標(biāo)準(zhǔn)統(tǒng)一的數(shù)據(jù)類(lèi)型進(jìn)行數(shù)據(jù)保存(字母 數(shù)字 符號(hào) 時(shí)間)
3.調(diào)試數(shù)據(jù)的方式不同:文件系統(tǒng)使用不同軟件打開(kāi)不同類(lèi)型的文件;數(shù)據(jù)庫(kù)系統(tǒng)由DBMS統(tǒng)一調(diào)用和管理。如下圖
?優(yōu)缺點(diǎn)總結(jié):
- 由于DBMS 的存在,用戶(hù)不在需要了解數(shù)據(jù)存儲(chǔ)和其他實(shí)現(xiàn)的細(xì)節(jié),直接通過(guò)DBMS就能獲取數(shù)據(jù),為數(shù)據(jù)的使用帶來(lái)極大的便利
- 具有以數(shù)據(jù)為單位的共享性,具有數(shù)據(jù)的并發(fā)訪(fǎng)問(wèn)能力。DBMS保證了在訪(fǎng)問(wèn)時(shí)數(shù)據(jù)的一致性。
- 低延時(shí)訪(fǎng)問(wèn),典型例子就是線(xiàn)下支付系統(tǒng)的應(yīng)用,支付規(guī)模局的的時(shí)候,數(shù)據(jù)庫(kù)系統(tǒng)的表現(xiàn)遠(yuǎn)遠(yuǎn)優(yōu)于文件系統(tǒng)
- 能夠較為頻繁的對(duì)數(shù)據(jù)進(jìn)行修改,在需要頻繁修改數(shù)據(jù)的場(chǎng)景下,數(shù)據(jù)庫(kù)系統(tǒng)可以依賴(lài)DBMS來(lái)對(duì)數(shù)據(jù)進(jìn)行操作且對(duì)性能的消耗相比文件系統(tǒng)比較小
- 對(duì)事物的支持。DBMS支持事務(wù),即一系列對(duì)數(shù)據(jù)的操作集合要么都完成,要么不完成。在DBMS上對(duì)數(shù)據(jù)的各種操作都是原子級(jí)的?
3.常見(jiàn)的數(shù)據(jù)庫(kù)由那些?
關(guān)系型數(shù)據(jù)庫(kù)
? ? ? ? 關(guān)系數(shù)據(jù)庫(kù)是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù),借助于集合代數(shù)等數(shù)學(xué)概念和方法來(lái)處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)。現(xiàn)實(shí)世界中的各種實(shí)體以及實(shí)體之間的各種聯(lián)系均用關(guān)系模型來(lái)表示。簡(jiǎn)單的來(lái)說(shuō)關(guān)系型數(shù)據(jù)庫(kù)由多張能互相聯(lián)系的二維行列表組成的數(shù)據(jù)庫(kù)。
? ? ? ? 關(guān)系模型 就是指二維表格模型,因而一個(gè)關(guān)系型數(shù)據(jù)庫(kù)就是由二維表及其之間的聯(lián)系組成的一個(gè)數(shù)據(jù)組織。當(dāng)前主流的關(guān)系數(shù)據(jù)庫(kù)有Oracle,DB2,Microsoft SQL Server,Microsoft Acess,MySQL,浪潮 K-DB 等
? ? ? ? 實(shí)體關(guān)系模型 簡(jiǎn)稱(chēng) E-R 模型,是一套數(shù)據(jù)庫(kù)設(shè)計(jì)的工具,它運(yùn)用真實(shí)世界種事物與關(guān)系的觀(guān)念,來(lái)解釋稅局庫(kù)中的抽象的數(shù)據(jù)架構(gòu)。實(shí)體關(guān)系模型利用圖形的方式(實(shí)體-關(guān)系圖)來(lái)表示數(shù)據(jù)庫(kù)的概念設(shè)計(jì),有助于設(shè)計(jì)過(guò)程中的構(gòu)思及溝通討論 ?
非關(guān)系型數(shù)據(jù)庫(kù)
? ? ? ? 非關(guān)系型數(shù)據(jù)庫(kù):又稱(chēng)為NoSQL (Not Only SQL ),意為不僅僅是SQL 是一種輕量,開(kāi)源,不兼容 SQL 功能的數(shù)據(jù)庫(kù),對(duì)NoSQL 最普遍的定義為“非官聯(lián)型的” 強(qiáng)調(diào)Key-Value 存儲(chǔ)和文檔數(shù)據(jù)庫(kù)的優(yōu)點(diǎn),而不是單純的地反對(duì)RDBMS (關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng))?
4.關(guān)系型數(shù)據(jù)庫(kù)(MySQL)的特征及組成結(jié)構(gòu)介紹
關(guān)系型數(shù)據(jù)庫(kù)的發(fā)展歷程
1.層次模型
2.網(wǎng)狀模型
關(guān)系模型
? ? ? ? ?關(guān)系模型以二維標(biāo)結(jié)構(gòu)來(lái)表示實(shí)體與實(shí)體之間的聯(lián)系,關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)是一個(gè)“二維表框架” 組成的集合。每一個(gè)二維表又可稱(chēng)為關(guān)系。在關(guān)系模型中,操作的對(duì)象和結(jié)果都是二維表。
? ? ? ? 關(guān)系模型是目前最流行的數(shù)據(jù)庫(kù)模型。支持關(guān)系模型的數(shù)據(jù)庫(kù)管理系統(tǒng)稱(chēng)為關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),Access就是一種關(guān)系數(shù)據(jù)管理系統(tǒng)。圖所示為一個(gè)簡(jiǎn)單的關(guān)系模型,其中圖(a)所示為關(guān)系模式,圖(b)所示為這兩個(gè)關(guān)系模式型的關(guān)系,關(guān)系名稱(chēng)分為教師關(guān)系和課程關(guān)系,每個(gè)關(guān)系均含3個(gè)元組,其主碼均為“教師編號(hào)”。
?
?在關(guān)系模型中基本數(shù)據(jù)結(jié)構(gòu)是二維表,不想層次或網(wǎng)狀那樣的連接指針。記錄之間的聯(lián)系是通過(guò)不同關(guān)系哦中同名屬性來(lái)體現(xiàn)的。關(guān)系模型中的各個(gè)關(guān)系模式不是應(yīng)當(dāng)孤立的,也不是隨意拼湊的一堆二維表,它必須滿(mǎn)足相應(yīng)的要求。
關(guān)系式數(shù)據(jù)庫(kù)的組成結(jié)構(gòu)和名詞解釋
? ? ? ? 數(shù)據(jù)以表格的形式出現(xiàn),每行為單獨(dú)的一條記錄,每列為一個(gè)單獨(dú)的字段,許多的記錄和字段組成一張表(table) 若干的表單組成庫(kù)(database)
- 記錄(一條數(shù)據(jù)) 在數(shù)據(jù)庫(kù)當(dāng)中,表當(dāng)中的行稱(chēng)為記錄
- 字段 (id name .......)? ? 在數(shù)據(jù)庫(kù)當(dāng)中,表當(dāng)中的稱(chēng)之為字段。
- MySQL 數(shù)據(jù)類(lèi)型? ? ? ?
? ? ? ? 數(shù)據(jù)類(lèi)型用于指定特殊字段所包含數(shù)據(jù)的規(guī)則,它決定了數(shù)據(jù)保存在字段里的方式,包括分配給字段的寬度,以及值是否可以是字母,數(shù)字,日期,和時(shí)間等。任何數(shù)據(jù)或數(shù)據(jù)的組合都對(duì)于的數(shù)據(jù)類(lèi)型,用于存儲(chǔ)字母,數(shù)字,日期和時(shí)間,圖像,二進(jìn)制數(shù)據(jù)等。數(shù)據(jù)類(lèi)型是數(shù)據(jù)本身的特征,其特性被設(shè)置到表里面的字段。
? ? ? ? MySQL 常見(jiàn)基礎(chǔ)數(shù)據(jù)類(lèi)型?
? ? ? ? ? ? ? ? 1.字符串類(lèi)型 (CHAR (0-255 固定長(zhǎng)度)VARCHAR(0-255可變長(zhǎng)度))
? ? ? ? ? ? ? ? 2.數(shù)值類(lèi)型(INT(整數(shù)型)FLOATI(浮點(diǎn)型))
? ? ? ? ? ? ? ? 3.日期和時(shí)間類(lèi)型(DATE(年月日),TIME(時(shí)分秒))
- MySQL 約束類(lèi)型?
? ? ? ? 約束是一種限制,它通過(guò)對(duì)表的行或列的數(shù)據(jù)做出限制,來(lái)確保表的數(shù)據(jù)的完整性,唯一性。
1.主鍵約束?primary key 主鍵約束相當(dāng)于唯一約束+飛空約束的組合,主鍵約束不允許重復(fù),也不預(yù)序出現(xiàn)空值。每個(gè)表最多只允許一個(gè)主鍵,建立主鍵約束可以在列表級(jí)別創(chuàng)建,也可以在表示級(jí)別創(chuàng)建。當(dāng)創(chuàng)建主鍵的約束時(shí),系統(tǒng)默認(rèn)會(huì)在所有的列列組合上建立對(duì)應(yīng)的唯一索引。
2.外鍵約束? foregin key 外鍵約束時(shí)保證一個(gè)或兩個(gè)表之間的參照完整性,外鍵時(shí)構(gòu)建于一個(gè)表的兩個(gè)字段或是兩個(gè)表的兩個(gè)字段之間的參照關(guān)系
3.唯一約束 unique 唯一約束是指table 表的列或列表不能重復(fù),保證數(shù)據(jù)的唯一性。唯一性約束不允許出現(xiàn)重復(fù)的值,但是可以為多個(gè)null.同一個(gè)表可以又多個(gè)唯一約束,多個(gè)列表組合的約束。在創(chuàng)建唯一約束時(shí),如果不給唯一約束名稱(chēng),就默認(rèn)和列名相同。唯一約束不僅可以在一個(gè)表內(nèi)創(chuàng)建,而且可以同時(shí)多表創(chuàng)建組合唯一約束。
4.非空約束 not null 與默認(rèn)值 default :? 非空約束用于確保當(dāng)前列的值不為空值,非空約束只能出現(xiàn)在表對(duì)象的列上。Null 類(lèi)型特征:所有的類(lèi)型的值都可以時(shí)null 包括 int float 等數(shù)據(jù)類(lèi)型。?
- MySQL 索引??
? ? ? ? ? ? ? ? 索引是一個(gè)單獨(dú)的,物理的數(shù)據(jù)庫(kù)結(jié)構(gòu),它是某一個(gè)字段或若干字段的集合。表的存儲(chǔ)由兩部分組成,一部分用來(lái)存放數(shù)據(jù),另一部分存放索引頁(yè)面。通常,索引頁(yè)面相對(duì)于數(shù)據(jù)頁(yè)面來(lái)說(shuō)小的多。數(shù)據(jù)檢索花費(fèi)的大部分開(kāi)銷(xiāo)是磁盤(pán)讀寫(xiě),沒(méi)有索引就需要從磁盤(pán)上讀表的每一個(gè)數(shù)據(jù)頁(yè),如果有索引,則只需查找索引頁(yè)面就可以了。所以建立合理的索引,就能加速數(shù)據(jù)的檢索過(guò)程。
- MySQL 鎖??
????????數(shù)據(jù)庫(kù)是一個(gè)多用戶(hù)的共享資源。當(dāng)多個(gè)用戶(hù)并發(fā)地存取數(shù)據(jù)時(shí),在數(shù)據(jù)庫(kù)中就會(huì)產(chǎn)生多個(gè)事物同時(shí)存取同一數(shù)據(jù)地情況。若對(duì)并發(fā)操作不加控制就可能會(huì)讀取和存儲(chǔ)不正確地?cái)?shù)據(jù),破環(huán)數(shù)據(jù)庫(kù)地一致性。
? ? ? ? 加鎖是實(shí)現(xiàn)數(shù)據(jù)庫(kù)并發(fā)控制地一個(gè)非常重要的技術(shù)。當(dāng)事物在對(duì)某個(gè)數(shù)據(jù)對(duì)象進(jìn)行操作前,先向系統(tǒng)發(fā)出請(qǐng)求,對(duì)其加鎖。加鎖后事物就對(duì)該數(shù)據(jù)對(duì)象有了一定的控制,在該事務(wù)釋鎖之前,其他事物不能對(duì)此數(shù)據(jù)對(duì)象進(jìn)行更新操作。?
- MySQL 的存儲(chǔ)引擎
? ? ? ? 存儲(chǔ)引擎就是存儲(chǔ)數(shù)據(jù),建立索引,更新查詢(xún)數(shù)據(jù)等等技術(shù)的實(shí)現(xiàn)方式。存儲(chǔ)引擎是基于表的,而不是基于庫(kù)的。所以存儲(chǔ)引擎頁(yè)可以被稱(chēng)為表類(lèi)型。Oracle,SqlServer 等數(shù)據(jù)庫(kù)只有一種存儲(chǔ)引擎。MySQL提供了插件式的存儲(chǔ)引擎架構(gòu)。所以MySQL 存在多種存儲(chǔ)引擎??梢愿鶕?jù)需要使用相應(yīng)引擎,或者編寫(xiě)存儲(chǔ)引擎。
MYISAM:默認(rèn)引擎,插入和查詢(xún)速度較快,支持全文索引,不支持事務(wù),行級(jí)鎖和外鍵約束等功能。
INNODB: 支持事物,行級(jí)鎖和外鍵約束等功能
MEMORY: 工作在內(nèi)存中,通過(guò)散列字段保存數(shù)據(jù),速度快,不能永久保存數(shù)據(jù)
- 事務(wù)?(Transaction) 是并發(fā)控制的基本單位?
? ? ? ? 可以把一系列要執(zhí)行的操作稱(chēng)為事務(wù),而事務(wù)管理就是管理這些操操作要么完全執(zhí)行,要么完全不執(zhí)行
? ? ? ? 經(jīng)典案例:銀行轉(zhuǎn)賬工作,從一個(gè)賬號(hào)扣款?并使另一個(gè)賬號(hào)增款,這兩個(gè)操作要么都執(zhí)行,要么都不執(zhí)行。所以,應(yīng)該把他們看成一個(gè)事務(wù)。事務(wù)是數(shù)據(jù)庫(kù)維護(hù)數(shù)據(jù)一致性的單位,在每個(gè)事務(wù)結(jié)束時(shí),都能保存數(shù)據(jù)的一致性。
注意:mysql 中并不是所有的數(shù)據(jù)引擎都支持事務(wù)管理的,只有 innodb 支持事務(wù)管理。