一、 数据库的操作
1、创建数据库
创建数据库是在系统磁盘上划分一块区域用于数据的存储和管理,
(1)、查看历史数据库:
show databases
(2)、创建数据库:
create database database_name(数据库名称);
(3)、查看创建好的数据库:
show create database database_name;
2、删除数据库
删除数据库是将已经存在的数据库重磁盘上清除,数据库删除后,数据库中的数据也将一同被删除
(1)删除数据库:
drop database database_name
3、数据库存储引擎
(1)MYSQL存储引擎简介
MYSQL提供了多个不同的存储引擎,包括事务安全表的引擎和处理非事务安全表的引擎。在MYSQL中,不需要在整个服务器中使用同一种存储引擎,针对具体的要求,可以对每个表用不同的存储引擎。
MYSQL5.7支持的存储引擎有:InnoDB、MYISAM、MEMORY、MERGE、ARCHIVE等
查看系统支持的存储引擎:show engine
(2) InnoDB存储引擎
InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID)、支持行锁定和外键。
MYSQL5.5.5后,InnoDB作为默认的存储引擎
InnoDB的特性有:
A、InnoDB给MYSQL提供了具有提交、回滚、崩溃回复能力的事务安全存储引擎;
B、InnoDB是为处理大量数据的最大性能设计,他的cpu效率是任何其他基于磁盘的关系型数据库引擎所不能匹敌的
C、InnoDB完全与MYSQL服务器整合,InnoDB为在主内存中缓存数据和索引,而维持他自己的缓冲池,InnoDB将它的表和索引存在一个逻辑表空间中,表空间可以包含数个文件(或原始磁盘分区)
D、InnoDB支持外键完整性约束;
(3)MYISAM存储引擎
MYISAM基于ISAM的存储引擎,MYISAM拥有较高的插入、查询速度,但不支持事务,在MYSQL5.5.5之前MYISAM是默认的存储引擎
它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求,以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。
每个MyISAM在磁盘上存储成3个文件,其中文件名和表名都相同,但是扩展名分别为:
- .frm(存储表定义)
- MYD(MYData,存储数据)
- MYI(MYIndex,存储索引)
数据文件和索引文件可以放置在不同的目录,平均分配IO,获取更快的速度。要指定数据文件和索引文件的路径,需要在创建表的时候通过DATA DIRECTORY和INDEX DIRECTORY语句指定,文件路径需要使用绝对路径。
每个MyISAM表都有一个标志,服务器或myisamchk程序在检查MyISAM数据表时会对这个标志进行设置。MyISAM表还有一个标志用来表明该数据表在上次使用后是不是被正常的关闭了。如果服务器以为当机或崩溃,这个标志可以用来判断数据表是否需要检查和修复。如果想让这种检查自动进行,可以在启动服务器时使用--myisam-recover现象。这会让服务器在每次打开一个MyISAM数据表是自动检查数据表的标志并进行必要的修复处理。MyISAM类型的表可能会损坏,可以使用CHECK TABLE语句来检查MyISAM表的健康,并用REPAIR TABLE语句修复一个损坏到MyISAM表。
MyISAM的表还支持3种不同的存储格式:
- 静态(固定长度)表
- 动态表
- 压缩表
其中静态表是默认的存储格式。静态表中的字段都是非变长字段,这样每个记录都是固定长度的,这种存储方式的优点是存储非常迅速,容易缓存,出现故障容易恢复;缺点是占用的空间通常比动态表多。静态表在数据存储时会根据列定义的宽度定义补足空格,但是在访问的时候并不会得到这些空格,这些空格在返回给应用之前已经去掉。同时需要注意:在某些情况下可能需要返回字段后的空格,而使用这种格式时后面到空格会被自动处理掉。
动态表包含变长字段,记录不是固定长度的,这样存储的优点是占用空间较少,但是频繁到更新删除记录会产生碎片,需要定期执行OPTIMIZE TABLE语句或myisamchk -r命令来改善性能,并且出现故障的时候恢复相对比较困难。
压缩表由myisamchk工具创建,占据非常小的空间,因为每条记录都是被单独压缩的,所以只有非常小的访问开支
(4)MEMORY存储引擎
merge存储引擎是一组MyISAM表的组合,这些MyISAM表结构必须完全相同,MERGE表中并没有数据,对MERGE类型的表可以进行查询、更新、删除的操作,这些操作实际上是对内部的MyISAM表进行操作。对于对MERGE表进行的插入操作,是根据INSERT_METHOD子句定义的插入的表,可以有3个不同的值,first和last值使得插入操作被相应的作用在第一个或最后一个表上,不定义这个子句或者为NO,表示不能对这个MERGE表进行插入操作。可以对MERGE表进行drop操作,这个操作只是删除MERGE表的定义,对内部的表没有任何影响。
MERGE在磁盘上保留2个以MERGE表名开头文件:
.frm文件存储表的定义;
.MRG文件包含组合表的信息,包括MERGE表由哪些表组成,插入数据时的依据。可以通过修改.MRG文件来修改MERGE表,但是修改后要通过flush table刷新。
(5)存储引擎的选择
A、如果提供提交、回滚和崩溃回复能力的事务安全能力,并要求实现并发控制,InnoDB是个很好的选择。
B、如果数据表主要用来插入和查询数据,MYISAM能提供较高的处理效率
C、如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,则可以选择将数据保存在内存中的MEMORY引擎,MYSQL使用该引擎作为临时表,存放查询的中间结果
D、如果只有insert和select操作,可以选择ARCHIVE存储引擎,ARCHIVE支持高并发的插入操作,但本身并不是事务安全的
使用那种存储引擎根据需求灵活选择,一个数据库中多个表可以使用不同的引擎满足各种性能和实际需求,使用合适的存储引擎,将会提高整个数据库的性能。