通常意義上,數據庫也就是數據的集合,具體到計算機上數據庫可以是存儲器上一些文件的集合或者一些內存數據的集合。 我們通常說的MySql數據庫,sql server數據庫等等其實是數據庫管理系統,它們可以存儲數據,并提供查詢和更新數據庫中的數據的功能等等。根
通常意義上,數據庫也就是數據的集合,具體到計算機上數據庫可以是存儲器上一些文件的集合或者一些內存數據的集合。
我們通常說的MySql數據庫,sql server數據庫等等其實是數據庫管理系統,它們可以存儲數據,并提供查詢和更新數據庫中的數據的功能等等。根據數據庫如何存儲數據和如何操作數據的實現機制不同,這些數據庫之間即有區別又有共同點。
MySql數據庫是開放源代碼的關系型數據庫。目前,它可以提供的功能有:支持sql語言、子查詢、存儲過程、觸發器、視圖、索引、事務、鎖、外鍵約束和影像復制等。在后期,我們會詳細講解這些功能。
同Oracle 和SQL Server等大型數據庫系統一樣,MySql也是客戶/服務器系統并且是單進程多線程架構的數據庫。
MySql區別于其它數據庫系統的一個重要特點是支持插入式存儲引擎。
存儲引擎說白了就是如何存儲數據、如何為存儲的數據建立索引和如何更新、查詢數據等技術的實現方法。因為在關系數據庫中數據的存儲是以表的形式存儲的,所以存儲引擎也可以稱為表類型(即存儲和操作此表的類型)。
在Oracle 和SQL Server等數據庫中只有一種存儲引擎,所有數據存儲管理機制都是一樣的。而MySql數據庫提供了多種存儲引擎。用戶可以根據不同的需求為數據表選擇不同的存儲引擎,用戶也可以根據自己的需要編寫自己的存儲引擎。
MySql中有哪些存儲引擎?
當然MySql支持的表類型不止上面幾種。下面我們介紹一下如何查看和設置數據表類型。
1. 查看數據庫可以支持的存儲引擎
用show engines; 命令可以顯示當前數據庫支持的存儲引擎情況:
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. 查看表的結構等信息的若干命令
要查看表的定義結構等信息可以使用以下幾種命令:Desc[ribe] tablename; //查看數據表的結構
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; //顯示表的創建語句
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顯示表的當前狀態值
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
綜上可見,后兩種方式都可以幫助我們查看某一表的存儲引擎類型(圖中已用紅色方框標出)。
3. 設置或修改表的存儲引擎
創建數據庫表時設置存儲存儲引擎的基本語法是:
Create table tableName( columnName(列名1) type(數據類型) attri(屬性設置), columnName(列名2) type(數據類型) attri(屬性設置), ……..) engine = engineName
例如,假設要創建一個名為user的表,此表包括id,用戶名username和性別sex三個字段,并且要設置表類型為merge。則可用如下的方式創建此數據表,
create table user( id int not null auto_increment, username char(20) not null, sex char(2), primary key(id) ) engine=merge
修改存儲引擎,可以用命令Alter table tableName engine =engineName。假如,若需要將表user的存儲引擎修改為archive類型,則可使用命令alter table user engine=archive。
在本文中主要介紹了什么是MySql數據庫,并進一步引出了它的一個重要特性, 即插入式的多存儲引擎機制。然后,簡單介紹了什么是存儲引擎和MySql中幾種主要的存儲引擎。最后,介紹了如何查看數據庫支持的所有存儲引擎,如何查看數據庫表的存儲引擎類型及如何設置或修改表的存儲引擎類型。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com