二、数据库的基本操作

发布时间:2020-07-31 18:51:26 作者:少年不在了
来源:网络 阅读:610

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中专用的存储引擎。

存储引擎比较:

功能MyISAMMemoryInnoDBArchive
存储限制256TBRAM64TBNone
支持事务NoNoYesNo
支持全文索引YesNoNoNo
支持数索引
YesYesYesNo
支持哈希索引
NoYesNoNo
支持数据索引
NoN/AYesNo
支持外键
NoNoYesNo

第三方的存储引擎:

   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: 能数据切分成不同分片,在分片上支持并行查询。

选择引擎的标准:

   是否需要事务;备份的类型的支持;崩溃后的恢复;特有的特性。








推荐阅读:
  1. 数据库的基本操作2
  2. 数据库基本操作

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

数据库操作、存储引擎

上一篇:清洁和新Android架构的认知诉求

下一篇:Extjs生成UUID

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》