MySQL指令主要分為以下幾類:
DML:Data Manapulate Language: 資料操作語言(操作表中資料)
INSERT, REPLACE, UPDATE, DELETE
DDL:Data Defination Lanuage: 資料定義語言(操作表)
CREATE, ALTER, DROP
DCL:Data Control Language: 資料控制語言
GRANT, REVOKE
DQL:Data Query Language:資料查詢語言
SELECT,WHERE,ORDER BY,GROUPBY,HAVING
TPL:事物處理語言
BEGIN,TRANSACTION,COMMIT
2.1、建立資料庫
MySQL安裝完成後,将在其data目錄下自動建立幾個必須的資料庫,可以使用SHOW DATABASES語句來檢視目前所有存在的資料庫。
上面的資料庫中mysql是必須的,它描述使用者通路權限,使用者可以利用test資料庫來做測試工作。
建立資料庫是在系統磁盤上劃分一塊用于資料的存儲和管理,如果管理者在設定權限的時候為使用者建立了資料庫,則可以直接使用,否則,需要自己建立資料庫。MySQL建立資料庫的基本SQL文法格式為:
資料庫建立好後可以使用SHOW CREATE DATABASES聲明檢視資料庫的定義。
2.2、删除資料庫
删除資料庫是将已經存在的資料庫從磁盤空間上清除,清除後,資料庫中的所有資料也将一同被删除。MySQL中删除資料庫的基本文法格式為:
2.3、資料庫存儲引擎
資料庫存儲引擎是資料庫底層軟體元件,資料庫管理系統(DBMS)使用資料引擎進行建立、查詢、更新和删除資料操作。不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水準等功能。MySQL的核心就是存儲引擎。
<a href="https://s5.51cto.com/wyfs02/M01/9B/C7/wKioL1lnFOmSfn9lAAGaxjAYVZs454.png-wh_500x0-wm_3-wmp_4-s_1687354689.png" target="_blank"></a>
MySQL提供了多種不同的存儲引擎,包括處理事務安全表的引擎和處理非事務安全表的引擎。在MySQL中,不需要在整個伺服器中使用同一種存儲引擎,針對每個表可以使用不同的引擎。可以使用SHOW ENGINES語句檢視系統所支援的引擎類型:
常見存儲引擎的特性主要有:
MyISAM: 存儲格式:.frm: 表結構.MYD:表資料.MYI:表索引
特性:支援全文索引,能夠壓縮:用于實作資料倉庫,能節約存儲空間并提升性能;支援空間索引;支援表級鎖;支援延遲更新索引;不支援事務、外鍵和行級鎖;崩潰後無法安全恢複資料
适用場景:隻讀資料、較小的表、能夠容忍崩潰後的修改操作和資料丢失。
InnoDB: 兩種存儲格式
innodb_file_per_table=OFF,即使用共享表空間
每張表一個獨有的格式定義檔案: tb_name.frm
預設資料目錄下共享的表空間檔案:ibdata#
innodb_file_per_table=ON,即使用獨立表空間
每個表在資料庫目錄下存儲兩個檔案:tb_name.frm tb_name.ibd
表空間:由InnoDB管理的特有格式資料檔案,内部可同時存儲資料和索引
特性:支援事務、有事務日志;支援外鍵;多版本并發控制MVCC;支援聚簇索引
(聚簇索引之外的其它索引,通常稱為輔助索引);支援行級鎖(間隙鎖);支援輔助索引;支援自适應hash索引;支援熱備份。
ARCHIVE:僅支援INSERT和SELECT,支援很好壓縮功能;不支援事務,不能很好的支援索引;适用于存儲日志資訊,或其它按時間序列實作的資料采集類的應用。
CSV:将資料存儲為CSV格式;不支援索引;僅适用于資料交換場景。
BLACKHOLE:沒有存儲機制,任何發往此引擎的資料都會丢棄;其會記錄二進制日志,是以,常用于多級複制架構中作中轉伺服器。
MEMORY:儲存資料在記憶體中,記憶體表;常用于儲存中間資料,如周期性的聚合資料等;也用于實作臨時表;支援hash索引,使用表級鎖,不支援BLOB和TEXT資料類型。
MRG_MYISAM:是MYISAM的一個變種,能夠将多個MyISAM表合并成一個虛表。
NDB:是MySQL CLUSTER中專用的存儲引擎。
存儲引擎比較:
功能
MyISAM
Memory
InnoDB
Archive
存儲限制
256TB
RAM
64TB
None
支援事務
No
Yes
支援全文索引
支援數索引
支援哈希索引
支援資料索引
N/A
支援外鍵
第三方的存儲引擎:
XtraDB: 增強的InnoDB,由Percona提供;編譯安裝時,用XtraDB的源碼替換MySQL存儲引擎中的InnoDB的源碼。
PBXT: MariaDB自帶此存儲引擎,支援引擎級别的複制、外鍵限制,對SSD磁盤提供适當支援;支援事務、MVCC
TokuDB: 使用Fractal Trees索引,适用存儲大資料,擁有很壓縮比;MariaDB引入。
列式存儲引擎:
Infobright: 目前較有名的列式引擎,适用于海量資料存儲場景,如PB級别,專為資料分析和資料倉庫設計。
InfiniDB、MonetDB、LucidDB
開源社群存儲引擎:
Aria:前身為Maria,可了解為增強版的MyISAM(支援崩潰後安全恢複,資料緩存)
Groona:全文索引引擎,Mroonga是基于Groona的二次開發版
OQGraph: 由Open Query研發,支援圖結構的存儲引擎
SphinxSE: 為Sphinx全文搜尋伺服器提供了SQL接口
Spider: 能資料切分成不同分片,在分片上支援并行查詢。
選擇引擎的标準:
是否需要事務;備份的類型的支援;崩潰後的恢複;特有的特性。
本文轉自 夢想成大牛 51CTO部落格,原文連結:http://blog.51cto.com/yinsuifeng/1947106,如需轉載請自行聯系原作者