当前位置: 首页 > news >正文

【MySQL】数据库基础知识

本文基于Linux的MySQL

文章目录

  • 一. 什么是数据库
  • 二. 主流数据库
  • 三. 服务器,数据库和表的关系
  • 四. MySQL架构
  • 五. SQL语句分类
  • 结束语

一. 什么是数据库

数据库本质是对数据内容存储的一套解决方案
如何理解呢?
首先,说到数据内容存储,文件是更为大众所知的数据存储形式。那为什么还会出现数据库呢?
比如这样一个场景,一个文件中,有十万个人的信息,如果要求找出这之中,身份证尾号为1102的,如何操作呢?很多人想,这不就是文件操作,从文件读数据,然后进行筛选。这样的确可以,但这一过程需要认为操作,那我们是否可以将这一过程交给别人完成呢?数据库的功能就是如此。
文件保存数据有以下几个缺点:

  • 文件的安全性问题
  • 文件不利于存储海量数据
  • 文件只有读写功能
  • 文件在程序中控制不方便

数据库就是基于文件系统,提供更好的数据管理能力
实现用户给予字段或者需求,数据库可以对数据进行筛选,并提交结果

PS:数据库是基于文件系统的,所以其存储介质仍是磁盘内存

二. 主流数据库

  • SQL Server:微软的产品,.Net程序员的最爱,适用于中大型项目
  • Oracle:甲骨文产品,适合大型项目复杂的业务逻辑,大部分银行使用,并发一般来说不如MySQL
  • MySQL:甲骨文产品,世界上最受欢迎的数据库,并发性号,但不适合做复杂的业务。主要运用于电商,SNS(社交软件),论坛。对简单的SQL处理效果好
  • PostgreSQL:加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究,都可以免费使用,修改和分发
  • SQLite:轻量级数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。设计目标是嵌入式的,目前已经在很多嵌入式产品中使用,占用资源非常低,在嵌入式设备中,可能只需要几百K的内存就足够了
  • H2:是一个用Java开发的嵌入式数据库,本身只是一个类库,可以直接嵌入到应用项目中

三. 服务器,数据库和表的关系

首先,在MySQL的配置文件/etc/my.cnf中,我们可以查看数据的默认存储路径

在这里插入图片描述
默认存放在/var/lib/mysql


当前的/var/lib/mysql中是这样的

在这里插入图片描述

简单建立一个helloMySQL的数据库,在helloMySQL中创建表,并插入一些数据

create database helloMySQL; 创建数据库
use helloMySQL; 使用数据库
create table student(...);创建数据库表
insert into student (...) values(...) 表中插入数据
select * from student 查询表中数据

在创建数据库后,/var/lib/mysql是这样的

在这里插入图片描述

可以看到,多了一个helloMySQL的目录

紧接着,我们创建表
在这里插入图片描述

helloMySQL目录中就会多出几个文件

在这里插入图片描述

尝试插入数据

在这里插入图片描述

我们简单使用了一下数据库。
其实建数据库在Linux层面就是创建了一个目录建表就是创建文件

  • 所谓安装数据库服务器,其实是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库
  • 为保护应用中实体的数据,一般会在数据库中创建多个,以保存程序中实体的数据

数据库服务器,数据库和表的关系如下:

在这里插入图片描述

四. MySQL架构

在这里插入图片描述

在这里插入图片描述

MySQL的架构可以大致分为三层

  • 第一层:连接器。用于管理连接,权限验证
  • 第二层:分析器,优化器,执行器。用于SQL语句的解析,传递
  • 第三层:存储引擎:插件式存储引擎,数据库管理系统如何存储数据,如何为存储的数据建立索引和如何更新,查询数据等技术的实现方式。

show engines 查看存储引擎
常用的有innoDBMyISAM

五. 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(提交)

结束语

感谢你的阅读

如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。
在这里插入图片描述

http://www.lryc.cn/news/160172.html

相关文章:

  • 算法训练day36|贪心算法 part05(重叠区间三连击:LeetCode435. 无重叠区间763.划分字母区间56. 合并区间)
  • [Android] AndroidManifest.xml 详解
  • idea远程debug调试
  • 离散化,树状数组,P5459 [BJOI2016] 回转寿司
  • 论文复现--VideoTo3dPoseAndBvh(视频转BVH和3D关键点开源项目)
  • JS 检查某个值是否为某个类的实例
  • 生动理解深度学习精度提升利器——测试时增强(TTA)
  • Redis基础知识(四):使用redis-cli命令测试状态
  • 【web开发】4、JavaScript与jQuery
  • 关于el-date-picker组件修改输入框以及下拉框的样式
  • JSCPC f ( 期望dp
  • Django(10)-项目实战-对发布会管理系统进行测试并获取测试覆盖率
  • ABB机器人10106故障报警(维修时间提醒)的处理方法
  • 性能测试 —— 吞吐量和并发量的关系? 有什么区别?
  • Fastjson反序列化漏洞
  • AI 帮我写代码——Amazon CodeWhisperer 初体验
  • 实训笔记9.1
  • 汽车SOA架构
  • L1-017 到底有多二 C++解法
  • motionface respeak视频一键对口型
  • LeetCode——顺时针打印矩形
  • C语言课程作业
  • Yolov8魔术师:卷积变体大作战,涨点创新对比实验,提供CVPR2023、ICCV2023等改进方案
  • 基于小波神经网络的空气质量预测,基于小波神经网络的PM2.5预测,基于ANN的PM2.5预测
  • Vue / Vue CLI / Vue Router / Vuex / Element UI
  • Lesson4-2:OpenCV图像特征提取与描述---Harris和Shi-Tomas算法
  • 华为云云耀云服务器L实例评测|部署spring项目端口开放问题的解决 服务器项目环境搭建MySQL,Redis,Minio...指南
  • MySQL内外连接
  • sql:SQL优化知识点记录(十四)
  • 什么是IIFE(Immediately Invoked Function Expression)?它有什么作用?