【数据库初阶】数据库基础知识

图片名称
🎉博主首页: 有趣的中国人

🎉专栏首页: 数据库初阶

🎉其它专栏: C++初阶 | C++进阶 | 初阶数据结构

在这里插入图片描述

亲爱的小伙伴们,大家好!在这篇文章中,我们将深入浅出地为大家讲解 数据库基础知识 帮助您轻松入门,快速掌握核心概念。


如果文章对您有所启发或帮助,请别忘了 点赞 👍、收藏 🌟、留言 📝 支持!您的每一份鼓励,都是我持续创作的源动力。让我们携手前行,共同进步!

文章目录

    • @[toc]
  • 1. MySQL 的基本使用方法
    • 1.1 连接服务器
    • 1.2 Windows 系统开启Mysql服务
  • 2. 什么是数据库
    • 2.1 mysql 与 mysqld
    • 2.2 Linux 系统中的数据库
    • 2.3 创建数据库和数据库表
  • 3. mysqld 架构
    • 3.1 架构解释
    • 3.2 查看存储引擎
  • 4. SQL语句分类

上一篇文章中,博主介绍了 :

  • Ubuntu 系统中如何安装和卸载 MySQL;

建议将上一篇文章看完之后再来看这篇文章,链接如下:

【MySQL初阶】Ubuntu 安装与卸载 MySQL

那么接下来正文开始:



1. MySQL 的基本使用方法

1.1 连接服务器

  • 实际上,MySQL 是一种 网络服务,它允许别的主机来访问本地的数据库;
  • 因此,当一个主机要访问另一台主机上的数据库是,可以采用一下命令:
    • mysql -h 主机IP地址 -P mysql网络端口号 -u 登录用户 -p 用户密码;
    • 由于我们现在访问的大概率都是本地的主机,所以前两个可以省略,采用如下方式即可:
      • mysql -uroot -p
    • 至于这里为什么会出现端口号呢?我们知道 mysql 的默认端口号是 3306;
    • 但是实际上在很多公司中,为了保护数据的安全,经常会将这个默认端口号进行修改,我们也是可以在MySQL的配置文件中进行修改的:
      • 在这里插入图片描述

      • 在这里插入图片描述

1.2 Windows 系统开启Mysql服务

  • 我们可以输入 Win + r,然后输入 services.msc 打开服务管理器;
  • 找到 Mysql,通过图标进行停止、暂停、重启。

在这里插入图片描述


2. 什么是数据库

  • 在操作系统中,有文件管理,为什么还需要数据库呢?
  • 可以想象一下,有一个包含十万行IP地址的文件,如果现在要找出IP地址是120开头的,且要统计一下出现的次数;
  • 作为程序员,我们可以在cpp或者java等语言中一行行读取文件内容,并进行比对,稍微有点麻烦;
  • 但是数据库,是在磁盘或者内存中存储的特定结构组织的数据,我们只需要输入特定的指令,数据库就知道我们想要干什么,然后它就会把我们想要的结果告知我们;
  • 所以,可以在磁盘或者内存中找到 存储数据库的方案;
  • 那么我们应该如何让数据库知道我们想要做什么呢?

2.1 mysql 与 mysqld

  • 实际上,我们在下载MySQL的时候,是下载了两个东西,第一个是mysql,第二个是mysqld
  • 其中mysql是客户端,mysqld是服务器;
    • 这里的d表示的是daemon,守护进程的意思。

我们可以来看一下:

在这里插入图片描述

  • 因此MySQL的本质是基于CS模式的网络服务!
  • 我们平时使用的就是客户端mysql,而mysqld就是读取了我们的指令,然后在内部分析我们的指令,然后在磁盘上进行增删查改;
  • 我们可以抽象的想象成数据库就是在磁盘上的 “文件”。

看一下下面这幅图:

在这里插入图片描述

稍微总结一下:

  1. 一般情况下,文件系统确实提供了数据存储功能,但是并没有为用户提供非常好的数据管理功能
  2. 所以数据库的本质就是对数据内容存储的一套解决方案,用户只要给出字段或者要求,数据库直接给出回显就行。

2.2 Linux 系统中的数据库

  • Linux中,在MySQL配置文件中,有一个字段是 datadir,表示的是数据库的存储位置,我们可以来验证一下:

    • 在这里插入图片描述
  • 然后,我们登录一下mysql,看一下有什么数据库:

    • 在这里插入图片描述

    • 发现在 /var/lib/mysql 路径中,深颜色的就代表着我们已经创建的数据库,因此数据库在 Linux 系统中就是目录!

2.3 创建数据库和数据库表

  • 我们可以重新创建一个数据库,比如就叫helloworld:

    1. 创建数据库:

      create database helloworld;
      
    2. 使用数据库:

      use helloworld;
      
    3. 创建数据库表:

      create table student(
          id int,
          name varchar(32),
          gender varchar(2)
      );
      
    4. 为表中插入数据:

      insert into student (id, name, gender) values (1, '张三', '男');
      insert into student (id, name, gender) values (2, '李四', '女');
      insert into student (id, name, gender) values (3, '王五', '男');
      
    5. 查询表中数据:

      select * from student;
      
  • 在这里插入图片描述

  • 我们可以看一下在数据库存储的位置中发生了些什么:

    • 在这里插入图片描述

    • 可以发现,我们创建的表实际上就会在数据库这个目录中创建出一个文件

    • 这个文件是二进制形式的,并不是把我们的表完全一样的存储起来:

      • 在这里插入图片描述

再总结一下:

  1. 建立数据库,本质就是在Linux中建立一个目录;
  2. 在数据库中建立一个表,本质就是在在数据库目录中建立一个文件;
  3. 数据库本身也是文件,只不过这些文件并不是直接由用户操作,而是数据库服务器帮我们操作!

因此就有了下面一幅图:

在这里插入图片描述


3. mysqld 架构

3.1 架构解释

MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/LinuxWindowsMacSolaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。

在这里插入图片描述

mysqld 层状解释

  1. 第一层是连接池,因为MySQL是网络服务,所以需要处理来连接的主机;
  2. 第二层主要目的是为了检查客户端的指令是否是合法的,要进行词法分析、语法分析,除此之外还要对这个指令进行优化
  3. 对于优化后的指令,第三层就是存储引擎,这层有点类似于OS中的驱动层,对于每种指令,一般都会选择最优秀、效率最高的引擎来处理,常用的有InnoDBMyISAM,其中InnoDB支持transaction事务),这也是它常用的原因;
  4. 最后一层就是OS中的文件系统

3.2 查看存储引擎

  • 存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法
  • 我们可以用指令 show engines 来查看MySQL的引擎:
    • 在这里插入图片描述

4. 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/942904.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

汽车IVI中控开发入门及进阶(四十):FDK AAC音频编解码软件库

概述: FDK AAC是一个用于编码和解码高级音频编码格式音频的开源软件库,由Fraunhofer IIS开发,并作为Android的一部分包含在内。它支持多种音频对象类型,包括MPEG-2和MPEG-4 AAC LC、HE-AAC、HE-AACv2以及AAC-LD和AAC-ELD,用于实时通信。编码库支持高达96 kHz的采样率和多…

Python爬虫:速卖通aliexpress商品详情获取指南

在数字化时代,数据已成为企业竞争的关键资源。对于电商行业而言,获取竞争对手的商品信息是洞察市场动态、优化自身产品策略的重要手段。速卖通(AliExpress)作为全球知名的跨境电商平台,其商品信息的获取自然成为了许多…

要查询 `user` 表中 `we_chat_open_id` 列不为空的用户数量

要查询 user 表中 we_chat_open_id 列不为空的用户数量,你可以使用以下 SQL 查询语句: SELECT COUNT(*) FROM user WHERE we_chat_open_id IS NOT NULL AND we_chat_open_id ! ;解释: SELECT COUNT(*): 表示要计算符合条件的行数。FROM us…

学习思考:一日三问(学习篇)之匹配VLAN

学习思考:一日三问(学习篇)之匹配VLAN 一、学了什么(是什么)1.1 理解LAN与"V"的LAN1.2 理解"V"的LAN怎么还原成LAN1.3 理解二层交换机眼中的"V"的LAN 二、为何会产生需求(为…

mac中idea菜单工具栏没有git图标了

1.右击菜单工具栏 2.选中VCS,点击添加 3.搜索你要的工具,选中点击确定就添加了 4.回到上面一个界面,选中你要放到工具栏的工具,点击应用就好了 5.修改图标,快捷键或者右击选中编辑图标 6.选择你要的图标就好了

深度学习中batch_size

Batch size调整和epoch/iteration的关系 训练数据集总共有1000个样本。若batch_size10,那么训练完全体样本集需要100次迭代,1次epoch。 训练样本10000条,batchsize设置为20,将所有的训练样本在同一个模型中训练5遍,则…

Vue使用Tinymce 编辑器

目录 一、下载并重新组织tinymce结构二、使用三、遇到的坑 一、下载并重新组织tinymce结构 下载 npm install tinymce^7 or yarn add tinymce^7重构目录 在node_moudles里找到tinymce文件夹,把里面文件拷贝一份放到public下,如下: -- pub…

【每日学点鸿蒙知识】蓝牙Key、页面元素层级工具、私仓搭建、锁屏显示横幅、app安装到真机

1、HarmonyOS 蓝牙key模块? 蓝牙key模块setCharacteristicChangeNotification后无法在BLECharacteristicChange订阅事件中监听到特征值变化 步骤: 调用setCharacteristicChangeNotification接口,使characteristic的notify属性为true调用wri…

如何记录日常笔记

如何使用Obsidian来记录日常的笔记吗?比如会议记录、读书笔记。 我认为,首先需要做好的就是建立一个单独的分类,比如设置会议记录的文件夹、读书笔记的文件夹,这样各个笔记相互不干扰。 而做日常记录,和我们进行卡片…

`we_chat_union_id IS NOT NULL` 和 `we_chat_union_id != ‘‘` 这两个条件之间的区别

文章目录 1、什么是空字符串?2、两个引号之间加上空格 好的,我们来详细解释一下 we_chat_union_id IS NOT NULL 和 we_chat_union_id ! 这两个条件之间的区别,以及它们在 SQL 查询中的作用: 1. we_chat_union_id IS NOT NULL 含…

NS3学习——tcpVegas算法代码详解(2)

NS3学习——tcpVegas算法代码详解(1)-CSDN博客 目录 4.TcpVegas类中成员函数 (5) CongestionStateSet函数 (6) IncreaseWindow函数 1.检查是否启用 Vgas 2.判断是否完成了一个“Vegas 周期” 2.1--if:判断RTT样本数量是否足够 2.2--e…

【蓝桥杯——物联网设计与开发】拓展模块3 - 温度传感器模块

目录 一、温度传感器模块 (1)资源介绍 🔅原理图 🔅STS30-DIS-B 🌙引脚分配 🌙通信 🌙时钟拉伸(Clock Stretching) 🌙单次触发模式 🌙温度数据转…

项目2路由交换

背景 某学校为满足日常教学生活需求,推动数字校园的建设,学校有办公楼和学生宿舍楼和服务器集群三块区域,请合理规划IP地址和VLAN,实现企业内部能够互联互通现要求外网能通过公网地址访问服务器集群,学生和老师能正常…

计算机网络概要与习题

第1章 概论 1、计算机网络 2、互联网 3、计算机网络体系结构 分层模型 OSI/RM 7层模型 TCP/IP 5层模型 协议、PDU、SDU、SAP等术语 数据封装(计算) 第2章 数据通信基础 1、数据通信系统组成 2、主要性能指标 数据传输速率 码元速率 时延 …

使用VsCode编译调试Neo4j源码

文章目录 使用VsCode编译调试Neo4j源码1 简介2 步骤1 下载源码2 依赖3 构建Neo4j4 运行5 安装VsCode扩展6 **调试** 使用VsCode编译调试Neo4j源码 1 简介 Neo4j作为领先的图数据库,在存储、查询上都非常值得分析学习。通过调试、日志等方法跟踪代码工作流有助于理…

HTML-CSS(day01)

W3C标准: W3C( World Wide Web Consortium,万维网联盟) W3C是万维网联盟,这个组成是用来定义标准的。他们规定了一个网页是由三部分组成,分别是: 三个组成部分:(1&…

Linux文件的压缩和解压

【图书推荐】《Ubuntu Linux系统管理与运维实战》_学ubuntu哪本书好-CSDN博客 【图书介绍】】几本Linux系统管理与运维图书_朱文伟 linux驱动-CSDN博客 《Ubuntu Linux系统管理与运维实战(Linux技术丛书)》(张春晓,肖志健)【摘要 书评 试读…

基于springboot的海洋知识服务平台的设计与实现

基于springboot的海洋知识服务平台的设计与实现 写在前面 需要源码加lzlv58787 开发内容 编程语言:Java / Vue2 框架: SpringBoot Shiro Mybatis-plus 项目结构 后端管理系统前台Web 后端管理系统 前台Web

论文解读 | EMNLP2024 一种用于大语言模型版本更新的学习率路径切换训练范式

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 点击 阅读原文 观看作者讲解回放! 作者简介 王志豪,厦门大学博士生 刘诗雨,厦门大学硕士生 内容简介 新数据的不断涌现使版本更新成为大型语言模型(LLMs&#xff…

【LeetCode】394、字符串解码

【LeetCode】394、字符串解码 文章目录 一、递归: 嵌套类问题1.1 递归: 嵌套类问题 二、多语言解法 一、递归: 嵌套类问题 1.1 递归: 嵌套类问题 // go func decodeString(s string) string {// 如果遇到 嵌套括号的情况, 则递归// 可能连续多位数字, 则 通过 cur cur * 10 …