既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
现在的世界,就是由数据构成的世界~~
价格、颜色、身高、…都是数据~~
既然有这么多的数据,就需要把数据保存起来~~
在没有计算机的时候,写在纸上,有的时候会非常不方便~~
当有了计算机,使得保存和处理数据 非常方便,很友好~~
而 数据库,就是一类 专门负责管理(增、删、改、查)数据 的软件~~
ps:
数据结构 和 数据库 虽然都有"数据",但是其中的区别还是非常大的:
数据结构:是一种"结构",是一种"抽象的学科";
数据库:是一类"具体的软件",可以下载、安装,对其进行操作…
但是,我们也要明确~~
在实现数据库的时候,背后也会应用到很多的数据结构~~
1.2 数据库的分类
我们都知道了~~
数据库是一类具体的软件~~
因此数据库会有很多具体的实现~~
(1)MySQL数据库
MySQL数据库就是本专栏介绍的内容~~
开源、免费~~
现在已经被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的选项~~
如果启动起来,说明安装成功了~~
当然,如果要 从 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个数据库了~~
当然,我们也可以自己创建数据库,这个在下面介绍到~~
对此,我们需要注意的是:
- 对于其自带的数据库,没事千万不要乱碰,容易搞出问题~~
- 数据库中的命令行啥的,一律用的是英文的字母或符号,大小写没有啥关系~~
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 |
tinyint | 1字节 | Byte | |
smallint | 2字节 | Short | |
int | 4字节 | Integer | |
bigint | 8字节 | 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~~
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
tinyint | 1字节 | | Byte |
| smallint | 2字节 | | Short |
| int | 4字节 | | Integer |
| bigint | 8字节 | | 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~~
[外链图片转存中…(img-IwiE45Y8-1715757500493)]
[外链图片转存中…(img-fFZhJ7Gf-1715757500494)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新