您好,登錄后才能下訂單哦!
MySQL命令主要分為以下幾類:
DML:Data Manapulate Language: 數(shù)據(jù)操作語言(操作表中數(shù)據(jù))
INSERT, REPLACE, UPDATE, DELETE
DDL:Data Defination Lanuage: 數(shù)據(jù)定義語言(操作表)
CREATE, ALTER, DROP
DCL:Data Control Language: 數(shù)據(jù)控制語言
GRANT, REVOKE
DQL:Data Query Language:數(shù)據(jù)查詢語言
SELECT,WHERE,ORDER BY,GROUPBY,HAVING
TPL:事物處理語言
BEGIN,TRANSACTION,COMMIT
2.1、創(chuàng)建數(shù)據(jù)庫
MySQL安裝完成后,將在其data目錄下自動創(chuàng)建幾個必須的數(shù)據(jù)庫,可以使用SHOW DATABASES語句來查看當前所有存在的數(shù)據(jù)庫。
mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec)
上面的數(shù)據(jù)庫中mysql是必須的,它描述用戶訪問權限,用戶可以利用test數(shù)據(jù)庫來做測試工作。
創(chuàng)建數(shù)據(jù)庫是在系統(tǒng)磁盤上劃分一塊用于數(shù)據(jù)的存儲和管理,如果管理員在設置權限的時候為用戶創(chuàng)建了數(shù)據(jù)庫,則可以直接使用,否則,需要自己創(chuàng)建數(shù)據(jù)庫。MySQL創(chuàng)建數(shù)據(jù)庫的基本SQL語法格式為:
CREATE DATABASE db_name; #直接創(chuàng)建數(shù)據(jù)庫 CREATE DATABASE [IF NOT EXISTS] db_name; #當數(shù)據(jù)庫不存在時創(chuàng)建
數(shù)據(jù)庫創(chuàng)建好后可以使用SHOW CREATE DATABASES聲明查看數(shù)據(jù)庫的定義。
mysql> SHOW CREATE DATABASE test\G *************************** 1. row *************************** Database: test Create Database: CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8 */ 1 row in set (0.00 sec)
2.2、刪除數(shù)據(jù)庫
刪除數(shù)據(jù)庫是將已經(jīng)存在的數(shù)據(jù)庫從磁盤空間上清除,清除后,數(shù)據(jù)庫中的所有數(shù)據(jù)也將一同被刪除。MySQL中刪除數(shù)據(jù)庫的基本語法格式為:
DROP DATABASE [IF EXISTS] db_name;
mysql> CREATE DATABASE test_tb; Query OK, 1 row affected (0.00 sec) mysql> DROP DATABASE test_tb; Query OK, 0 rows affected (0.02 sec) mysql> SHOW CREATE DATABASE test_tb\G ERROR 1049 (42000): Unknown database 'test_tb'
2.3、數(shù)據(jù)庫存儲引擎
數(shù)據(jù)庫存儲引擎是數(shù)據(jù)庫底層軟件組件,數(shù)據(jù)庫管理系統(tǒng)(DBMS)使用數(shù)據(jù)引擎進行創(chuàng)建、查詢、更新和刪除數(shù)據(jù)操作。不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能。MySQL的核心就是存儲引擎。
MySQL提供了多種不同的存儲引擎,包括處理事務安全表的引擎和處理非事務安全表的引擎。在MySQL中,不需要在整個服務器中使用同一種存儲引擎,針對每個表可以使用不同的引擎??梢允褂肧HOW ENGINES語句查看系統(tǒng)所支持的引擎類型:
mysql> SHOW ENGINES \G *************************** 1. row *************************** Engine: CSV Support: YES Comment: CSV storage engine Transactions: NO XA: NO Savepoints: NO *************************** 2. row *************************** Engine: PERFORMANCE_SCHEMA Support: YES Comment: Performance Schema Transactions: NO XA: NO Savepoints: NO *************************** 3. row *************************** Engine: MyISAM Support: YES Comment: MyISAM storage engine Transactions: NO XA: NO Savepoints: NO *************************** 4. row *************************** Engine: BLACKHOLE Support: YES Comment: /dev/null storage engine (anything you write to it disappears) Transactions: NO XA: NO Savepoints: NO *************************** 5. row *************************** Engine: MRG_MYISAM Support: YES Comment: Collection of identical MyISAM tables Transactions: NO XA: NO Savepoints: NO *************************** 6. row *************************** Engine: MEMORY Support: YES Comment: Hash based, stored in memory, useful for temporary tables Transactions: NO XA: NO Savepoints: NO *************************** 7. row *************************** Engine: FEDERATED Support: NO Comment: Federated MySQL storage engine Transactions: NULL XA: NULL Savepoints: NULL *************************** 8. row *************************** Engine: InnoDB Support: DEFAULT Comment: Supports transactions, row-level locking, and foreign keys Transactions: YES XA: YES Savepoints: YES 8 rows in set (0.00 sec)
常見存儲引擎的特性主要有:
MyISAM: 存儲格式:.frm: 表結構.MYD:表數(shù)據(jù).MYI:表索引 特性:支持全文索引,能夠壓縮:用于實現(xiàn)數(shù)據(jù)倉庫,能節(jié)約存儲空間并提升性能;支持空間索引;支持表級鎖;支持延遲更新索引;不支持事務、外鍵和行級鎖;崩潰后無法安全恢復數(shù)據(jù) 適用場景:只讀數(shù)據(jù)、較小的表、能夠容忍崩潰后的修改操作和數(shù)據(jù)丟失。 |
InnoDB: 兩種存儲格式 innodb_file_per_table=OFF,即使用共享表空間 每張表一個獨有的格式定義文件: tb_name.frm 默認數(shù)據(jù)目錄下共享的表空間文件:ibdata# innodb_file_per_table=ON,即使用獨立表空間 每個表在數(shù)據(jù)庫目錄下存儲兩個文件:tb_name.frm tb_name.ibd 表空間:由InnoDB管理的特有格式數(shù)據(jù)文件,內(nèi)部可同時存儲數(shù)據(jù)和索引 特性:支持事務、有事務日志;支持外鍵;多版本并發(fā)控制MVCC;支持聚簇索引 (聚簇索引之外的其它索引,通常稱為輔助索引);支持行級鎖(間隙鎖);支持輔助索引;支持自適應hash索引;支持熱備份。 |
ARCHIVE:僅支持INSERT和SELECT,支持很好壓縮功能;不支持事務,不能很好的支持索引;適用于存儲日志信息,或其它按時間序列實現(xiàn)的數(shù)據(jù)采集類的應用。 |
CSV:將數(shù)據(jù)存儲為CSV格式;不支持索引;僅適用于數(shù)據(jù)交換場景。 |
BLACKHOLE:沒有存儲機制,任何發(fā)往此引擎的數(shù)據(jù)都會丟棄;其會記錄二進制日志,因此,常用于多級復制架構中作中轉(zhuǎn)服務器。 |
MEMORY:保存數(shù)據(jù)在內(nèi)存中,內(nèi)存表;常用于保存中間數(shù)據(jù),如周期性的聚合數(shù)據(jù)等;也用于實現(xiàn)臨時表;支持hash索引,使用表級鎖,不支持BLOB和TEXT數(shù)據(jù)類型。 |
MRG_MYISAM:是MYISAM的一個變種,能夠?qū)⒍鄠€MyISAM表合并成一個虛表。 |
NDB:是MySQL CLUSTER中專用的存儲引擎。 |
存儲引擎比較:
功能 | MyISAM | Memory | InnoDB | Archive |
存儲限制 | 256TB | RAM | 64TB | None |
支持事務 | No | No | Yes | No |
支持全文索引 | Yes | No | No | No |
支持數(shù)索引 | Yes | Yes | Yes | No |
支持哈希索引 | No | Yes | No | No |
支持數(shù)據(jù)索引 | No | N/A | Yes | No |
支持外鍵 | No | No | Yes | No |
第三方的存儲引擎:
OLTP類:(On-Line Transaction Processing在線事務處理)
XtraDB: 增強的InnoDB,由Percona提供;編譯安裝時,用XtraDB的源碼替換MySQL存儲引擎中的InnoDB的源碼。
PBXT: MariaDB自帶此存儲引擎,支持引擎級別的復制、外鍵約束,對SSD磁盤提供適當支持;支持事務、MVCC
TokuDB: 使用Fractal Trees索引,適用存儲大數(shù)據(jù),擁有很壓縮比;MariaDB引入。
列式存儲引擎:
Infobright: 目前較有名的列式引擎,適用于海量數(shù)據(jù)存儲場景,如PB級別,專為數(shù)據(jù)分析和數(shù)據(jù)倉庫設計。
InfiniDB、MonetDB、LucidDB
開源社區(qū)存儲引擎:
Aria:前身為Maria,可理解為增強版的MyISAM(支持崩潰后安全恢復,數(shù)據(jù)緩存)
Groona:全文索引引擎,Mroonga是基于Groona的二次開發(fā)版
OQGraph: 由Open Query研發(fā),支持圖結構的存儲引擎
SphinxSE: 為Sphinx全文搜索服務器提供了SQL接口
Spider: 能數(shù)據(jù)切分成不同分片,在分片上支持并行查詢。
選擇引擎的標準:
是否需要事務;備份的類型的支持;崩潰后的恢復;特有的特性。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。