mysql从零开始第一篇
在此之前,默认以安装好mysql
首先连接数据库 mysql -u root -p,然后输入密码
查看当前存在的所有数据库 show databases;
创建数据库 create database database_name;
删除数据库 drop database database_name;
数据库存储引擎
数据库存储引擎是数据库底层软件组件,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新、删除数据操作。不同的存储引擎提供不同的存储机制、索引机制、锁定水平等。mysql的核心就是存储引擎。
mysql存储引擎简介
mysql提供了多个不同的存储引擎,包括处理事务安全表的引擎和处理非事务安全表的引擎。在mysql中,可以对每张表使用不同的存储引擎。mysql5.7支持的存储引擎有InnoDB,MyISAM、Memory、Merge、Archive、Federated、CSV、BLACKHOLE等,使用show engines查看系统支持的引擎类型。
InnoDB存储引擎
InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁和外键。是mysql5.5.5之后(之前是myisam),mysql的默认存储引擎.InnoDB的主要特性如下:
1、InnoDB给mysql提供了具有提交、回滚和崩溃恢复的事务安全(ACID兼容)存储引擎,InnoDB锁定行级时,能给select语句提供一个非锁定读。
2、InnoDB是为处理巨大数据量的最大性能设计
3、InnoDB存储引擎完全与mysql服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB将它的表和索引存在一个逻辑表空间中,表空间可以包含数个文件。而MyISAM表中的每个表被存放在分离的文件中。
4、InnoDB支持外键完整性约束,如果没有在表定义时指定主键,InnoDB会为每一行生成一个ROWDB,并以此作为主键。
5、InnoDB被用在众多需要高性能的大型数据库站点。InnoDB不创建目录,使用InnoDB时,mysql将在mysql数据目录下创建一个ibdatal的10MB自动扩展的数据文件,以及二个名为ib_logfile0和ib_logfile1的5MB大小的日志文件。
MyISAM存储引擎
MyISAM基于ISAM存储引擎,并对其进行扩展。它是在web、数据仓储等环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事务,MyISAM的主要特性如下:
1、大文件(达63位文件长度)在支持大文件的文件系统和操作系统上被支持
2、当删除、更新、插入操作混合使用的时候动态尺寸的行产生更少碎片。
3、每个MyISAM表的最大索引数是64,可以通过重新编译来改变。每个索引最大的列数是16个
4、最大的键长度是1000B。也可以通过编译来改变
5、BLOG和TEXT列可以被索引
6、NULL值被允许在索引的列中
7、所有的数字键值以高字节优先被存储,以允许一个更高的索引压缩
8、每个表都有一个AUTO_INCREMENT列的内部处理。MyISAM为INSERT和UPDATE操作自动更新这一行。这使的AUTO_INCREMENT列更快
9、可以把数据文件和索引文件放在不同的目录
10、每个字符列可以有不同的字符集
11、VARCHAR可以固定或动态记录长度
12、VARCHAR和CHAR列可以多达64KB
使用MyISAM引擎创建数据库,将生产三个文件。文件的名字以表的名字开始,扩展名指出文件类型:frm文件存储表定义,数据文件的扩展名为.MYD,索引文件的扩展名为.MYI
MEMORY存储引擎
MEMORY存储引擎将表中的数据存储到内存中,为查询和引用其他表数据提供快速访问。主要特性如下:
1、MEMORY表的每个表可以有多达32个索引,每个索引16列,以及500B的最大键长度
2、MEMORY存储引擎执行HASH和BTREE索引
3、可以在一个MEMORY表中有非唯一键
4、MEMORY不支持BOLG或TEXT列
5、MEMORY支持AUTO_INCREMENT列和包含NULL的值的列索引
6、MEMORY表在所有客户端之间共享
7、MEMORY表内容被存在内存中,内存是MEMORY表和服务器在查询处理时的空闲中创建的内部表共享
8、当不再需要MEMORY表中的内容时,要释放被MEMORY表使用的内存,应该执行delete from 或者truncate table 或者删除整个表drop table
存储引擎的选择
如果要提供提交、回滚和奔溃恢复能力的事务安全能力,并要求实现并发控制,InnoDB是个不错的选择。如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率,如果只是临时的存放数据,数据量并不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的MEMORY引擎,如果只有insert和select操作,可以选择archive引擎,archive支持高并发的插入操作,但本身并不是事务安全的,所以非常适合存储归档数据。如记录日志信息