数据库是指长期存储在计算机、有组织的、可共享的数据集合。简而言之,数据库就是一个存储数据的地方。只是,其存储方式有特定的规律。这样可以方便处理数据。数据库的操作包括创建数据库和删除数据库。这些操作都是数据库管理的基础。
- 创建数据库
- 删除数据库
- 数据库的存储引擎
- 如何选择存储引擎
5.1 创建数据库
创建数据库是指在数据库系统中划分一块空间,用来存储相应的数据。这是进行表操作的基础,也是进行数据库管理的基础。
创建数据库是通过SQL语言CREATE DATABASE命令实现的。
CREATE DATABASE 数据库名;
-- MySQL命令以分号(;)或\g结束命令
SHOW DATABASES; -- 用列表显示所有数据库
CREATE DATABASE example; -- 创建数据库
CREATE DATABASE IF NOT EXISTS example; -- 如果没有example数据库则创建example数据库
5.2 删除数据库
删除数据库是指数据库系统中删除已经存在的数据库。删除数据库之后,原来分配的空间将被收回。值得注意的是,删除数据库会删除该数据库中所有的表和所有数据。
删除数据库是通过SQL语句DROP DATABASE命令实现的。
DROP DATABASE 数据库名
DROP DATABASE IF EXISTS example; -- 如果example数据库存在的话删除example数据库
5.3 数据库的存储引擎
MySQL中提到了存储引擎的概念。简而方之,存储引擎就是指表的类型。数据库存储引擎决定了表在计算机中的存储方式。
type=InnoDB
engine=InnoDB
MyISAM:
优点:
1. OPTIMIZE TABLE 表名; # 整理碎片
2. 强调快速读取操作
缺点:有一些功能不支持
InnoDB:
优点:
1. 支持多功能(事务、外键)
2. 强调快速读取操作
缺点:速度不如MyISAM,占用空间大
5.3.1 MySQL存储引擎简介
存储引擎的概念是MySQL的特点,而且是一种插入式的存储引擎概念。这决定了MySQL数据库中的表可以用不同的方式存储。用户可以根据自己的不同要求,选择不同的存储方式、是进行事务处理等。
使用SHOw ENGINES语句可以查看MySQL数据库支持的存储引擎类型。
SHOW ENGINES \G
Engine : MyISAM
Support: YES
Comment: Default Engine at of MySQL 3.23 with great performance(描述说明)
Transaction: NO (是否支持事务)
XA: NO (是不否支持分布式XA规范)
Savepoints: NO (是否支持保存点)
SHOW VARIABLES LIKE ‘have%‘;
SHWO VARIABLES LIKE ‘storage_engine‘; # 数据库默认引擎[storage:存储]
1. 可以在mysql.ini配置文件中修改数据库默认引擎
default-storage-engine = INNODB
5.3.2 InnoDB存储引擎
InnoDB是MySQL数据库的一个存储引擎。InnoDB给MySQL的表提供了事务、回滚、崩溃修复能力、多版本并发控制的事务安全。在MySQL从3.23.34a开始包含InnoDB存储引擎。InnoDB是MySQL上第一个提供外键约束的引擎。而且InnoDB对事务处理的能力,也是MySQL其他存储引擎所无法与之比拟的。
(1)InnoDB存储引擎中支持自动增长列(AUTO_INCREMET)
自动增长列的值不能为空,且值必须惟一。MySQL中规定自增列必须为主键。在插入值时,如果自动增长列不输入值,则插入的值为自动增长后的值;如果输入的值为0或者空(NULL),则插入的值也为自动增长后的值;如果插入某个确定的值,且该值在前面没有出现过,则可以直接插入。
(2) InnoDB存储引擎中支持外键(FOREIGN KEY)
(3) InnoDB存储引擎中,创建表的表结构存储在.frm文件中。数据和索引存储innodb_data_home_dir和innodb_data_file_path定义的表空间中。
(4) InnoDB存储引擎的优势在于提供良好的事务管理、崩溃修复能力和并发控制。
缺点是读写效率稍差,占用的数据空间相对比较大。
5.3.3 MyISAM存储引擎
MyISAM存储引擎是MySQL中常见的存储引擎,是以前MySQL的默认存储引擎。MyISAM存储引擎是基于ISAM存储引擎发展起来的。MyISAM增加了很多用的扩展。
MyISAM存储引擎的表存储成三个文件。文件的名字与表名相同。扩展名包括frm、MYD和MYI。其中frm为扩展名的文件存储表的结构;MYD为扩展名的文件存储数据,基是MYData的缩写;MYI为扩展名的文件存储索引,其是MyIndex的缩写。
MyISAM存储引擎的优势在于占用空间小、处理速度快。
缺点是不支持事务的完整性和并发性。
5.3.4 MEMORY存储引擎
MEMORY存储引擎是MySQL中的一个特殊的存储引擎。基使用存储在内存中内容来创建表,而且所有数据也放在内存中。这些特性都与InnoDB存储引擎、MyISAM存储引擎不同。
每个基于MEMORY存储引擎的表实际对应一个磁盘文件。该文件的文件名与表名相同,类型为frm类型。该文件的只存储表的结构。而其数据文件,都是存储在内存中。这样有利于对数据的快速的处理,提高整个表的处理效率。值得注意的是,服务器需要有足够的内存来维持MEMORY存储引擎的表的使用。如果不需要使用了,可以释放这些内存,甚至可以删除不需要的表。
MEMORY表的大小是受到限制的。表的大小主要取决于两个参数,分别是max_rows和max_heap_table_size。
5.3.5 存储引擎的选择
在实际工作中,选择一个合适的存储引擎是一个很复杂的问题。每种存储引擎都有各自的优势,不能笼统的说谁比谁好。
存储引擎的对比
特性 InnoDB MyISAM MEMORY
事务安全 支持 不支持 不支持
数据行锁定 支持 不支持 不支持
外键约束 支持 不支持 不支持
存储限制 64TB 有 有
空间占用 高 低 低
全文索引 不支持 支持 不支持
内存使用 高 低 高
插入数据的速度 低 高 高
对外键的支持 支持 无 无
常见问题及解答
1. 如何修改默认存储引擎?
(1) 使用配置向导,修改默认存储引擎。
(2) 修改配置文件my.ini,default_storage_engine=INNODB修改即可
2. 如何选择存储引擎?
CREATE TABLE `test`.`test` (
`a` INT NOT NULL
) ENGINE = MYISAM ;