一、数据库介绍
什么是数据库(Database)?
简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据
更简单的理解形象,数据库和我们生活追踪存放杂物的储物间仓库性质一样,区别只是存放的东西不通,杂物间存放实体的物件,而数据库里存储的是数据,这样我们就对数据库有一个初步了解了。
数据库诞生于1950年,随着信息技术的发展和人类社会的不断进步,特别是2000年后,数据库不在仅仅是存储和管理数据了,而转变成用户所需要的各种数据管理的方式,数据库有很多种类和功能,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
主流的数据库有:sqlserver,mysql,Oracle、SQLite、Access、MS SQL Server等
二、MySQL简介
MySQL是一个真正的多用户、多线程SQL数据库服务器。MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。SQL(结构化查询语言(Structured Query Language))是世界上最流行的和标准化的数据库语言,它使得存储、更新和存取信息更加容易。
MySQL是一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和许多不同的客户程序以及库组成的。
分为关系数据库(mysql、sqlserver、oracle、db2、mariadb)和非关系型数据库(redis、mongodb)。
三、关系型数据库
(1)介绍
关系型数据库模型是把复杂的数据结构归结为简单的二元关系(既二维格式表)
(2)概念
关系:存储数据的表的表名
元组:就是表中的一条记录(一行就是一条记录)
属性:就是表中的一个字段(一列就是一个字段)
域:字段的取值范围
关键字:可以唯一标识一条记录的字段(这也是一个或多个字段)
关系模型:表和表之间的关系
(3)优点
1)易于维护:都是使用表结构,格式一致;(主要用于保证数据完整、数据一致)
2)使用方便:SQL语言通用,可用于复杂查询;
3)复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
(4)缺点
1)事务一致性(数据一致性):为了保证数据的完整,会带来额外的开销,导致性能降低
2)关系型数据库在高并发的读写I/O请求下,会是程序系统的性能瓶颈
3)固定的表结构,灵活度稍欠,可扩展性差(拆分,分库,分表)
4)读写的时效性差,读写性能差
5)需要写复杂的SQL,甚至需要用多表联合查询
四、非关系型数据库(nosql)
(1)概念
非关系型数据库也称之为nosql数据库,请注意,nosql的本意是“not only SQL”,指的是非关系型数据库,而不是“no SQL”的意思,因此nosql的产生并不是要彻底否定关系型数据库,而是作为传统关系型数据库的一个有效补充,NoSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。
通常是作为关系型数据库的一个补充,而且不遵循ACID;通常NoSQL是以key-value的方式存储
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。
随着互联网的兴起,超大规模和高并发量的微博,微信,SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如:传统的关系型数据库IO瓶颈,性能瓶颈都难以有效突破,于是开始出现了大批针对特定场景,以高性能和使用便利为目的的功能特异化的数据库产品,NoSQL类的数据库就是在这样的情景中诞生并得到了非常迅速的发展
NoSQL是非关系型数据库的广义定义。它打破了长久以来关系型数据库与ACID理论大一统的局面,NoSQL数据存储不需要固定的表结构,通常也不存在连接操作,在大数据存取上具备关系型数据库无法比拟的性能优势,该术语(NoSQL)在2009年初得到了广泛的认同
google的BigTable与Amazon的Dynamo是非常成功的商业NoSQL,一些开源的NoSQL体系,如
Redis, mongodb也逐渐的越来越受到各大中小型企业的欢迎和追捧
(2)优点
1)格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
2)速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3)高扩展性;
4)成本低:nosql数据库部署简单,基本都是开源软件。
(3)缺点
1)不提供sql支持,学习和使用成本较高;
2)无事务处理;
3)数据结构相对复杂,复杂查询方面稍欠。
(4)分类
类型1:key-value
借助于hash表实现快速读写
特点:简单、容易部署、高并发状态下性能好
产品: redis:内存+磁盘
emcached:纯内存的数据库
类型2:列式存储数据库
Column Family(列簇)
通常场景:用来实现分布式海量数据存储
产品: HBbase
Cassandra
类型3:面向文档的数据库
数据库中所存放的是文档
产品: MongoDB
类型4:图形数据库
graph
五、选择MySQL的理由
1. BAT都在用mysql,而且往往都是从oracle切换到了mysql
2. 性能好,而且稳定
3. 开源
4. 社区活跃
5. 轻量级
6. 维护简单
7. 支持跨平台
8. 支持多种语言(编码)
9. 执行用sql进行数据的读写
六、MySQL的版本
1、版本
社区版:社区人员自行维护的版本,没有售后
商业版:各种功能都是经过官方测试稳定,而且有完善的售后服务
2、MySQL发行版本
Alpha版
beta版
RC版
GA版
3、MySQL的产品线
第一条:5.0-5.1,5.1稳定版
第二条:5.4-5.7,5.5 5.7稳定
第三条:6.0 7.0 8.0 ,最新8.0
4、生产环境中如何选择版本
1) 选择社区版
2) 选择稳定版
3) 建议选择发布时间在6个月以上的稳定
4) 关注版本最近是否有修复补丁
5) 注意是否和开发人员使用的数据兼容
6) 注意是否和现有数据库兼容
7) 现版本的数据库就建议在内部测试运行3-6个月以上
8) 在从原有数据库转移数据的过程中,建议先转移非核心数据,测试是否正常
七、RDBMS
Relational Database Management System关系数据库管理系统
1、sql语句主要分为:
DQL:数据查询语言,用于对数据进行查询,如select
DML:数据库操作语言,对数据库进行增删改查,如:insert,update,delete
TPL:事物处理语言,对事物进行处理,包括begin,transaction,commit,rollback
DCL:数据控制语言,如grant,revoke
DDL:数据定义语言:进行数据库,表的管理等,如create,drop
CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor
2、sql是一门特殊的语言,专门用来操作关系型数据库
3、不区分大小写