二、数据库的基本操作

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> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

  上面的数据库中mysql是必须的,它描述用户访问权限,用户可以利用test数据库来做测试工作。

  创建数据库是在系统磁盘上划分一块用于数据的存储和管理,如果管理员在设置权限的时候为用户创建了数据库,则可以直接使用,否则,需要自己创建数据库。MySQL创建数据库的基本SQL语法格式为:

CREATE DATABASE db_name;                 #直接创建数据库
CREATE DATABASE [IF NOT EXISTS] db_name; #当数据库不存在时创建

  数据库创建好后可以使用SHOW CREATE DATABASES声明查看数据库的定义。

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、删除数据库

  删除数据库是将已经存在的数据库从磁盘空间上清除,清除后,数据库中的所有数据也将一同被删除。MySQL中删除数据库的基本语法格式为:

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、数据库存储引擎

  数据库存储引擎是数据库底层软件组件,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。MySQL的核心就是存储引擎。

二、数据库的基本操作

  MySQL提供了多种不同的存储引擎,包括处理事务安全表的引擎和处理非事务安全表的引擎。在MySQL中,不需要在整个服务器中使用同一种存储引擎,针对每个表可以使用不同的引擎。可以使用SHOW ENGINES语句查看系统所支持的引擎类型:

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:表数据.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 No Yes No
支持全文索引 Yes No No No
支持数索引
Yes Yes Yes No
支持哈希索引
No Yes No No
支持数据索引
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索引,适用存储大数据,拥有很压缩比;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,如需转载请自行联系原作者

上一篇:.NET中使用MySQL数据库基本命令操作


下一篇:数据库编程入门培训(二)