天天看點

二、資料庫的基本操作

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,如需轉載請自行聯系原作者