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安裝好之后,?先需要?jiǎng)?chuàng)建數(shù)據(jù)庫,這是使?MySQL各種功能的前提。本章將詳細(xì)介紹數(shù)據(jù)的基本操作,主要內(nèi)容包括:創(chuàng)建數(shù)據(jù)庫、刪除數(shù)據(jù)庫、不同類型的數(shù)據(jù)存儲(chǔ)引擎和存儲(chǔ)引擎的選擇。
MySQL安裝完成之后,將會(huì)在其data?錄下?動(dòng)創(chuàng)建?個(gè)必需的數(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個(gè)數(shù)據(jù)庫,mysql是必需的,它描述?戶訪問權(quán)限,?戶經(jīng)常利?test數(shù)據(jù)庫做測試的?作,其他數(shù)據(jù)庫將在后?的章節(jié)中介紹。
創(chuàng)建數(shù)據(jù)庫是在系統(tǒng)磁盤上劃分?塊區(qū)域?于數(shù)據(jù)的存儲(chǔ)和管理,如果管理員在設(shè)置權(quán)限的時(shí)候?yà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 <校對(duì)規(guī)則名>];
<數(shù)據(jù)庫名>:創(chuàng)建數(shù)據(jù)庫的名稱。MySQL 的數(shù)據(jù)存儲(chǔ)區(qū)將以?錄?式表示 MySQL數(shù)據(jù)庫,因此數(shù)據(jù)庫名稱必須符合操作系統(tǒng)的?件夾命名規(guī)則,注意在 MySQL 中不區(qū)分??寫。
IF NOT EXISTS:在創(chuàng)建數(shù)據(jù)庫之前進(jìn)?判斷,只有該數(shù)據(jù)庫?前尚不存在時(shí)才能執(zhí)?操作。此選項(xiàng)可以?來避免數(shù)據(jù)庫已經(jīng)存在?重復(fù)創(chuàng)建的錯(cuò)誤。
[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ù)庫不存在,則刪除出錯(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ù)庫
ALTER {DATABASE | SCHEMA} [db_name]
alter_option ...
alter_option: {
[DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name
}#修改庫字符集
alter database 庫名 default character set = 字符集名;
#修改字符校驗(yàn)
alter database test collate 字符校驗(yàn)名;
幫助命令
#幫助
help
#幫助分類
help contents
#查看定義語言
help data definition
#查看操作語言
help data manipulation
#查看創(chuàng)建庫格式
help create database
數(shù)據(jù)庫存儲(chǔ)引擎
數(shù)據(jù)庫存儲(chǔ)引擎是數(shù)據(jù)庫底層軟件組件,數(shù)據(jù)庫管理系統(tǒng)(DBMS)使?數(shù)據(jù)引擎進(jìn)?創(chuàng)建、查詢、更新和刪除數(shù)據(jù)操作。不同的存儲(chǔ)引擎提供不同的存儲(chǔ)機(jī)制、索引技巧、鎖定?平等功能,使?不同的存儲(chǔ)引擎,還可以獲得特定的功能?,F(xiàn)在許多不同的數(shù)據(jù)庫管理系統(tǒng)都?持多種不同的數(shù)據(jù)引擎。MySQL的核?就是存儲(chǔ)引擎。
2.3.1 MySQL存儲(chǔ)引擎簡介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ǔ)引擎簡介
- 存儲(chǔ)引擎說?了就是數(shù)據(jù)存儲(chǔ)的格式,不同的存儲(chǔ)引擎功能不同,占?的空間??不同,讀取性能也不同。
- 數(shù)據(jù)庫存儲(chǔ)引擎是數(shù)據(jù)庫底層軟件組件,不同的存儲(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ù),不?持外鍵約束,但?持全?索引。
- 讀寫互相阻塞,也就是說讀數(shù)據(jù)的時(shí)候你就不能寫數(shù)據(jù),寫數(shù)據(jù)的時(shí)候你就不能讀數(shù)據(jù)。
- MyISAM 引擎只能緩存索引,?不能緩存數(shù)據(jù)。
MyISAM 適?場景
- 不需要事務(wù)?持的業(yè)務(wù),例如轉(zhuǎn)賬就不?。
- 適?于讀數(shù)據(jù)?較多的業(yè)務(wù),不適?于讀寫頻繁的業(yè)務(wù)。
- 并發(fā)相對(duì)較低、數(shù)據(jù)修改相對(duì)較少的業(yè)務(wù)。
- 硬件資源?較差的機(jī)器可以考慮使? MyISAM 引擎。
InnoDB 存儲(chǔ)引擎特點(diǎn)
- 事務(wù)型數(shù)據(jù)庫的?選引擎,?持事務(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 適?場景
- 需要事務(wù)?持的業(yè)務(wù)、?并發(fā)的業(yè)務(wù)。
- 數(shù)據(jù)更新較為頻繁的場景,?如 BBS、SNS、微博等。
- 數(shù)據(jù)?致性要求較?的業(yè)務(wù),?如充值轉(zhuǎn)賬、銀?卡轉(zhuǎn)賬。
Memory 存儲(chǔ)引擎特點(diǎn)
- Memory 存儲(chǔ)引擎將表中的數(shù)據(jù)存儲(chǔ)到內(nèi)存中,為查詢和引?其他表數(shù)據(jù)提供快速訪問。
- 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ù)表主要?來插?和查詢記錄,則 MyISAM 引擎能提供較?的處理效率。
- 如果只是臨時(shí)存放數(shù)據(jù),數(shù)據(jù)量不?,并且不需要較?的安全性,可以選擇將數(shù)據(jù)保存在內(nèi)存中的 Memory 引擎,MySQL 使?該引擎作為臨時(shí)表,存放查詢的中間結(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ù)庫最多可創(chuàng)建20億個(gè)表,?個(gè)表允許定義1024列,每?的最??度為8092字節(jié)(不包括?本和圖像類型的?度)。
當(dāng)表中定義有varchar、nvarchar或varbinary類型列時(shí),如果向表中插?的數(shù)據(jù)?超過8092字節(jié)時(shí)將導(dǎo)致語句失敗,并產(chǎn)?錯(cuò)誤信息。SQL Server對(duì)每個(gè)表中?的數(shù)量沒有直接限制,但它受數(shù)據(jù)庫存儲(chǔ)空間的限制。
每個(gè)數(shù)據(jù)庫的最?空間1048516TB,所以?個(gè)表可?的最?空間為1048516TB減去數(shù)據(jù)庫類系統(tǒng)表和其它數(shù)據(jù)庫對(duì)象所占?的空間。理論上?限? 就看你硬?夠不夠? ?多數(shù)情況先是你的硬?不夠。
到此這篇關(guān)于MySQL中庫的基本操作指南的文章就介紹到這了,更多相關(guān)MySQL庫的基本操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL定時(shí)任務(wù)EVENT事件的使用方法
本文主要介紹了MySQL定時(shí)任務(wù)EVENT事件的使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
mysql 無限級(jí)分類實(shí)現(xiàn)思路
關(guān)于該問題,暫時(shí)自己還沒有深入研究,在網(wǎng)上找到幾種解決方案,各有優(yōu)缺點(diǎn)。2011-08-08
MySQL中(JOIN/ORDER BY)語句的查詢過程及優(yōu)化方法
sql語句性能達(dá)不到你的要求,執(zhí)行效率讓你忍無可忍,一般會(huì)造成很多影響。那么我們?nèi)绾谓鉀Q這些問題呢,下面由小編來和大家簡單講下2019-05-05
Mysql獲取id最大值、表的記錄總數(shù)等相關(guān)問題的方法匯總
在做網(wǎng)站開發(fā)時(shí),我們也許會(huì)想要取得mysql里id最大的一條記錄,這個(gè)其實(shí)很簡單。這篇文章給大家整理了獲取一個(gè)表的記錄數(shù)、獲取一個(gè)表的最大id、獲取一個(gè)表的auto_increment值等相關(guān)問題的答案,有需要的朋友們可以參考借鑒。2016-09-09
Windows下mysql?8.0.28?安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了Windows下mysql?8.0.28?安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
mysql獲取group by的總記錄行數(shù)另類方法
mysql獲取group by內(nèi)部可以獲取到某字段的記錄分組統(tǒng)計(jì)總數(shù),而無法統(tǒng)計(jì)出分組的記錄數(shù),下面有個(gè)可行的方法,大家可以看看2014-10-10
MySQL清空數(shù)據(jù)表的方法實(shí)例與分析
這篇文章給大家詳細(xì)介紹了MySQL清空數(shù)據(jù)表的方法,文中給出了實(shí)例代碼,對(duì)大家學(xué)習(xí)使用MySQL具有一定的參考借鑒價(jià)值,有需要的可以參考借鑒,下面來一起看看吧。2016-10-10

