MySQL中庫(kù)的基本操作指南(推薦!)
目錄
- 查看數(shù)據(jù)庫(kù)
- 創(chuàng)建數(shù)據(jù)庫(kù)
- 刪除數(shù)據(jù)庫(kù)
- 字符集/字符校驗(yàn)
- 修改數(shù)據(jù)庫(kù)
- 幫助命令
- 數(shù)據(jù)庫(kù)存儲(chǔ)引擎
- 查看默認(rèn)存儲(chǔ)引擎
- 存儲(chǔ)引擎簡(jiǎn)介
- 存儲(chǔ)引擎的選擇
- 總結(jié)
查看數(shù)據(jù)庫(kù)
語(yǔ)法格式:
SHOW {DATABASES | SCHEMAS} [LIKE "pattern" | WHERE expr]
#查看全部數(shù)據(jù)庫(kù)
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys| +--------------------+ 4 rows in set (0.00 sec)
show databases [like "庫(kù)名"| where 表達(dá)式];
例:查看有my的數(shù)據(jù)庫(kù)
show databases like "my%"
創(chuàng)建數(shù)據(jù)庫(kù)
MySQL安裝好之后,?先需要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù),這是使?MySQL各種功能的前提。本章將詳細(xì)介紹數(shù)據(jù)的基本操作,主要內(nèi)容包括:創(chuàng)建數(shù)據(jù)庫(kù)、刪除數(shù)據(jù)庫(kù)、不同類(lèi)型的數(shù)據(jù)存儲(chǔ)引擎和存儲(chǔ)引擎的選擇。
MySQL安裝完成之后,將會(huì)在其data?錄下?動(dòng)創(chuàng)建?個(gè)必需的數(shù)據(jù)庫(kù),可以使?SHOW DATABASES; 語(yǔ)句來(lái)查看當(dāng)前所有存在的數(shù)據(jù)庫(kù),如下。
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys| +--------------------+ 4 rows in set (0.01 sec)
可以看到,數(shù)據(jù)庫(kù)列表中包含了4個(gè)數(shù)據(jù)庫(kù),mysql是必需的,它描述?戶(hù)訪(fǎng)問(wèn)權(quán)限,?戶(hù)經(jīng)常利?test數(shù)據(jù)庫(kù)做測(cè)試的?作,其他數(shù)據(jù)庫(kù)將在后?的章節(jié)中介紹。
創(chuàng)建數(shù)據(jù)庫(kù)是在系統(tǒng)磁盤(pán)上劃分?塊區(qū)域?于數(shù)據(jù)的存儲(chǔ)和管理,如果管理員在設(shè)置權(quán)限的時(shí)候?yàn)?戶(hù)創(chuàng)建了數(shù)據(jù)庫(kù),則可以直接使?,否則,需要??創(chuàng)建數(shù)據(jù)庫(kù)。MySQL中創(chuàng)建數(shù)據(jù)庫(kù)的基本SQL語(yǔ)句格式為:
CREATE DATABASE [IF NOT EXISTS] <數(shù)據(jù)庫(kù)名> [[DEFAULT] CHARACTER SET <字符集名>] [[DEFAULT] COLLATE <校對(duì)規(guī)則名>];
<數(shù)據(jù)庫(kù)名>:創(chuàng)建數(shù)據(jù)庫(kù)的名稱(chēng)。MySQL 的數(shù)據(jù)存儲(chǔ)區(qū)將以?錄?式表示 MySQL數(shù)據(jù)庫(kù),因此數(shù)據(jù)庫(kù)名稱(chēng)必須符合操作系統(tǒng)的?件夾命名規(guī)則,注意在 MySQL 中不區(qū)分??寫(xiě)。
IF NOT EXISTS:在創(chuàng)建數(shù)據(jù)庫(kù)之前進(jìn)?判斷,只有該數(shù)據(jù)庫(kù)?前尚不存在時(shí)才能執(zhí)?操作。此選項(xiàng)可以?來(lái)避免數(shù)據(jù)庫(kù)已經(jīng)存在?重復(fù)創(chuàng)建的錯(cuò)誤。
[DEFAULT] CHARACTER SET:指定數(shù)據(jù)庫(kù)的默認(rèn)字符集。
mysql> create database test_db; Query OK, 1 row affected (0.00 sec) ? mysql> show create database test_db; +----------+--------------------------------------------------------------------+ | Database | Create Database| +----------+--------------------------------------------------------------------+ | test_db | CREATE DATABASE `test_db` /*!40100 DEFAULT CHARACTER SET latin1 */ | +----------+--------------------------------------------------------------------+ 1 row in set (0.00 sec)
刪除數(shù)據(jù)庫(kù)
刪除數(shù)據(jù)庫(kù)是將已經(jīng)存在的數(shù)據(jù)庫(kù)從磁盤(pán)空間上清除,清除之后,數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)也將?起被刪除。刪除數(shù)據(jù)庫(kù)語(yǔ)句和創(chuàng)建數(shù)據(jù)庫(kù)的命令相似,MySQL中刪除數(shù)據(jù)庫(kù)的基本語(yǔ)法格式如下。
DROP {DATABASE | SCHEMA} [IF EXISTS] 庫(kù)名
注:IF EXISTS表示如果存在,則刪除庫(kù)。
如果指定的數(shù)據(jù)庫(kù)不存在,則刪除出錯(cuò)。
mysql> drop database test_db; Query OK, 0 rows affected (0.02 sec)
字符集/字符校驗(yàn)
#查看字符校驗(yàn)
show collation;
#查看字符集
show character set;
#查看字符集
SHOW CHARACTER SET [LIKE "pattern" | WHERE expr]show character set [like "字符集名" | where 表達(dá)式];
#查看字符校驗(yàn)
SHOW COLLATION [LIKE "pattern" | WHERE expr] show collation [like "字符校驗(yàn)名" | where 表達(dá)式];
修改數(shù)據(jù)庫(kù)
ALTER {DATABASE | SCHEMA} [db_name] alter_option ... alter_option: { [DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name }
#修改庫(kù)字符集
alter database 庫(kù)名 default character set = 字符集名;
#修改字符校驗(yàn)
alter database test collate 字符校驗(yàn)名;
幫助命令
#幫助
help
#幫助分類(lèi)
help contents
#查看定義語(yǔ)言
help data definition
#查看操作語(yǔ)言
help data manipulation
#查看創(chuàng)建庫(kù)格式
help create database
數(shù)據(jù)庫(kù)存儲(chǔ)引擎
數(shù)據(jù)庫(kù)存儲(chǔ)引擎是數(shù)據(jù)庫(kù)底層軟件組件,數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)使?數(shù)據(jù)引擎進(jìn)?創(chuàng)建、查詢(xún)、更新和刪除數(shù)據(jù)操作。不同的存儲(chǔ)引擎提供不同的存儲(chǔ)機(jī)制、索引技巧、鎖定?平等功能,使?不同的存儲(chǔ)引擎,還可以獲得特定的功能。現(xiàn)在許多不同的數(shù)據(jù)庫(kù)管理系統(tǒng)都?持多種不同的數(shù)據(jù)引擎。MySQL的核?就是存儲(chǔ)引擎。
2.3.1 MySQL存儲(chǔ)引擎簡(jiǎn)介MySQL提供了多個(gè)不同的存儲(chǔ)引擎,包括處理事務(wù)安全表的引擎和處理?事務(wù)安全表的引擎。在MySQL中,不需要在整個(gè)服務(wù)器中使??種引擎,針對(duì)具體要求可以對(duì)每?個(gè)表使?不同的存儲(chǔ)引擎。MySQL5.5?持的存儲(chǔ)引擎有:InnoDB、MyISAM、Memory等。
mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | CSV| YES | CSV storage engine | NO | NO | NO | | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES| | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 9 rows in set (0.01 sec)
查看默認(rèn)存儲(chǔ)引擎
mysql> show variables like "default_storage_engine"; +------------------------+--------+ | Variable_name | Value | +------------------------+--------+ | default_storage_engine | InnoDB | +------------------------+--------+ 1 row in set (0.06 sec)
存儲(chǔ)引擎簡(jiǎn)介
- 存儲(chǔ)引擎說(shuō)?了就是數(shù)據(jù)存儲(chǔ)的格式,不同的存儲(chǔ)引擎功能不同,占?的空間??不同,讀取性能也不同。
- 數(shù)據(jù)庫(kù)存儲(chǔ)引擎是數(shù)據(jù)庫(kù)底層軟件組件,不同的存儲(chǔ)引擎提供不同的存儲(chǔ)機(jī)制。
- 在 MySQL 中,不需要在整個(gè)服務(wù)器中使?同?種存儲(chǔ)引擎,可以對(duì)每?個(gè)表使?不同的存儲(chǔ)引擎。
- MySQL ?持多種存儲(chǔ)引擎,如 InnoDB 、MyISAM 、Memory 、Merge 、Archive 、CSV 、Federated 等等。
MyISAM 存儲(chǔ)引擎特點(diǎn)
- MySQL 5.5 之前使? MyISAM 引擎,MySQL 5.5 之后使? InnoDB 引擎。
- MyISAM 引擎讀取速度較快,占?資源相對(duì)較少,不?持事務(wù),不?持外鍵約束,但?持全?索引。
- 讀寫(xiě)互相阻塞,也就是說(shuō)讀數(shù)據(jù)的時(shí)候你就不能寫(xiě)數(shù)據(jù),寫(xiě)數(shù)據(jù)的時(shí)候你就不能讀數(shù)據(jù)。
- MyISAM 引擎只能緩存索引,?不能緩存數(shù)據(jù)。
MyISAM 適?場(chǎng)景
- 不需要事務(wù)?持的業(yè)務(wù),例如轉(zhuǎn)賬就不?。
- 適?于讀數(shù)據(jù)?較多的業(yè)務(wù),不適?于讀寫(xiě)頻繁的業(yè)務(wù)。
- 并發(fā)相對(duì)較低、數(shù)據(jù)修改相對(duì)較少的業(yè)務(wù)。
- 硬件資源?較差的機(jī)器可以考慮使? MyISAM 引擎。
InnoDB 存儲(chǔ)引擎特點(diǎn)
- 事務(wù)型數(shù)據(jù)庫(kù)的?選引擎,?持事務(wù)安全表,?持?鎖定和外鍵,MySQL5.5.5 版本之后,InnoDB 作為默認(rèn)存儲(chǔ)引擎。
- 具有提交、回滾和崩潰恢復(fù)能?的事務(wù)安全存儲(chǔ)引擎,能處理巨?數(shù)據(jù)量,性能及效率?,完全?持外鍵完整性約束。
- 具有?常?效的緩存特性,能緩存索引也能緩存數(shù)據(jù),對(duì)硬件要求?較?。
- 使? InnoDB 時(shí),將在 MySQL 數(shù)據(jù)?錄下創(chuàng)建?個(gè)名為 ibdata1 的 10MB ??的?動(dòng)擴(kuò)展數(shù)據(jù)?件,以及兩個(gè)名為 ib_logfile0 和 ib_logfile1 的 5MB ??的?志?件。
InnoDB 適?場(chǎng)景
- 需要事務(wù)?持的業(yè)務(wù)、?并發(fā)的業(yè)務(wù)。
- 數(shù)據(jù)更新較為頻繁的場(chǎng)景,?如 BBS、SNS、微博等。
- 數(shù)據(jù)?致性要求較?的業(yè)務(wù),?如充值轉(zhuǎn)賬、銀?卡轉(zhuǎn)賬。
Memory 存儲(chǔ)引擎特點(diǎn)
- Memory 存儲(chǔ)引擎將表中的數(shù)據(jù)存儲(chǔ)到內(nèi)存中,為查詢(xún)和引?其他表數(shù)據(jù)提供快速訪(fǎng)問(wèn)。
- Memory 存儲(chǔ)引擎執(zhí)? HASH 和 BTREE 索引,不?持 BLOB 和 TEXT 列,?持 AUTO_INCREMENT 列和對(duì)可包含 NULL 值得列的索引。
- 當(dāng)不再需要 Memory 表的內(nèi)容時(shí),要釋放被 Memory 表使?的內(nèi)存,應(yīng)該執(zhí)?DELETE FROM 或 TRUNCATE TABLE ,或者刪除整個(gè)表。
存儲(chǔ)引擎的選擇
- 如果要提供提交、回滾和崩潰恢復(fù)能?的事務(wù)安全能?,并要求實(shí)現(xiàn)并發(fā)控制,InnoDB 是個(gè)很好的選擇。
- 如果數(shù)據(jù)表主要?來(lái)插?和查詢(xún)記錄,則 MyISAM 引擎能提供較?的處理效率。
- 如果只是臨時(shí)存放數(shù)據(jù),數(shù)據(jù)量不?,并且不需要較?的安全性,可以選擇將數(shù)據(jù)保存在內(nèi)存中的 Memory 引擎,MySQL 使?該引擎作為臨時(shí)表,存放查詢(xún)的中間結(jié)果。
- 如果只有 INSERT 和 SELECT 操作,可以選擇 Archive 引擎,?持?并發(fā)的插?操作,如記錄?志信息可以使? Archive 引擎。
功能
MyISAM
Memory
InnoDB
存儲(chǔ)限制
256TB
RAM
64TB
?持事務(wù)
no
no
yes
支持全文索引
yes
no
no
支持?jǐn)?shù)索引
yes
yes
yes
支持哈希緩存
no
yes
no
支持?jǐn)?shù)據(jù)緩存
no
N/A
yes
支持外鍵
no
no
yes
總結(jié)
在mysql中,每個(gè)數(shù)據(jù)庫(kù)最多可創(chuàng)建20億個(gè)表,?個(gè)表允許定義1024列,每?的最??度為8092字節(jié)(不包括?本和圖像類(lèi)型的?度)。
當(dāng)表中定義有varchar、nvarchar或varbinary類(lèi)型列時(shí),如果向表中插?的數(shù)據(jù)?超過(guò)8092字節(jié)時(shí)將導(dǎo)致語(yǔ)句失敗,并產(chǎn)?錯(cuò)誤信息。SQL Server對(duì)每個(gè)表中?的數(shù)量沒(méi)有直接限制,但它受數(shù)據(jù)庫(kù)存儲(chǔ)空間的限制。
每個(gè)數(shù)據(jù)庫(kù)的最?空間1048516TB,所以?個(gè)表可?的最?空間為1048516TB減去數(shù)據(jù)庫(kù)類(lèi)系統(tǒng)表和其它數(shù)據(jù)庫(kù)對(duì)象所占?的空間。理論上?限? 就看你硬?夠不夠? ?多數(shù)情況先是你的硬?不夠。
到此這篇關(guān)于MySQL中庫(kù)的基本操作指南的文章就介紹到這了,更多相關(guān)MySQL庫(kù)的基本操作內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!
