MySQL
MySQL简介
数据库的产生
- 为何有数据库?
文件保存数据有以下缺陷:
1.文件安全性问题
2.不利于查询和管理
3.不利于存储海量数据
4.程序中使用不方便 - 什么是数据库?
综合以上文件存储的缺陷,专家们设计出更利于管理数据的东西----数据库,可以有效的管理数据,数据库水平是衡量一个程序员水平的重要指标。 - 数据库的存储介质:
1.磁盘
2.内存
主流数据库
- SQL Server :微软的产品, .Net程序员的最爱,中大型项目。
- Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
- MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商, SNS,论坛。对简单的SQL处理效果好。
- PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
- SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
- H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。
MySQL数据安装
- Centos 6.5下编译安装MySQL
- CentOS 7 下编译安装MariaDB
- Windows下安装MySQL5.7
- CentOs 7 镜像下载
- 提取码:zl1v
MySQL分类
- DDL数据定义语言,用来维护存储数据的结构代表指令: create, drop, al ter
- DML数据操纵语言,用来对数据进行操作代表指令: i nsert, del ete, update
- DML中又单独分了一个DQL,数据查询语言,代表指令: sel ect
- DCL数据控制语言,主要负责权限管理和事务代表指令: grant, revoke, commi t
查看数据引擎
show engines;
- 现在默认使用MySQL创建库时候使用的引擎是 InnoDB
谈一谈MySQL中 InnoDB 与 MyISAM 引擎的区别
- 在功能上的区别:
1.事务支持:
- MyISAM不支持事务,而InnoDB支持。InnoDB的AUTOCOMMIT默认是打开,即每一条SQL语句都会被默认封装成一个事务,自动提交。
- MyISAM是非事务安全型的,而InnoDB是食物安全型的。
2.存储结构:
- MyISAM:每个MyISAM在磁盘上存储成三个文件,第一个文件类型后缀名.fem(以表的名字开始), 第二个文件后缀名 .MYD(MYData)(数据文件),第三个文件后缀名.MYI(MYIndex)(索引文件)
- InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB之受限于操作系统的大小,一般是2GB。
3.存储空间
- MyISAM:可以压缩,但是存储空间较小。支持三种不同的存储格式:静态表,动态表,压缩表。
- InnoDB:需要更多的内存河村春,他会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。
4.可移植性备份及恢复
- MySIAM:数据以文件形式存储,跨平台数据转移很方便。备份恢复时可单独对于某表进行操作。
- InnoDB:可以拷贝数据文件,备份binlog,或者使用mysqldump,但是当数据量过大时就很难受了。
5.事务支持
- MySIAM:强调的是性能,操作具有原子性,执行效率比InnoDB快,但是不提供事务支持
- InnoDB:提供事务支持,外键等高级数据库功能。
6.AUTO_INCREMENT(自增)
- MySIAM:可以和其他字段一起建立联合索引
- InnoDB:必须包含只有该字段的索引
7.表锁差异
- MySIAM:只支持表级锁
- InnoDB:支持事务和行级锁
8.全文索引
- MySIAM:支持全文索引
- InnoDB:不支持全文索引
9.表的主键
- MySIAM:允许没有任何索引和主键的表存在,索引保存行的地址。
- InnoDB:若是没有设置主键或者索引就会自动创建生成一个6字节的主键(用户不可见)
10.表的总行数
- MySIAM:保存有表的总行数,(使用:select count( * ) from table),就可以知道总行数。
- InnoDB:没有保存表的总行数。
11.外键
- MySIAM:不支持
- InnoDB:支持
12.CURD操作
- MySIAM:若是执行大量SELECT,MySIAM更合适
- InnoDB:若是数据执行大量的INSERT,UPDATE,更适合使用InnoDB
- 索引方式不同:
详细请看: - MySQL中 InnoDB 与 MyISAM 引擎的区别(简单总结)
- MySQL中 InnoDB 与 MyISAM 引擎的区别(都使用了B-Tree 但是索引方式有所不同)