2.MySQL数据库基础

MySQL数据库基础

数据库的基本概念

在这里插入图片描述
mysqld,mysql是什么?
mysql是数据库服务的客户端
mysqld是数据库服务的服务端。带d字母表示是一个守护进程,是一个网络服务
mysql本质:基于CS模式的一种网络服务
因为是一个网络服务,所以我们也能用netstat查看到绑定的端口号
在这里插入图片描述
可以看到为3306,在我们之前的配置文件中这个端口号可以改,但最好不要改

mysql是一套什么服务呢?mysql是一套给我们提供数据库存取的服务的网络程序
数据库是在磁盘上存储的一个东西,我们知道文件,为什么我们要以数据库的方式存储到文件中,而不是直接用文件呢?
直接用文件保存数据有以下几个缺点:
文件的安全性问题
文件不利于数据查询和管理
文件不利于存储海量数据
文件在程序中控制不方便
一般的文件确实提供了数据的存储功能,但是文件并没有提供非常好的数据管理能力,也就是用户纯手动对文件数据的管理效率太低了,比如这个文件有十万行内容,每一行都是一个IP地址,我想让你帮我去统计一下IP地址以120开头的IP有多少个以及各自是什么,如果没有数据库,正常的操作就是用你的c/c++语言,按行读取这个文件,边读取边判断统计。所以这个提取分析的过程需要程序员自己去做,对文件内容的增删查改这些工作都让程序员去做是很不方便的。
所以数据库的本质:对数据库内容存储的一套解决方案,客户端给服务器的字段要求,服务器直接给你结果。
在这里插入图片描述

数据库概念现在对于我们来说还是太抽象了,下面我们来见一见什么是数据库
样例:使用mysql建立一个数据库,建立一张表结构,插入一些数据,对比一下mysql在Linux中的文件是如何表现的

在这里插入图片描述
这些文件在哪里呢?
在我们之前的my.cnf文件中可以看到mysqld服务,数据所存放的位置
在这里插入图片描述
在这里插入图片描述
建立数据库
在这里插入图片描述
再次查看对比,发现目录中多了一个helloworld目录
在这里插入图片描述
进目录可以看到有一个配置文件
在这里插入图片描述
所以结论:建立数据库,本质就是Linux下的一个目录

创建一个最普通的表结构,创建表也有语法细节,不过我们后面再说
在这里插入图片描述
再在Linux下查看
在这里插入图片描述
在数据库内,建表本质就是在Linux下创建对应的文件

主流数据库

数据库描述
SQL Server微软的产品,.Net程序员的最爱,适合中大型项目。
Oracle甲骨文产品,适合大型项目,复杂的业务逻辑,并发量一般来说不入MYSQL。如银行复杂业务等,用Oracle。Oracle服务要收费,所以在中小型公司不首选。
PostgreSQL加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
SQLite是一款轻型的数据库,遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常低,在嵌入式设备中,可能只需要几百K的内存就够了。
H2是一个用java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。
MySQL世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要在电商,SNS(就是社交网络,比如QQ,微信),论坛。对简单的2SQL处理效果好。免费,获取成本低,效率不低,应付千百万级的应用没有问题

选择一个数据库,不仅仅是技术有优势,和其对应的一个生态有很大关系。生态是什么?生态是一个项目是否开源,是不是经过了事件的考量,是否已经修复了很多不足,是否有很活跃的社区,官方是否匹配了完整的文档。

服务器,数据库,表关系

所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。如聊天系统,存储淘宝下单系统,是一个应用就会为它建立一个数据库。
为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
数据库服务器、数据库和表的关系如下:
在这里插入图片描述

MySQL架构

MySQL架构:MySQL是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如Unix/Linux、Windows、Mac和Solaris。各种系统在底层实现方面各有不容,但是MySQL基本上能保证在各个平台上的物理体系结构的一致性。
在这里插入图片描述
mysql主要的功能主要由上三层构成:
第一层叫做连接池,对于mysql来讲,首先要做好连接管理,然后做权限认证,保证安全的方面就是在这一层实现的。
第二层:客户端会给服务器下达sql命令,mysql会对sql语句进行语法分析做些语法优化,按照自己sql的协议,将sql语句再下达给下一层
第三层:存储引擎层,这一层特别像我们在计算机结构体系里的驱动层,有不同种类的存储引擎。从上层接收经过词法语法分析转换过后的sql语句,再交给对应的存储引擎,然后对文件进行增删查改,真正去办事的是第三层。怎么会有这么多存储引擎呢?数据库主要是为我们提供存取服务的,但是数据有种类的差别,有的是文档类型的,有的是二进制类型的,有的是大文件类型的,针对不同种类的数据,可能采用不同的存储方式,表现出来的效率是有差别的,所以mysql给我们提供了各种各样的存储引擎,诸如MyISAM更适合对我们的大文本进行读取,InnoDB有很丰富的索引支持,方便我们快速的查找,支持引擎的热插拔,你想选择哪一个引擎就把那个引擎加载到mysql里,所以它可以根据不同的场景有用户来配置mysql底层所采用的不同的存储引擎来满足自己的上层存储需求。

总结:
第一层:解决连接管理和安全问题
第二层:做词法语法分析以及sql语句的优化
第三层:具体来完成数据存储方案
第四层:依赖对应的文件系统,然后帮我们把数据以二进制的方式存到特定的目录下,然后构建特定的普通文件帮我们把数据存储好。

SQL语句分类

分为三种:
DDL(data definition language)数据定义语言,用来维护存储数据的结构,也就是建,改,删表的结构。代表指令:create,drop,alter
DML(data manipulation language)数据操纵语言,用来对数据进行操作,也就是对表里面的内容进行增删查改。代表指令:insert,delete,update
DML中又单独分了一个DQL,数据查询语言,代表指令:select
DCL(Data Control Language)数据控制语言,主要负责权限管理和事务。代表指令:grant,revoke,commit

存储引擎

MySQL的核心就是插件式存储引擎,支持多种存储引擎。
查看存储引擎
在这里插入图片描述
最常用的存储引擎就两个:InnoDB,MyISAM,这也就是为什么我们配置my.cnf的时候默认的存储引擎设置为InnoDB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值