在dbms出現之前(上世紀60年代),資料管理都是靠檔案來實現,而檔案管理的缺陷特別多:
檔案儲存的機制:因此,資料管理的需求催生了資料庫管理系統的出現,稱之為dbms(date base manager system),資料模型分為三種:對使用者看來就是乙個儲存了很多文字行資料的邏輯虛擬實體,稱之為標示層;
存放在磁碟上的是元資料和存放在資料塊上的資料,稱之為物理層。
在這兩個之間有乙個建立對應關係的邏輯層,是檔案系統,檔案系統類似於標示層和物理層之間的儲存引擎。
常見的關係模型:
結構化資料模型:關係型資料管理系統稱之為rdbmsroot:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
半結構化資料模型:
name:age:gender
name:uid:gid
這種模型,可以使用標籤來標示,既把資料存下來,把資料的屬性也存下來;具體方式:
jerry
46:
rdbms具有的子系統:
標示層:在使用者看來,資料庫就是:庫、表、索引、檢視等,最常見的就是表。
邏輯層:將表轉換儲存成資料塊上的資料檔案,叫儲存引擎;
物理層:其實質還是資料檔案,包含元資料和資料檔案,不能簡單的被開啟,需要有直譯器開啟(就是邏輯層的儲存引擎)。
關係型資料庫中的關係運算:
完成儲存需要儲存管理器,需要具備的功能:
完成查詢需要查詢管理器,負責接收和理解使用者的查詢請求,並將使用者的請求提交給儲存管理器,來實現真正的資料管理,需要具備的元件功能:
sql查詢語句:
20世紀70年代,sql前身sequel(結構化查詢語言)出現,是為system r作業系統提供的語法規則。後來改名sql。ansi發布了sql標準:sql86、sql89、sql92、sql99、sql03、sql08等,不同的sql標準規範的sql命令有所不同。
mysql使用單程序,多執行緒模型。為每個請求建立乙個執行緒,每個執行緒處理唯一乙個請求(避免許可權交叉)。
mysql執行緒分類:
mysql只有乙個程序,所有請求只是建立執行緒
sql:structure query language結構化查詢語言,在ibm的system r上誕生,當時ibm為了互動,開發了一套介面,就是sql的前身。
ingres:加州大學伯克利分校研究出來的比較成熟的關係型資料管理系統。oracle,sybase相繼出現。
snsi制定了sql標準,稱之為ansi-sql:
乙個sql語言的語句組成:ddl、dml、完整性定義語言(屬於ddl的一部分)、檢視定義語言、事務控制語言、嵌入式sql(嵌入其他開發語言)、動態sql、dcl等。
使用程式語言如何與rdbms互動:
嵌入是sql:與動態sql相思,使用sql的邏輯,但其語言必須在程式編譯時完全確定,由欲處理器進行處理廣義上看,mysql包含以下組成部分:動態sql:程式語言使用函式(mysql_connect())或者方法與rdbms伺服器建立連線,並進行互動,通過建立的連線向sql伺服器傳送查詢語句,並將查詢結果儲存至變數中進行處理;
mysql的儲存引擎屬於外掛程式式儲存引擎(不同於oracle):多元化的儲存引擎,更加靈活的實現從物理層轉化為標示層。在mysql5.5.8之前預設儲存引擎是mylsam,不支援事務;之後(pracle收購了mysql之後)預設儲存引擎變成innodb,支援事務。
磁碟被檔案系統分成塊,資料庫中資料是表中的行資料。如果每個資料行是定長,就可以確定每個資料塊存多少行資料。如果資料行是變長,用乙個塊頭儲存乙個塊中含有多少行,是否由空白(包括空白位置等)
當對磁碟中資料進行i/o操作(原子操作),因為磁碟屬於塊裝置,所以讀表中某一行資料,就會把該行所在的資料塊全部快取到記憶體中。
在磁碟塊的基礎上,可以將多個磁碟塊組成乙個data block(資料塊),由儲存引擎負責管理。
檔案記錄組織:表分為:表結構定義檔案、表資料檔案堆檔案組織:一條記錄可以放在檔案中的任何地方
順序檔案組織:按照某乙個字段(搜尋碼)值為序,進行存放
雜湊檔案組織:人為的將表進行分片,分成多個子容器(稱之為桶,由編號),根據表中資料的字段屬性,進行雜湊運算,相同運算結果的資料字段放在同乙個子容器中(比如說,年齡對四取餘,同餘放在乙個桶中)。當然雜湊演算法要盡可能保證桶中資料均勻。
通常情況下乙個表儲存為乙個單獨的檔案;但是有的儲存引擎可能將多個表儲存在乙個檔案中,這就需要用到表空間(table space),用來實現將多個表資料存放在乙個檔案中的機制,類似於lv(邏輯卷)。
資料字典:在資料庫中將各種關係的元資料稱之為資料字典。如表名、欄位名稱、字段型別、長度、檢視、完整性約束甚至使用者名稱、許可權、密碼等都存放在資料字典中。
如果要載入的資料塊總和大與記憶體緩衝區,可以按照某種置換策略,將用的少(最近最少使用)的資料塊去除,由緩衝器管理器來負責資料塊的緩衝。置換策略可以分級別:不允許置換、置換門閥等
mysql 第一天 MySQL 系列第一天
mysql 系列第一天這篇文章是黑馬程式設計師 mysql 教程的筆記,好好學習哦。和 mysql 資料庫的互動 客戶端單向連線認證 連線伺服器,認證身份。mysql 資料庫屬於 c s 架構,所以開啟伺服器程式後,需要通過客戶端連線它。mysql 會自帶乙個客戶端程式,可以直接輸入賬號和密碼即可連...
第一天MySQL學習
資料庫的管理 顯示所有資料庫show databases 使用資料庫use databasename 資料庫建立create database dbname 資料庫刪除drop database dbname 表的管理 顯示所有表show tables 建立表create table 顯示表定義原始...
MySQL學習筆記第一天
1.常用的sql語句 1 增加 insert into 表 values 值,值,2 刪除 delete from 表 刪除所有的記錄行 delete from 表 where 欄位名 內容 刪除滿足條件的記錄行 3 改 update 表 set 列 值,列 值 where 欄位名 內容 4 查詢 ...