什么是关系型数据库,什么是非关系型数据库
关系型数据库是将复杂的数据结构用较为简单的二维表来表示,由二维表及其之间的联系所组成的一个数据组。在该类型数据库中,对数据的操作基本上都建立在一张或多张表上,采用结构化查询语言(SQL)对数据库进行操作,关系型数据库是比较主流的数据库技术。
优点:
- 易于维护:使用二维表的表结构,格式一致;
- 使用方便:SQL语言通用,关系型数据库都可以使用SQL进行操作;
- 复杂操作:可用于一个表以及多个表之间非常复杂的查询。
缺点:
- 读写性能比较差,尤其是海量数据的高效率读写;
- 固定的表结构,灵活度稍欠;
- 高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
非关系型数据库也称之为NoSQL(Not Only SQL)数据库,是一种数据结构化存储方法的集合,可以是文档或者键值对等。
优点:
- 格式灵活:存储数据的格式可以是key, value形式, 文档形式, 图片形式等等.
- 使用灵活,应用场景广泛,而关系型数据库则只支持基础的类型
- 速度快:使用内存存储数据,而关系型数据库只能使用硬盘
- 高扩展性
缺点:
- 不提供sql支持,学习和使用成本较高
- 数据结构相对复杂,复杂查询方面稍欠
- 只适合存储一些较为简单的数据,对于需要进行较复杂查询的数据,关系型数据库显的更为合适
- 不适合持久存储海量数据
SQL分类
DQL 数据查询语言:主要用于数据的查询
DML 数据操作语言:主要用于对数据的增加、修改、删除
DDL 数据定义语言:主要针对数据库对象(数据库、表、索引、视图)进行创建、修改、删除
DCL 数据控制语言:用来授予或者回收访问数据库的权限
TCL 事务控制语言:用于数据库的事务管理
事务的四大特性
原子性:一个事务要么全部提交成功要么全部失败回滚,不能只执行其中的一部分操作
一致性:事务必须是数据库从一个一致状态到另一个一致状态
隔离性:事务的隔离性是指在并发环境下,多个并发的事务之间应该相互各路,互不干扰
持久性:一旦事务提交,那么它对数据库中对应数据的状态变更就会永久保存到数据库中,及时发生系统崩溃,只要数据库可以重新启动,那么就一定能回复到事务成功结束的状态
数据库三大范式
第一范式:数据库表里面的字段都是单一属性的,都是不可再分的最小数据单元
第二范式:在第一范式的基础上更进一步,确保表中的每列都和主键相关,一张表只能描述一件事
第三范式:在第二范式的基础上,非主键列只能依赖于主键,不能依赖于其他非主键,通俗来讲消除表字段之间的传递依赖
主从复制:
数据从Mysql数据库服务器主节点复制到一个或者多个从结点
- 同步复制:主节点的变化必须等待从节点复制完成
- 异步复制:主节点只需要完成自己的数据库操作,不用管从节点是否完成操作
- 半同步赋值:主节点值胥保证一个从节点操作成功,就返回结果