目录
前言
一、数据库的基本概念
1.数据(Data)
2.表
3.数据库
4.数据库管理系统(DBMS)
5.数据库系统
二、数据库系统发展史
1.第一代数据库
2.第二代数据库
3.第三代数据库
三、当今主流数据库介绍
1.SQL Server (微软公司产品)
2.Oracle (甲骨文公司产品)
3.DB2 (IBM公司产品)
4.MySQL (甲骨文公司收购)
5.数据库类型
四、关系数据库(MySQL)
1.实体
2.属性
3.联系
4.关系数据库的存储结构
五、关系数据库应用
六、非关系数据库(NoSQL)
七、MySQL数据库介绍
八、MySQL商业版与社区版
九、MySQL产品阵营
数据库概述
前置:LAMP LNMP
企业架构,服务定位示例
前言:
数据:图片、视频、关系、音频、字符、字符串等等。
数据的作用:持久化保存(磁盘)、高可靠(宕机不会丢失,安全性保障),高可用(HA冗余、备份),数据的快速提取( 目录、索引)。
(1)描述事物的符号记录。
(2)包括数字,文字、图形、图像、声音、档案记录等。
(3)以“记录”形式按统一的格式进行存储。
(4)使用一些介质进行存储,例如文字存在文档中。
(5)数据库可以完成数据持久化保存+快速提取。
(6)数据如何保存:最外层是mysql服务→mysql 数据库→数据表→记录为行,字段为列→数据保存在一行行记录中。
(7)对于存储在数据库中的数据进行管理、使用,需要通过编写一系列的规则→SQL语句( 命令行形式)。
(8)SQL语句按功能分类:增删改查。
(1)将不同的记录组织在一起。
(2)用来存储具体数据。
(1)表的集合,是存储数据的仓库。
(2)以一定的组织方式存储的相互有关的数据集合。
是实现对数据库资源有效组织、管理和存取的系统软件。
(1)是一个人机系统,由硬件、OS、数据库、DBMS、 应用软件和数据库用户组成。
(2)用户可以通过DBMS或应用程序操作数据库。
(1)自20世纪60年代起,第一代数据库系统问世。
(2)是层次模型与网状模型的数据库系统。
(3)为统一管理和共享数据提供了有力的支撑。
(1)20世纪70年代初,第二代数据库一关系数据库开始出现。
(2)20世纪80年代初,IBM公司的关系数据库系统DB2问世,开始逐步取代层次与网状模型的数据库,成为行业主流。
(3)到目前为止,关系数据库系统仍占领数据库应用的主要地位。
引申:SQL+NoSQL组合使用(唯一性)SQL+MQ消息队列
为了解决单台SQL数据库处理并发能力有限的问题,为了提高用户加载时的反馈效率来提高体验感
web→redis→mysql
CPU→缓存→内存→磁盘 以前
i7 i5 一级 二级 缓存
(1)自20世纪80年代开始,适应不同领域的新型数据库系统不断涌现。
(2)面向对象的数据库系统,实用性强、适应面广。
(3)20世纪90年代后期,形成了多种数据库系统共同支撑应用的局面。
(4)一些新的元素被添加进主流数据库系统中。
例如,Oracle支持的"关系对象”数据库模型。
(1)面向Windows操作系统
(2)简单、易用
(1)面向所有主流平台,
(2)安全、完善,操作复杂
(1)面向所有主流平台
(2)大型、安全、完善
免费、开源、体积小
关系型数据库、非关系型数据库
(1)关系型数据库(SQL): 存储的往往是字符、字符串、数值、布尔值等 (磁盘)
(2)非关系型数据库(NoSQL) :存储的往往是图片、视频、语音等( 内存)
(3)时序数据库(TSDB) :心电图,持续性,根据时间点进行变化的一组连续性的数据(时序数据)
主要的核心数据→ Oracle PostgreSQL
菜单、普通数据→ Mysql 缓冲层文件系统
实体-关系 E-R
记录(行)表示了一个实体(的属性)
而E-R图:
实体与实体之间的联系(关系)
即表与表的关系
客户编码:主键(类比入学学号)
主键特性:唯一、 非空
盐值加密→用于与数据库通讯时
1.关系数据库系统是基于关系模型的数据库系统。
2.关系模型的数据结构使用简单易懂的维数据表。
3.关系模型可用简单的“实体关系” (E-R)图来表示。
4.E-R图中包含了实体(数据对象)、关系和属性三个要素。
也称为实例,对应现实世界中可区别于其他对象的“事件”或事物
如银行客户、银行账户等
实体所具有的某一特性, 一个实体可以有多个属性
如“银行客户”实体集中的每个实体均具有姓名、住址、电话等属性
实体集之间的对应关系称为联系,也称为关系
如银行客户和银行账户之间存在“储蓄”的关系
所有实体及实体之间联系的集合构成一个关系数据库
表
记录:行
字段(属性):列
以行+列的形式就组成了表( 数据存储在表中)
数据库
多张表存储在数据库中
"关系型数据库"表与表字段/属性的关联
关系数据库的存储结构是二维表格。
在每个二维表中
(1)每一行称为一条记录,用来描述一个对象的信息。
(2)每一列称为一个字段,用来描述对象的一个属性。
关系型数据库 | 应用举例 |
Oracle,MySQL | 12306用户信息系统 |
SQLServer、 Sybase | 淘宝账号系统 |
Informix、access | 联通手机号信息系统 |
DB2、FoxPRO | 银行用户账号系统 网站用户信息系统. |
MongoDB 、Redis (内存数据库/缓存数据库) K-V键值对、与之类似的Memcache, K-V键值对
redis -memecache对比:
相同点:存储高热数据(在内存中高速运行)
不同点(优势) : redis可以做持 久化保存(保存在磁盘),可以存储对象
K-V: workdir=/usr/ local/nginx/
KEY - VOLUME
关系型数据库:适用于对关系很明确的数据建立模型、定义、存储数据
非关系型数据库:存储海量数据,给与”大数据“进行分析,筛选出有价值的部分
引申: redis 持久化方式
以键值存储数据,数据保存在内存中,但会定期将数据写入磁盘(持久化方式)
高德:实时分析平台,
使用非关系型数据库存储,如果需要持久化,就可以使用redis
1.非关系数据库也被称作NoSQL (Not Only SQL)
2.存储数据不以关系模型为依据,不需要固定的表格式
3.非关系型数据库的优点
(1)数据库可高并发读写
(2)对海量数据高效率存储与访问
(3)数据库具有高扩展性与高可用性
4.常用的非关系数据库:Redis、mongoDB等
1.一款深受欢迎的开源关系型数据库
2.Oracle旗下的产品
3.遵守GPD协议,可以免费使用与修改
4.特点
(1)性能良好、服务稳定
(2)开源、无版权限制、成本低
(3)多线程、多用户
(4)基于C/S (客户端/服务器)架构
(5)安全可靠
5.日志
(1)数据库日志文件用于备份,恢复,故障定位、分析是最核心的部分
(2)mysql 与oracle 日志有所区别
(3)mysql 写一条数据,同步到日志中一条
PS:insert into ky11 (id, name, score) values (1, ' zhangsan' ,20) ;
(4)oracle:重做日志组
1)一个组中至少3个日志成员,轮流存储日志
2)还会有另一个组与之同步/备份
3)阿里云OSS对象存储,一式三份备份(使用重做日志组思想)
4)对象存储:存储大都是一些静态文件,图片、音频、视频
5)不能直接在对象存储中修改数据
6)飞天平台,盘古系统,钟馗:安全,女娲:选举/调度,盘古一式三份
6.Mysql存储引擎
myisam 和innodb
1)myisam: 快速读取,不支持事务
2)innodb: 更注重写,支持事务
7.mysql数据库管理
describe user;
(1)Mysql做为SQL数据库的特性Mysql的语言SQL语句来控制增删改查
(2)增删改查按照类型划分的
(3)具体的语句操作(基操)
基于SQL语句的进阶→更好的通过SQL语句的管理、控制,让Mysql处理能力更为效率
(4)高阶SQL语句用法
1)备份、恢复
2)集群设计、集群演变的理念:
3)单台Mysql→压力过大、同时数据存在单点故障的问题,要做冗余、备份
4)引申出第一个Mysql集群架构→主从复制(主-备)→mysq1性能不均衡→ I/0读写性能不均衡
5)引申出第二个Mysql集群架构→读写分离(主-备) →备用服务器是多个,但是Master服务器单个→Master服务器又存在了单点故障问题
6)引申出第三个架构→ MHA (master HA高可用) → 学习的集群
默认不需要小数点
整数
(5)常用的数据类型
int: 整型 | 用于定义整数类型的数据1 2 3 4 5 10 100 999 |
float: 单精度浮点4字节32位 | 准确表示到小数点后六位 |
double: 双精度浮点8字节64位 | 双精度支持存储的数字小数位更多 |
char: 固定长度的字符类型 | 用于定义字符类型数据。0100 char (70) 12345000000 |
varchar: 可变长度的字符类型 | varchar设置_上限 varchar (10) 123456789 123 |
text: 文本 | |
image: 图片 | |
decimal (5,2): 5个有效长度数字,小数点后面有2位 | 指定长度数组345.21 345.899 345.891 345. 89 345.90 |
Char (10)如果存入数据的实际长度比指定长度要小,会补空格至指定长度,如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错。
截取2/ 截断2
原数据 | .899 | .891 |
截取 | .90 | .89 |
截断 | .89 | .89 |
(6) 数据库管理(基础的控制语言是SQL语句)
SQL 语句
SQL语言分类:
DDL: 数据定义语言,用于创建数据库对象,如库、表、索引等
DML:数据操纵语言,用于对表中的数据进行管理
DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
DCL:数据控制语言,用于设置或者更改数据库用户或角色权限
8.数据库管理操作:
查看数据库结构
describe table_ name;
表A
姓名 年龄 身高 体重
原表(字段):
姓名(varchar(40) ) 年龄(int (4)) 身高(decimal (5,2)) 体重(varchar (10))
desc user;
Field (字段) | Iype(数据类型) | Null | Key | Default | Extra |
Host | char (60) | NO | PRI | ||
User | char(16) | NO | PRI | ||
Password | char (41) | NO | |||
Select_ priv | enum('N', 'Y') | NO | N | ||
Insert_ priv | enum('N', 'Y') | NO | N | ||
Update_ priv | enum('N', 'Y') | NO | N |
Field: 字段名称
Type: 数据类型
Null :是否允许为空
Key:主键.
Default:默认值
Extra :扩展属性,例如:标志符列(标识了种子,增量/步长) 1 2
id 1 3 5 7
auto_ increment 自增长
1.MySQL商业版是由MySQL AB公司负责开发与维护,需要付费才能使用。
2.MySQL社区版是由分散在世界各地的MySQL开发者、爱好者一起开发与维护,可以免费使用。
3.两者区别
(1)商业版组织管理与测试环节更加严格,会比社区版更稳定。
(2)商业版不遵守GPL,社区版遵从GPL可以免费使用。
(3)商业版可获得7*24小时的服务,社区版则没有。
1.第一阵营: 5.0-5.1阵营,可说是早期产品的延续。
2.第二阵营: 5.4-5.6阵营,整合了MySQL AB公司、社区和第三方公司开发的存储引擎,从而提高性能。
3.第三阵营: 6.0-7.1阵营,就是MySQL Cluster版本,为适应新时代对数据库的集群需求而开发。
4.下载网址
http://www.dev.mysql.com/downloads