数据库——MySQL数据库基础

一、数据库

1.什么是数据库

        数据库是一类软件,这一类软件可以用来“管理数据”(能对数据进行保存和增删改查),在学习数据结构时我们也是在对数据进行增删改查,那么他们有什么区别呢?区别就在与数据结构是实现数据增删改查的具体方式,数据库则是管理数据的软件,实现数据库软件内部就用到了大量的数据结构。在我们电脑上存储与管理数据应用的是文件夹,那么有文件夹为什么还要弄一个数据库呢?因为文件夹有几个缺点:文件夹中数据不够安全,不利于进行数据的查询和管理,不利于存储海量的数据,在程序中控制不方便,为了解决上述问题,有专家设计出了更加利于管理数据的软件——数据库,它可以更有效的管理数据。数据库还可以提供远程服务,既通过远程连接来使用数据库,因此也称为数据库服务器。

2.数据库的分类

        数据库可以分为关系型数据库非关系型数据库,在后面文章我主要进行操作与讲解的MySQL就是关系型数据库,使用表的结构来组织数据。

(1)关系型数据库

        关系型数据库(RDBMS)是指采用了关系模型来组织数据的数据库。简单来说,关系模型指的就是二维表格模型,而一个 关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。基于标准的SQL,只是内部一些实现有区别。常用的关系型数据库如:

  • Oracle:甲骨文产品,适合大型项目,适用于做复杂的业务逻辑,如ERP、OA等企业信息系 统。收费。
  • MySQL:属于甲骨文,不适合做复杂的业务。开源免费。
  • SQL Server:微软的产品,安装部署在windows server上,适用于中大型项目。收费。

(2)非关系型数据库

        不规定基于SQL实现。现在更多是指NoSQL数据库,如:

  • 基于键值对(Key-Value):如Memcache、Redis
  • 基于文档型:如MongoDB
  • 基于列族:如Hbase
  • 基于图型:如Neo4j

二、MySQL基础

1.结构

        MySQL是一个“客户端”-“服务器”结构程序(C/S结构),主动发起通信的一方称为“客户端”(Client),被动接受通信的一方称为“服务器”(Server),这里客户端给服务器发送的数据称为“请求”(Request),服务器给客户端返回的数据称为“响应”(Response),客户端程序和服务器之间数据交互方式最主要就是通过“网络”,客户端程序一般就是指咱们普通用户的应用程序,服务器一般是藏在公司机房中的,我们无法直接感触到。

2.存储方式

        上面介绍了MySQL是一个C/S结构的程序,“服务器”部分是他的本体,用来存储和管理数据,MySQL服务器又是使用硬盘来进行存储数据,所以像我们在电脑上下载的MySQL就是将MySQL的服务器与客户端都下到了我们电脑上,进而我们在对MySQL操作时,MySQL就会对我们的硬盘进行相应的操作。

3.数据组织方式

(1)数据库(database)

        这里我们所说的数据库与上面介绍的数据库不是一个意思,这里的数据库是一个逻辑的集合,一个MySQL服务器上可以有很多这样的数据集合,在实际开发中会把一些有关联的数据放到一起就构建成了数据集合。

(2)数据表(table)

        在一个数据库中可以储存不同的数据,每组数据都使用数据表来存储,这就相当于“表格”类似于Excel,一个表里有很多行(row),每一行都是一条“记录”/“数据”,每一行又包含了很多列,每一列也称为一个“字段”(field)。下面我画一个图来直观展示数据库与数据表的关系:

(3)常用数据类型

MySQL常见数据类型
数据类型大小说明对应Java类型
bit[(M)]M指定位数,默认为1二进制数,M范围从1到64,存储数值范围从0到2^M-1常用Boolean对应bit,此时默认位数是1,即只能存0和1
tinyint1字节Byte
smallint2字节Short
int4字节Integer
bigint8字节Long
float(M,D)4字节单精度,M指定长度,D指定小数位数。会发生精度丢失Float
double(M,D)8字节Double
decimal(M,D)M/D最大值+2双精度,M指定长度,D表示小数点位数。精确数值BigDecimal
numeric(M,D)M/D最大值+2和decimal一样BigDecimal
varchar(size)0~65535字节可变长度字符串String
text0~65535字节长文本数据String
mediumtext0~16777215字节中等长度文本数据String
blob0~65535字节二进制形式的长文本数据byte[]
detetime8字节范围从1000到9999年,不会进行时区的检索及转换。java.util.Date、java.sql.Timestamp
timestamp4字节范围从1970到2038年,自动检索当前时区并进行转换。java.util.Date、java.sql.Timestamp

         在这里,我对上表部分数据类型再进行进一步的说明:

①关于float和double精度丢失的演示:

         上面演示中可以看见0.1与0.2相加结果并不与0.3相等,这是因为IEEE754标准导致的,所以在进行两个浮点数比较时,不能使用==,而是需要通过作差得出小于一个误差值的方式,这里就又要说到decimal这个类型了,这个在上述表格中显示是精确数值,那么它是如何做到的呢?decimal虽然可以表示小数,但是它并不是按照IEEE754的标准方式来表示,而是类似于“字符串”的方式来进行表示,所以使用decimal时会付出更多的空间,运算的时候也会消耗更多的时间,但是保存数据是更精确的。

②关于varchar(size)中size的进一步解释:

        varchar(size)是可变长的字符串,这里的size表示最大长度,假设这里size设置为1024,意思就是这一列最多可以存储1024个字符,如果当前字符串比较短,可能就占10个字符那么长,这里会根据存储内容进行动态扩容,设置长度上限是为了兜底,数据库存储数据的时候,需要关注当前占用多少空间的。另外,带有中文,一个汉字也算一个字符,例如varchar(10)可以存储10个汉字。

三、结语

        文章到这也算是接近尾声了,从今天开始,博主就开始数据库相关的知识分享了,计划是对关系型数据库和非关系型数据库都进行讲解,这里关系型数据库主要就是选取MySQL进行讲解,非关系型数据库会选择Redis进行讲解,本篇文章以及后续文章有什么错误或者问题欢迎在评论区留言,博主一定会尽自己所能帮助你,如果感觉本篇文章写的还不错,麻烦点赞收藏支持一波啦~~你的支持就是我持续更新的动力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值