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