mysql數(shù)據(jù)怎么存儲的 mysql數(shù)據(jù)庫存儲數(shù)據(jù)的原理

mysql數(shù)據(jù)庫的存放位置在哪里

數(shù)據(jù)庫文件默認存放位置:C:\ProgramFiles\MySQL\MySQLServer5.0\data。

站在用戶的角度思考問題,與客戶深入溝通,找到石峰網(wǎng)站設計與石峰網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站設計、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務覆蓋石峰地區(qū)。

數(shù)據(jù)庫的配置文件在C:\ProgramFiles\MySQL\MySQLServer5.0\my.ini。

在data文件夾里找到不test的數(shù)據(jù)庫文件夾和自己創(chuàng)建的文件夾是因為test數(shù)據(jù)庫是空的數(shù)據(jù)庫,用于測試使用,自己的文件夾需要去mysql數(shù)據(jù)庫尋找。

mysql數(shù)據(jù)庫文件默認存放位置:C:\ProgramFiles\MySQL\MySQLServer5.0\mysql。

MySQL是一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),MySQL數(shù)據(jù)庫系統(tǒng)使用最常用的數(shù)據(jù)庫管理語言--結(jié)構(gòu)化查詢語言(SQL)進行數(shù)據(jù)庫管理。

下面詳細介紹幾個找不同數(shù)據(jù)庫用到的命令:

1、選擇你所創(chuàng)建的數(shù)據(jù)庫

mysqlUSEMYSQLDATA;(按回車鍵出現(xiàn)Databasechanged時說明操作成功!)

2、:使用SHOW語句找出在服務器上當前存在什么數(shù)據(jù)庫

mysqlSHOWDATABASES;

3、查看現(xiàn)在的數(shù)據(jù)庫中存在什么表

mysqlSHOWTABLES;

4、顯示表的結(jié)構(gòu)。

mysqlDESCRIBEMYTABLE;

擴展資料:

mysql數(shù)據(jù)庫服務器有三個數(shù)據(jù)庫:information_schema數(shù)據(jù)庫,mysql數(shù)據(jù)庫,test數(shù)據(jù)庫。

1、nformation_schema數(shù)據(jù)庫:這個數(shù)據(jù)庫保存了mysql服務器所有數(shù)據(jù)庫的信息。比如數(shù)據(jù)庫的名、數(shù)據(jù)庫的表、訪問權(quán)限、數(shù)據(jù)庫表的數(shù)據(jù)類型,數(shù)據(jù)庫索引的信息等等。就是關(guān)于這個數(shù)據(jù)庫的點點滴滴信息都存儲在這個數(shù)據(jù)庫中。

nformation_schema數(shù)據(jù)庫是MySQL自帶的,它提供了訪問數(shù)據(jù)庫元數(shù)據(jù)的方式。什么是元數(shù)據(jù)呢?元數(shù)據(jù)是關(guān)于數(shù)據(jù)的數(shù)據(jù),如數(shù)據(jù)庫名或表名,列的數(shù)據(jù)類型,或訪問權(quán)限等。有些時候用于表述該信息的其他術(shù)語包括“數(shù)據(jù)詞典”和“系統(tǒng)目錄”。

在MySQL中,把information_schema看作是一個數(shù)據(jù)庫,確切說是信息數(shù)據(jù)庫。其中保存著關(guān)于MySQL服務器所維護的所有其他數(shù)據(jù)庫的信息。

如數(shù)據(jù)庫名,數(shù)據(jù)庫的表,表欄的數(shù)據(jù)類型與訪問權(quán)限等。在INFORMATION_SCHEMA中,有數(shù)個只讀表。它們實際上是視圖,而不是基本表,因此,將無法看到與之相關(guān)的任何文件。

2、mysql數(shù)據(jù)庫:這個數(shù)據(jù)庫中是mysql數(shù)據(jù)庫中的所有的信息表。

這個是mysql的核心數(shù)據(jù)庫,類似于sqlserver中的master表,主要負責存儲數(shù)據(jù)庫的用戶、權(quán)限設置、關(guān)鍵字等mysql自己需要使用的控制和管理信息。不可以刪除,如果對mysql不是很了解,也不要輕易修改這個數(shù)據(jù)庫里面的表信息。

3、test數(shù)據(jù)庫:空的數(shù)據(jù)庫,用于測試用。

這個是安裝時候創(chuàng)建的一個測試數(shù)據(jù)庫,和它的名字一樣,是一個完全的空數(shù)據(jù)庫,沒有任何表,可以刪除。

參考資料:百度百科-MySQL數(shù)據(jù)庫

參考資料:百度百科-mySQL

參考資料:百度百科-test

MySQL數(shù)據(jù)庫存儲引擎詳解

存儲引擎是什么?

MySQL中的數(shù)據(jù)用各種不同的技術(shù)存儲在文件(或者內(nèi)存)中 這些技術(shù)中的每一種技術(shù)都使用不同的存儲機制 索引技巧 鎖定水平并且最終提供廣泛的不同的功能和能力 通過選擇不同的技術(shù) 你能夠獲得額外的速度或者功能 從而改善你的應用的整體功能

例如 如果你在研究大量的臨時數(shù)據(jù) 你也許需要使用內(nèi)存存儲引擎 內(nèi)存存儲引擎能夠在內(nèi)存中存儲所有的表格數(shù)據(jù) 又或者 你也許需要一個支持事務處理的數(shù)據(jù)庫(以確保事務處理不成功時數(shù)據(jù)的回退能力)

這些不同的技術(shù)以及配套的相關(guān)功能在MySQL中被稱作存儲引擎(也稱作表類型) MySQL默認配置了許多不同的存儲引擎 可以預先設置或者在MySQL服務器中啟用 你可以選擇適用于服務器 數(shù)據(jù)庫和表格的存儲引擎 以便在選擇如何存儲你的信息 如何檢索這些信息以及你需要你的數(shù)據(jù)結(jié)合什么性能和功能的時候為你提供最大的靈活性

選擇如何存儲和檢索你的數(shù)據(jù)的這種靈活性是MySQL為什么如此受歡迎的主要原因 其它數(shù)據(jù)庫系統(tǒng)(包括大多數(shù)商業(yè)選擇)僅支持一種類型的數(shù)據(jù)存儲 遺憾的是 其它類型的數(shù)據(jù)庫解決方案采取的 一個尺碼滿足一切需求 的方式意味著你要么就犧牲一些性能 要么你就用幾個小時甚至幾天的時間詳細調(diào)整你的數(shù)據(jù)庫 使用MySQL 我們僅需要修改我們使用的存儲引擎就可以了

在這篇文章中 我們不準備集中討論不同的存儲引擎的技術(shù)方面的問題(盡管我們不可避免地要研究這些因素的某些方面) 相反 我們將集中介紹這些不同的引擎分別最適應哪種需求和如何啟用不同的存儲引擎 為了實現(xiàn)這個目的 在介紹每一個存儲引擎的具體情況之前 我們必須要了解一些基本的問題

如何確定有哪些存儲引擎可用

你可以在MySQL(假設是MySQL服務器 以上版本)中使用顯示引擎的命令得到一個可用引擎的列表

mysql?show?engines; ?? + + + + ?? |?Engine?????|?Support?|?Comment????????????????????????????????????????????????????| ?? + + + + ?? |?MyISAM?????|?DEFAULT?|?Default?engine?as?of?MySQL? ?with?great?performance?????| ?? |?HEAP???????|?YES?????|?Alias?for?MEMORY???????????????????????????????????????????| ?? |?MEMORY?????|?YES?????|?Hash?based ?stored?in?memory ?useful?for?temporary?tables??| ?? |?MERGE??????|?YES?????|?Collection?of?identical?MyISAM?tables??????????????????????| ?? |?MRG_MYISAM?|?YES?????|?Alias?for?MERGE????????????????????????????????????????????| ?? |?ISAM???????|?NO??????|?Obsolete?storage?engine ?now?replaced?by?MyISAM????????????| ?? |?MRG_ISAM???|?NO??????|?Obsolete?storage?engine ?now?replaced?by?MERGE?????????????| ?? |?InnoDB?????|?YES?????|?Supports?transactions ?row level?locking ?and?foreign?keys?| ?? |?INNOBASE???|?YES?????|?Alias?for?INNODB???????????????????????????????????????????| ?? |?BDB????????|?NO??????|?Supports?transactions?and?page level?locking???????????????| ?? |?BERKELEYDB?|?NO??????|?Alias?for?BDB??????????????????????????????????????????????| ?? |?NDBCLUSTER?|?NO??????|?Clustered ?fault tolerant ?memory based?tables?????????????| ?? |?NDB????????|?NO??????|?Alias?for?NDBCLUSTER???????????????????????????????????????| ?? |?EXAMPLE????|?NO??????|?Example?storage?engine?????????????????????????????????????| ?? |?ARCHIVE????|?NO??????|?Archive?storage?engine?????????????????????????????????????| ?? |?CSV????????|?NO??????|?CSV?storage?engine?????????????????????????????????????????| ?? + + + + ?? ?rows?in?set?( ?sec)??

這個表格顯示了可用的數(shù)據(jù)庫引擎的全部名單以及在當前的數(shù)據(jù)庫服務器中是否支持這些引擎

對于MySQL 以前版本 可以使用mysql show variables like have_% (顯示類似 have_% 的變量):

mysql?show?variables?like? have_% ;? ?? + + +? ?? |?Variable_name????|?Value????|? ?? + + +? ?? |?have_bdb?????????|?YES??????|? ?? |?have_crypt???????|?YES??????|? ?? |?have_innodb??????|?DISABLED?|? ?? |?have_isam????????|?YES??????|? ?? |?have_raid????????|?YES??????|? ?? |?have_symlink?????|?YES??????|? ?? |?have_openssl?????|?YES??????|? ?? |?have_query_cache?|?YES??????|? ?? + + +? ?? ?rows?in?set?( ?sec)? ??

你可以通過修改設置腳本中的選項來設置在MySQL安裝軟件中可用的引擎 如果你在使用一個預先包裝好的MySQL二進制發(fā)布版軟件 那么 這個軟件就包含了常用的引擎 然而 需要指出的是 如果你要使用某些不常用的引擎 特別是CSV RCHIVE(存檔)和BLACKHOLE(黑洞)引擎 你就需要手工重新編譯MySQL源碼

使用一個指定的存儲引擎

你可以使用很多方法指定一個要使用的存儲引擎 最簡單的方法是 如果你喜歡一種能滿足你的大多數(shù)數(shù)據(jù)庫需求的存儲引擎 你可以在MySQL設置文件中設置一個默認的引擎類型(使用storage_engine 選項)或者在啟動數(shù)據(jù)庫服務器時在命令行后面加上 default storage engine或 default table type選項

更靈活的方式是在隨MySQL服務器發(fā)布同時提供的MySQL客戶端時指定使用的存儲引擎 最直接的方式是在創(chuàng)建表時指定存儲引擎的類型 向下面這樣:

CREATE TABLE mytable (id int title char( )) ENGINE = INNODB

你還可以改變現(xiàn)有的表使用的存儲引擎 用以下語句:

ALTER TABLE mytable ENGINE = MyISAM

然而 你在以這種方式修改表格類型的時候需要非常仔細 因為對不支持同樣的索引 字段類型或者表大小的一個類型進行修改可能使你丟失數(shù)據(jù) 如果你指定一個在你的當前的數(shù)據(jù)庫中不存在的一個存儲引擎 那么就會創(chuàng)建一個MyISAM(默認的)類型的表

各存儲引擎之間的區(qū)別

為了做出選擇哪一個存儲引擎的決定 我們首先需要考慮每一個存儲引擎提供了哪些不同的核心功能 這種功能使我們能夠把不同的存儲引擎區(qū)別開來 我們一般把這些核心功能分為四類:支持的字段和數(shù)據(jù)類型 鎖定類型 索引和處理 一些引擎具有能過促使你做出決定的獨特的功能 我們一會兒再仔細研究這些具體問題

字段和數(shù)據(jù)類型

雖然所有這些引擎都支持通用的數(shù)據(jù)類型 例如整型 實型和字符型等 但是 并不是所有的引擎都支持其它的字段類型 特別是BLOG(二進制大對象)或者TEXT文本類型 其它引擎也許僅支持有限的字符寬度和數(shù)據(jù)大小

這些局限性可能直接影響到你可以存儲的數(shù)據(jù) 同時也可能會對你實施的搜索的類型或者你對那些信息創(chuàng)建的索引產(chǎn)生間接的影響 這些區(qū)別能夠影響你的應用程序的性能和功能 因為你必須要根據(jù)你要存儲的數(shù)據(jù)類型選擇對需要的存儲引擎的功能做出決策

鎖定

數(shù)據(jù)庫引擎中的鎖定功能決定了如何管理信息的訪問和更新 當數(shù)據(jù)庫中的一個對象為信息更新鎖定了 在更新完成之前 其它處理不能修改這個數(shù)據(jù)(在某些情況下還不允許讀這種數(shù)據(jù))

鎖定不僅影響許多不同的應用程序如何更新數(shù)據(jù)庫中的信息 而且還影響對那個數(shù)據(jù)的查詢 這是因為查詢可能要訪問正在被修改或者更新的數(shù)據(jù) 總的來說 這種延遲是很小的 大多數(shù)鎖定機制主要是為了防止多個處理更新同一個數(shù)據(jù) 由于向數(shù)據(jù)中插入信息和更新信息這兩種情況都需要鎖定 你可以想象 多個應用程序使用同一個數(shù)據(jù)庫可能會有很大的影響

不同的存儲引擎在不同的對象級別支持鎖定 而且這些級別將影響可以同時訪問的信息 得到支持的級別有三種:表鎖定 塊鎖定和行鎖定 支持最多的是表鎖定 這種鎖定是在MyISAM中提供的 在數(shù)據(jù)更新時 它鎖定了整個表 這就防止了許多應用程序同時更新一個具體的表 這對應用很多的多用戶數(shù)據(jù)庫有很大的影響 因為它延遲了更新的過程

頁級鎖定使用Berkeley DB引擎 并且根據(jù)上載的信息頁( KB)鎖定數(shù)據(jù) 當在數(shù)據(jù)庫的很多地方進行更新的時候 這種鎖定不會出現(xiàn)什么問題 但是 由于增加幾行信息就要鎖定數(shù)據(jù)結(jié)構(gòu)的最后 KB 當需要增加大量的行 也別是大量的小型數(shù)據(jù) 就會帶來問題

行級鎖定提供了最佳的并行訪問功能 一個表中只有一行數(shù)據(jù)被鎖定 這就意味著很多應用程序能夠更新同一個表中的不同行的數(shù)據(jù) 而不會引起鎖定的問題 只有InnoDB存儲引擎支持行級鎖定

建立索引

建立索引在搜索和恢復數(shù)據(jù)庫中的數(shù)據(jù)的時候能夠顯著提高性能 不同的存儲引擎提供不同的制作索引的技術(shù) 有些技術(shù)也許會更適合你存儲的數(shù)據(jù)類型

有些存儲引擎根本就不支持索引 其原因可能是它們使用基本表索引(如MERGE引擎)或者是因為數(shù)據(jù)存儲的方式不允許索引(例如FEDERATED或者BLACKHOLE引擎)

事務處理

事務處理功能通過提供在向表中更新和插入信息期間的可靠性 這種可靠性是通過如下方法實現(xiàn)的 它允許你更新表中的數(shù)據(jù) 但僅當應用的應用程序的所有相關(guān)操作完全完成后才接受你對表的更改 例如 在會計處理中每一筆會計分錄處理將包括對借方科目和貸方科目數(shù)據(jù)的更改 你需要要使用事務處理功能保證對借方科目和貸方科目的數(shù)據(jù)更改都順利完成 才接受所做的修改 如果任一項操作失敗了 你都可以取消這個事務處理 這些修改就不存在了 如果這個事務處理過程完成了 我們可以通過允許這個修改來確認這個操作

lishixinzhi/Article/program/MySQL/201311/29301

MySQL數(shù)據(jù)庫新特性之存儲過程入門教程

在MYSQL 中 終于引入了存儲過程這一新特性 這將大大增強MYSQL 的數(shù)據(jù)庫處理能力 在本文中 將指導讀者快速掌握MYSQL 的存儲過程的基本知識 帶領(lǐng)用戶入門

存儲過程介紹

存儲過程是一組為了完成特定功能的SQL語句集 經(jīng)編譯后存儲在數(shù)據(jù)庫中 用戶通過指定存儲過程的名字并給出參數(shù)(如果該存儲過程帶有參數(shù))來執(zhí)行它 存儲過程可由應用程序通過一個調(diào)用來執(zhí)行 而且允許用戶聲明變量 同時 存儲過程可以接收和輸出參數(shù) 返回執(zhí)行存儲過程的狀態(tài)值 也可以嵌套調(diào)用

存儲過程的優(yōu)點

作為存儲過程 有以下這些優(yōu)點

( )減少網(wǎng)絡通信量 調(diào)用一個行數(shù)不多的存儲過程與直接調(diào)用SQL語句的網(wǎng)絡通信量可能不會有很大的差別 可是如果存儲過程包含上百行SQL語句 那么其性能絕對比一條一條的調(diào)用SQL語句要高得多

( )執(zhí)行速度更快 存儲過程創(chuàng)建的時候 數(shù)據(jù)庫已經(jīng)對其進行了一次解析和優(yōu)化 其次 存儲過程一旦執(zhí)行 在內(nèi)存中就會保留一份這個存儲過程 這樣下次再執(zhí)行同樣的存儲過程時 可以從內(nèi)存中直接中讀取

( )更強的安全性 存儲過程是通過向用戶授予權(quán)限(而不是基于表) 它們可以提供對特定數(shù)據(jù)的訪問 提高代碼安全 比如防止 SQL注入

( ) 業(yè)務邏輯可以封裝存儲過程中 這樣不僅容易維護 而且執(zhí)行效率也高

當然存儲過程也有一些缺點 比如

可移植性方面 當從一種數(shù)據(jù)庫遷移到另外一種數(shù)據(jù)庫時 不少的存儲過程的編寫要進行部分修改

存儲過程需要花費一定的學習時間去學習 比如學習其語法等

在MYSQL中 推薦使用MYSQL Query Browswer()這個工具去進行存儲過程的開發(fā)和管理 下面分步驟來學習MYSQL中的存儲過程

定義存儲過程的結(jié)束符

在存儲過程中 通常要輸入很多SQL語句 而SQL語句中每個語句以分號來結(jié)束 因此要告訴存儲過程 什么位置是意味著整個存儲過程結(jié)束 所以我們在編寫存儲過程前 先定義分隔符 我們這里定義 // 為分隔符 我們使用DELIMITER //這樣的語法 就可以定義結(jié)束符了 當然你可以自己定義其他喜歡的符號

如何創(chuàng)建存儲過程

下面先看下一個簡單的例子 代碼如下

DELIMITER?//CREATEPROCEDURE?`p ` ()LANGUAGE SQLDETERMINISTICSQL SECURITY DEFINERMENT? A procedure BEGINSELECT Hello World ! ;END//

下面講解下存儲過程的組成部分

)首先在定義好終結(jié)符后 使用CREATE PROCEDURE+存儲過程名的方法創(chuàng)建存儲過程 LANGUAGE選項指定了使用的語言 這里默認是使用SQL

)DETERMINISTIC關(guān)鍵詞的作用是 當確定每次的存儲過程的輸入和輸出都是相同的內(nèi)容時 可以使用該關(guān)鍵詞 否則默認為NOT DETERMINISTIC

) SQL SECURITY關(guān)鍵詞 是表示調(diào)用時檢查用戶的權(quán)限 當值為INVOKER時 表示是用戶調(diào)用該存儲過程時檢查 默認為DEFINER 即創(chuàng)建存儲過程時檢查

) MENT部分是存儲過程的注釋說明部分

lishixinzhi/Article/program/MySQL/201404/30557

當前文章:mysql數(shù)據(jù)怎么存儲的 mysql數(shù)據(jù)庫存儲數(shù)據(jù)的原理
地址分享:http://muchs.cn/article34/ddcdise.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站小程序開發(fā)、云服務器網(wǎng)站收錄、定制網(wǎng)站、域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設