通常意義上,數(shù)據(jù)庫也就是數(shù)據(jù)的集合,具體到計算機上數(shù)據(jù)庫可以是存儲器上一些文件的集合或者一些內(nèi)存數(shù)據(jù)的集合。 我們通常說的MySql數(shù)據(jù)庫,sql server數(shù)據(jù)庫等等其實是數(shù)據(jù)庫管理系統(tǒng),它們可以存儲數(shù)據(jù),并提供查詢和更新數(shù)據(jù)庫中的數(shù)據(jù)的功能等等。根
通常意義上,數(shù)據(jù)庫也就是數(shù)據(jù)的集合,具體到計算機上數(shù)據(jù)庫可以是存儲器上一些文件的集合或者一些內(nèi)存數(shù)據(jù)的集合。
我們通常說的MySql數(shù)據(jù)庫,sql server數(shù)據(jù)庫等等其實是數(shù)據(jù)庫管理系統(tǒng),它們可以存儲數(shù)據(jù),并提供查詢和更新數(shù)據(jù)庫中的數(shù)據(jù)的功能等等。根據(jù)數(shù)據(jù)庫如何存儲數(shù)據(jù)和如何操作數(shù)據(jù)的實現(xiàn)機制不同,這些數(shù)據(jù)庫之間即有區(qū)別又有共同點。
MySql數(shù)據(jù)庫是開放源代碼的關(guān)系型數(shù)據(jù)庫。目前,它可以提供的功能有:支持sql語言、子查詢、存儲過程、觸發(fā)器、視圖、索引、事務(wù)、鎖、外鍵約束和影像復(fù)制等。在后期,我們會詳細(xì)講解這些功能。
同Oracle 和SQL Server等大型數(shù)據(jù)庫系統(tǒng)一樣,MySql也是客戶/服務(wù)器系統(tǒng)并且是單進(jìn)程多線程架構(gòu)的數(shù)據(jù)庫。
MySql區(qū)別于其它數(shù)據(jù)庫系統(tǒng)的一個重要特點是支持插入式存儲引擎。
存儲引擎說白了就是如何存儲數(shù)據(jù)、如何為存儲的數(shù)據(jù)建立索引和如何更新、查詢數(shù)據(jù)等技術(shù)的實現(xiàn)方法。因為在關(guān)系數(shù)據(jù)庫中數(shù)據(jù)的存儲是以表的形式存儲的,所以存儲引擎也可以稱為表類型(即存儲和操作此表的類型)。
在Oracle 和SQL Server等數(shù)據(jù)庫中只有一種存儲引擎,所有數(shù)據(jù)存儲管理機制都是一樣的。而MySql數(shù)據(jù)庫提供了多種存儲引擎。用戶可以根據(jù)不同的需求為數(shù)據(jù)表選擇不同的存儲引擎,用戶也可以根據(jù)自己的需要編寫自己的存儲引擎。
MySql中有哪些存儲引擎?
當(dāng)然MySql支持的表類型不止上面幾種。下面我們介紹一下如何查看和設(shè)置數(shù)據(jù)表類型。
1. 查看數(shù)據(jù)庫可以支持的存儲引擎
用show engines; 命令可以顯示當(dāng)前數(shù)據(jù)庫支持的存儲引擎情況:
mysql> show engines; +------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +------------+---------+----------------------------------------------------------------+--------------+------+------------+ | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | MyISAM | YES | Default engine as of MySQL 3.23 with great performance | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | +------------+---------+----------------------------------------------------------------+--------------+------+------------+ 8 rows in set
2. 查看表的結(jié)構(gòu)等信息的若干命令
要查看表的定義結(jié)構(gòu)等信息可以使用以下幾種命令:Desc[ribe] tablename; //查看數(shù)據(jù)表的結(jié)構(gòu)
mysql> desc test; +-------+-----------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-----------------------+------+-----+---------+----------------+ | id | mediumint(8) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(20) | NO | | NULL | | +-------+-----------------------+------+-----+---------+----------------+ 2 rows in set
show create table tablename; //顯示表的創(chuàng)建語句
mysql> show create table test; +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | test | CREATE TABLE `test` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=latin1 | +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set
show table status like 'tablename'\G顯示表的當(dāng)前狀態(tài)值
mysql> show table status like 'test'; +------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | +------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+ | test | InnoDB | 10 | Compact | 13 | 1260 | 16384 | 0 | 0 | 9437184 | 14 | 2010-01-21 08:46:03 | NULL | NULL | latin1_swedish_ci | NULL | | | +------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+---------+ 1 row in set
綜上可見,后兩種方式都可以幫助我們查看某一表的存儲引擎類型(圖中已用紅色方框標(biāo)出)。
3. 設(shè)置或修改表的存儲引擎
創(chuàng)建數(shù)據(jù)庫表時設(shè)置存儲存儲引擎的基本語法是:
Create table tableName( columnName(列名1) type(數(shù)據(jù)類型) attri(屬性設(shè)置), columnName(列名2) type(數(shù)據(jù)類型) attri(屬性設(shè)置), ……..) engine = engineName
例如,假設(shè)要創(chuàng)建一個名為user的表,此表包括id,用戶名username和性別sex三個字段,并且要設(shè)置表類型為merge。則可用如下的方式創(chuàng)建此數(shù)據(jù)表,
create table user( id int not null auto_increment, username char(20) not null, sex char(2), primary key(id) ) engine=merge
修改存儲引擎,可以用命令A(yù)lter table tableName engine =engineName。假如,若需要將表user的存儲引擎修改為archive類型,則可使用命令alter table user engine=archive。
在本文中主要介紹了什么是MySql數(shù)據(jù)庫,并進(jìn)一步引出了它的一個重要特性, 即插入式的多存儲引擎機制。然后,簡單介紹了什么是存儲引擎和MySql中幾種主要的存儲引擎。最后,介紹了如何查看數(shù)據(jù)庫支持的所有存儲引擎,如何查看數(shù)據(jù)庫表的存儲引擎類型及如何設(shè)置或修改表的存儲引擎類型。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com