MySQL 5.6学习笔记(数据库基本操作,查看和修改表的存储引擎)

1. 数据库基本操作

1.1  查看数据库

查看数据库列表:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| test               |
| world              |
+--------------------+
6 rows in set (0.08 sec)

查看数据库创建语句:

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.05 sec)

用“\G“取代”;“,可以使得显示结果更加直观,便于查看。

1.2 创建数据库

mysql> create database test_db;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| test               |
| test_db            |
| world              |
+--------------------+
7 rows in set (0.00 sec)

1.3 选择数据库 

mysql> use test_db;
Database changed

1.4 删除数据库

mysql> drop database test_db;
Query OK, 0 rows affected (0.13 sec)

2. 存储引擎

数据库存储引擎是数据库底层软件组件,数据库管理系统(DBMS)使用数据库存储引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。
Oracle数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySQL数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎。

2.1 InnoDB存储引擎

InnoDB事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁和外键。MySQL5.5.5之后,InnoDB作为默认存储引擎。

2.2 MyISAM存储引擎

MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事务。在MySQL5.5.5之前版本中,MyISAM是默认存储引擎。

2.3 Memory存储引擎

Memory存储引擎将表中的数据存储到内存中,为查询和引用其他表数据提供快速访问。

2.4 Archive存储引擎

Archive存储引擎只支持select 和 insert语句,而且不支持索引。常应用于日志记录和聚合分析方面。

2.5 存储引擎的选择

  

表2.5 存储引擎的比较

功能MyISAMMemoryInnoDBArchive
存储限制 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

3. MySQL中关于存储引擎的操作

3.1 查看数据库可以支持的存储引擎

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

3.2 查看表使用的存储引擎

方法一:

mysql> show create table mytable;
+---------+------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                             |
+---------+------------------------------------------------------------------------------------------+
| mytable | CREATE TABLE `mytable` (
  `i` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+---------+------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

方法二:

mysql> show table status from test_db where name='mytable'\G
*************************** 1. row ***************************
           Name: mytable
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 0
 Avg_row_length: 0
    Data_length: 16384
Max_data_length: 0
   Index_length: 0
      Data_free: 0
 Auto_increment: NULL
    Create_time: 2013-11-11 16:21:13
    Update_time: NULL
     Check_time: NULL
      Collation: utf8_general_ci
       Checksum: NULL
 Create_options:
        Comment:
1 row in set (0.00 sec)

3.3 修改表存储引擎

mysql> alter table mytable engine=myisam;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

3.4 创建表时指定存储引擎

create table tablename(
columnName(列名1)  type(数据类型)  attri(属性设置),
columnName(列名2)  type(数据类型)  attri(属性设置),
……..) engine = engineName

示范:

mysql> create table mytable2(i int) engine=myisam;
Query OK, 0 rows affected (0.02 sec)

mysql> show create table mytable2\G
*************************** 1. row ***************************
       Table: mytable2
Create Table: CREATE TABLE `mytable2` (
  `i` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

3.5 修改数据库默认存储引擎

  1. 打开DOS窗口,关闭mysql服务(每种MySQL版本服务名可能不一致): net stop mysql56
  2. 打开mysql数据目录下的my.ini文件(如:C:\ProgramData\MySQL\MySQL Server 5.6)
  3. 在my.ini文件中将default-storage-engine=INNODB 替换为default-storage-engine=MYISAM
  4. 在DOS窗口中重新启动mysql服务:net start mysql56
posted @ 2013-11-11 16:38  那些年的事儿  阅读(1075)  评论(0编辑  收藏  举报