2024年C C++最全【MySQL系列】MySQL数据库基础(2),满满干货

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

开源、免费~~

现在已经被Oracle收购了~~

(2)Oracle数据库

Oracle数据库 是世界上最强的数据库~~

但是,它是收费的,而且收费还是挺贵的~~

厂商也叫做Oracle~~

现在也是由Oracle来负责维护Java~~

对于数据安全性要求极高,以及不差钱的企业~~

如 银行 用的就是Oracle数据库~~

(3)SQL Server数据库

SQL Server数据库,由 微软(搞Windows,office的公司) 研发的数据库~~

很多学校的数据库的课程,都使用该数据库来讲解的~~

(4)SQLite数据库

SQLite数据库,是世界上"装机量"最大的数据库~~

即使有很多人没有听说过~~

其实,各种安卓上机器自带的内置数据库就是SQLite数据库~~

主要的特点就是 小巧轻量~~

其他数据库 一不小心 就达到 以G为单位,而它仅仅不到几百K~~

虽然 有这么多的数据库~~

但是 不管哪一个数据库~~

其实最核心的东西~~

都是 SQL(编程语言)~~

掌握了SQL,未来无论去使用哪个数据库,都可以快速的上手~~

虽然 不同的数据库,支持的SQL语法都略有差异~~

但是,90%以上的都是相同的~~

上述的数据库,都称为 关系型数据库~~

其典型的特征,就是使用"数据表"的格式来组织数据的~~

即 和excel表格的形式差不多~~

随着时代的发展,数据库也有了一些本质的升级~~

发展到2022年,现在业界还有很多流行的"非关系型数据库"~~

不再使用"数据表",也不再使用SQL了~~

这种数据库 也被称为 NoSQL~~

如 Redis、MongoDB、HBase…

二、MySQL数据库的下载与安装(Windows版)

MySQL安装视频_哔哩哔哩_bilibili

虽然安装时出现的页面可能不一样的,但是都大差不差的~~

怎样算是安装好了~~

开始菜单里面,有mysql的选项~~

如果启动起来,说明安装成功了~~

当然,如果要 从 cmd 窗口进入,输入 mysql -u root -p +密码 的这种就没有必要了~~

在学习阶段的时候,也没有啥必要(公司里面很多事那样做的,但是对于现阶段的我们没有必要)~~

直接根据上面分享的视频链接即可~~

三、MySQL的结构

3.1 MySQL 是一个"客户端-服务器"结构的程序~~

ps:

举个例子:

有一天,张三 来到楼下的 一家餐厅 吃饭~~

张三说:老板,来一份蛋炒饭~~

老板说:稍等~~

不一会儿,老板就把蛋炒饭端到了张三的面前~~

在上述情景里面,张三 是主动的一方,并不是被 餐厅 拉进去吃饭,餐厅是被动的一方,

即 张三 就是 客户端,而 餐厅 就是 服务器~~

在计算机里面,客户端和服务器之间 通过网络的形式进行连接~~

客户端:主动的一方 就是客户端~~

服务器:被动的一方 就是服务器~~

一家餐厅,不可能仅仅只有 张三 进去吃饭,还有李四、王五等等~~

所以说,一个服务器 同一时刻,可能要给多个客户端 提供服务~~

张三 想要去吃饭的时间 是随机的,餐厅也不知道哪个人是什么时间来就餐~~

所以,它会从早开到晚才关门,甚至是二十四小时营业~~

所以说,因为服务器不确定客户端啥时候来,服务器往往要长时间运行,甚至是7*24小时运行~~

客户端给服务器发送的数据,称为"请求"(来一份蛋炒饭)~~

服务器给客户端返回的数据,称为"响应"(端上来一份蛋炒饭)~~

换句话说,安装了MySQL,就是 既安装了客户端(黑框框),也安装了服务器~~


客户端与服务器 在同一个主机上~~

MySQL客户端和MySQL服务器,可以在同一个主机上,也可以在不同的主机上~~

实际工作中,更常见的是 客户端和服务器 在不同主机上~~

在当前的学习阶段,就直接安装在一个主机上了~~

虽然是同一个主机,但是仍然是通过网络进行通信的~~

对于MySQL来说,存储和管理数据,都是由 MySQL服务器 来负责的~~

当然,如果把客户端和服务器都部署在一个主机上了,但是电脑没有联网。这个时候客户端依然能访问服务器~~

如果插上网线,连接wifi,网络是通畅的,此时电脑可以通过网络访问其他的主机~~

如果电脑没有插网线,连不上网,那么此时电脑只是访问不了别的主机,但是自己还是能访问自己的~~


3.2 MySQL服务器这里,是如何组织数据的~~

一个MySQL服务器上面可以包含多个"数据库",

此处的"数据库"其实是"数据集合",这里面就放了 一些有关联关系的数据~~

可以理解成,一栋楼 里面有好几家餐厅,餐厅之间并不影响~~

餐厅里面的菜品 就类似于 数据库里面存的数据表~~

数据表(学生表)
| 学号 | 姓名 | 性别 | 学院 | 专业 | 班级 |
| 001 | 张三 | 男 | 计算机学院 | 软件工程 | 2班 |
| 002 | 李四 | 男 | 计算机学院 | 物联网 | 1班 |
| … | … | … | … | … | … |

每一个表里有很多行,每一行称为"一条记录";

每一行里有很多列,每一列表示不同的含义,每一列称为一个"字段"(field)~~

数据库 整体的一个结构:

数据库—>数据表—>行—>列~~

四、数据库的操作

4.1 显示当前的数据库

我们进入 MySQL客户端时,需要去看看当前服务器上有哪些数据库~~

这就需要可以 显示当前数据库 的命令行:

show databases;

那么,此时我们就可以看出 MySQL服务器 自带了4个数据库了~~

当然,我们也可以自己创建数据库,这个在下面介绍到~~

对此,我们需要注意的是:

  1. 对于其自带的数据库,没事千万不要乱碰,容易搞出问题~~
  2. 数据库中的命令行啥的,一律用的是英文的字母或符号,大小写没有啥关系~~

4.2 创建数据库

自己可以自己来创建数据库,创建数据库的命令行就是:

create database 数据库名;

数据库名的命名规则 依旧是和Java中创建变量的命名规则是一样的~~

当然,也可以这样创建数据库:

create database if not exists 数据库名;

意思是:如果这个数据库名不存在,那么就创建一个以该数据库名为名的数据库~~

如果这个数据库名存在,那就不创建了~~

下面我们来创建一个姓名为java的数据库:

这下说明,java数据库已经创建成功,我们可以看看此时存在的数据库:

当然,有的时候也会有创建错误,或者啥啥错误的情况,不要慌,下面也会有错误的提示~~

大部分的错误提示 都是非常清楚的,已经告诉过哪里有问题了~~

比如:

错误提示 在哪句话附近错了提示的明明白白~~


4.3 选中数据库

如果我们想要 针对某一个数据库进行具体的操作,如 各种增删改查 数据库,就需要先选中数据库:

use 数据库名;

此时,我们可以来选中 刚刚创建的 java数据库~~

在对某一个数据库 进行操作时,必须得要选中这个数据库~~

类似于 RTS游戏~~

需要先选中某个单位,再释放技能~~


4.4 删除数据库

数据库删除非常危险!!!

数据库删除非常危险!!!

数据库删除非常危险!!!

删除数据库的命令行是:

drop database 数据库名;

此时,当前所有的数据库是:

删除java数据库后:

观察此时所剩的数据库,发现java数据库已经被删除:

【注意】

删除数据库操作十分危险~~

删库其实是把库里的数据都删除了~~

千万不要在公司的服务器上删除数据库,尤其是不要在生产环境上进行删除~~


4.5 创建数据库时的存储位置

那么,我们所创建的数据库,它的存储位置要怎么去查找到的呢~~

首先,我们需要找到 MySQL数据库的服务器,右键,点击属性:

然后,找出MySQL配置文件的位置,复制其中相关路径:

最后,粘贴相关路径,找到Data文件夹,找到 存储位置:


注意:

当我们点开Data数据库时~~

当我们在MySQL客户端输入 show databases; 时 ~~

会发现 数据库的结果不一样:

好像有一个 information_schema数据库 匹配不上~~

实际上~~

Information_schema数据库 是视图,不是真表,是从别的库毛过来的数据,不需要单独存储~~

注意:

在Data文件夹 目录下,新建一个 名字为java的文件夹,即新建了一个java数据库,

那么 在 MySQL客户端下面输入 show databases; 后,会出现java数据库~~

当然,反过来创建,或者是删除,也都是如此~~

千万不要把自带的数据库删除了~~

这个是 客户端 和 服务器 在一台电脑的情况下,其他的情况不是很清楚~~

五、常用的数据类型

MySQL是一个"关系型数据库",典型特点就是 通过表的形式来组织数据~~

即 每一行,其列数都是一样的;每一列,其数据类型都是相同的~~

数据类型一方面 一方面能够使我们对数据进行处理,一方面也能够对数据进行校验和检查~~


5.1 数值类型

数值类型 包含了 整型和浮点型:

数据类型大小说明对应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指整个数字的有效数字位数不超过M,D指整个数字小数点后的位数不超过D,会发生精度丢失Float
double(M,D)8字节Double
decimal(M,D)M/D最大值+2双精度,M指整个数字的有效数字位数不超过M,D指整个数字小数点后的位数不超过D,不会发生精度丢失Bigdecimal
numeric(M,D)
M/D
最大


+2
| 和decimal一样 | Bigdecimal |

注意:

float、double的存储,基于IEEE754标准(规定了浮点数是如何存储的)~~

但是,这个标准不能特别精确表示浮点数~~

比如说,6.0000000000002存储的可能就是6.0~~

那么,decimal就出现了~~

相比于float和double,decimal相当于通过字符串的方式来表示浮点数,其优势是可以更加精确的表示浮点数、精确计算~~

但是劣势就是 计算时消耗的时间更多,存储空间也更多~~

所以说,除非是特别需要,才考虑使用decimal~~


5.2 字符串类型

数据类型大小说明对应java类型
varchar(size)
0-65,535
字节
可变长度字符串
String
text
0-65,535
字节
长文本数据
String
mediumtext
0-16 777 215
字节
中等长文本数据
String
blob
0-65,535
字节
二进制形式的长文本数据byte[ ]

说明:

varchar(50),这个字段最多存50个字符,也可能是更短的~~

这个是动态的,根据存入的数据长度来自适应空间~~

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

但是劣势就是 计算时消耗的时间更多,存储空间也更多~~

所以说,除非是特别需要,才考虑使用decimal~~


5.2 字符串类型

数据类型大小说明对应java类型
varchar(size)
0-65,535
字节
可变长度字符串
String
text
0-65,535
字节
长文本数据
String
mediumtext
0-16 777 215
字节
中等长文本数据
String
blob
0-65,535
字节
二进制形式的长文本数据byte[ ]

说明:

varchar(50),这个字段最多存50个字符,也可能是更短的~~

这个是动态的,根据存入的数据长度来自适应空间~~

[外链图片转存中…(img-LPP8JKsS-1715534799365)]
[外链图片转存中…(img-AXiYzYdL-1715534799365)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值