【MySQL 保姆级教学】数据库基础(重点)(2)

news2024/11/25 14:59:24

目录

  • 1. 什么是数据库
    • 1.1 数据库的定义
    • 1.2 mysql 和 mysqld
    • 1.3 文件和数据库
  • 2. 数据库的分类
  • 3. 连接数据库
    • 3.1 数据库的安装
    • 3.2 连接服务器(数据库)
    • 3.3 服务器 数据库 表 三者的关系
  • 4. 数据库-表 和目录-文件 的关系
  • 5. MySQL 框架
  • 6. SQL 分类
  • 7. 储存引擎

1. 什么是数据库

1.1 数据库的定义

数据库(Database)是一种按照数据结构来组织、存储和管理数据的仓库。通过数据库管理系统(Database Management System, DBMS),用户可以方便地对数据进行创建、查询、更新和删除等操作。数据库的主要目的是有效地存储和管理数据,以便于多个用户或应用程序能够高效、安全地访问和共享数据。
简单的说就是一套给我们提供数据存储的服务的网络程序

口头上的数据库一般指:在磁盘或者内存中存储特定结构的数据 — 在磁盘上存储的一套数据方案

数据库的主要特征

  1. 数据结构化:
    数据库中的数据是以特定的结构组织的,例如表格形式(关系型数据库)、文档形式(NoSQL 数据库)等。这种结构化的方式使得数据更容易管理和查询。
  2. 数据独立性:
    数据独立性是指数据的物理存储与逻辑结构之间的分离。这意味着用户可以不必关心数据是如何存储的,只需关注如何使用数据。数据独立性分为物理数据独立性和逻辑数据独立性。
  3. 数据共享:
    多个用户或应用程序可以同时访问同一个数据库中的数据,从而实现数据的共享和协作。
  4. 数据控制:
    数据库管理系统提供了多种机制来控制数据的访问和操作,包括用户权限管理、事务管理、备份和恢复等,确保数据的安全性和一致性。
  5. 数据冗余减少:
    通过数据的集中管理和规范化设计,数据库可以减少数据冗余,提高数据的一致性和完整性。
  6. 数据持久性:
    数据库中的数据是持久化的,即使系统关闭或重启,数据也不会丢失。

1.2 mysql 和 mysqld

  • 客户端 (mysql)
    定义:mysql 是一个命令行工具,用于连接到 MySQL 服务器并执行 SQL 命令。它是用户与 MySQL 服务器进行交互的主要方式。
    用途:用户通过 mysql 客户端发送 SQL 查询、查看查询结果、管理数据库等。
    使用场景:当你需要手动执行 SQL 语句、查看数据库状态、创建和删除数据库、表等操作时,通常会使用 mysql 客户端。

  • 服务器端 (mysqld)
    定义:mysqld 是 MySQL 的数据库服务器进程。它是后台运行的守护进程,负责处理来自客户端的所有请求
    用途:mysqld 负责管理数据文件、处理查询、执行事务、维护数据的一致性和完整性等。
    使用场景:通常情况下,mysqld 会在系统启动时自动运行,并在后台持续运行,等待客户端的连接请求。

那MySQL数据库是 mysql 还是 mysqld 呢?
我们使用的抖音也有客户端和服务端,好比回答 抖音是客户端还是服务端呢?抖音的客户端和服务端一起工作保证正常使用抖音。

mysql本质:基于C(mysql) S(mysqld)模式的一种网络服务

既然是一种网络服务,那么会绑定端口号(启动服务器需要使用端口号)

查询端口号:netstat -lntp

1.3 文件和数据库

存储数据用文件就可以了,为什么还要弄个数据库?

文件保存数据有以下几个缺点:

  • 文件的安全性问题
  • 文件不利于数据查询和管理
  • 文件不利于存储海量数据
  • 文件在程序中控制不方便

一般的文件确实提供了数据的存储功能,但文件没有提供非常好的数据管理能力(用户角度)

什么是数据管理能力?

比如,给你一个文件,里面包含一万条手机号码,请你找出180开头的所有手机号。普通的文件能快出的找出吗?程序员自己找吗?

数据库作用?

对数据内容存储的一套解决方案,给数据库服务端要求(找出所有180开有的手机号),数据库服务端直接给出结果,不用程序员自己去找。

在这里插入图片描述
为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。数据库的水平是衡量一个程序员水平的重要指标

2. 数据库的分类

主流数据库:

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

数据库的类型

  • 关系型数据库(Relational Database):
    关系型数据库是最常见的数据库类型,数据以表格的形式存储,每个表由行和列组成。常用的 SQL 语言用于查询和管理数据。典型的例子包括 MySQL、Oracle、Microsoft SQL Server 和 PostgreSQL。
  • 非关系型数据库(NoSQL Database):
    非关系型数据库用于处理大规模、非结构化或半结构化数据。它们通常具有灵活的 schema 设计和水平扩展能力。常见的 NoSQL 数据库包括 MongoDB、Cassandra、Redis 和 DynamoDB。
  • 对象关系型数据库(Object-Relational Database):
    对象关系型数据库结合了关系型数据库和面向对象数据库的特点,支持对象的封装、继承和多态等特性。例如,PostgreSQL 就支持对象关系型特性。
  • 层次型数据库(Hierarchical Database):
  • 层次型数据库以树状结构组织数据,每个记录有一个父记录和多个子记录。典型的例子包括 IBM 的 IMS 系统。
  • 网络型数据库(Network Database):
    网络型数据库允许每个记录有多个父记录和多个子记录,形成更为复杂的网状结构。典型的例子包括 IDMS(Integrated Data Management System)。

数据库管理系统(DBMS)

数据库管理系统(Database Management System, DBMS)是用于创建、管理、维护和操作数据库的软件。DBMS 提供了用户与数据库交互的接口,支持数据的定义、查询、更新和管理。常见的 DBMS 包括:

  • 关系型数据库管理系统(RDBMS):如 MySQL、Oracle、SQL Server、PostgreSQL。
  • 非关系型数据库管理系统(NoSQL DBMS):如 MongoDB、Cassandra、Redis。
  • 对象关系型数据库管理系统(ORDBMS):如 PostgreSQL。
  • 层次型数据库管理系统:如 IBM IMS。
  • 网络型数据库管理系统:如 IDMS。

数据库的应用

数据库广泛应用于各种领域,包括但不限于:

  • 企业信息系统:管理客户关系、供应链、库存等。
  • 电子商务:处理订单、支付、物流等。
  • 金融系统:管理账户、交易、风险管理等。
  • 医疗保健:存储患者记录、医疗影像等。
  • 社交媒体:管理用户信息、动态、消息等。
  • 物联网:收集和分析传感器数据。

3. 连接数据库

3.1 数据库的安装

保姆级安装教程

3.2 连接服务器(数据库)

  1. 命令:mysql -h 8.148.27.113 -P 3306 -u root -p

    说明:

    -h:登录mysql的主机的地址

    -P:mysql在该主机的端口号

    -u:登录mysql的用户名称

    -p:密码(我的mysql没有设置密码,不需要输入)

  2. 如果没有写 -h 127.0.0.1 默认是连接本地,如果没有写 -P 3306 默认是连接3306端口号,
    在本地主机中有配置文件,可以直接去掉-h和-P

    命令:mysql -u root -P

  3. 在mysql服务中退出mysql

    命令:quit

3.3 服务器 数据库 表 三者的关系

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

数据库服务器、数据库和表的关系如下:
在这里插入图片描述
表是数据逻辑存储结构:行列式结构(二维)
在这里插入图片描述

4. 数据库-表 和目录-文件 的关系

使用mysql建立一个数据库,在数据库中建立一张表结构,插入一些数据 ------ 对比一下mysql在linux中是如何表现的

  1. 先查询数据库存储在哪个目录

    命令:vim /etc/my.cnf
    在这里插入图片描述
    我的数据的数据库存储在/var/lib/mysql 目录中

  2. 进入到该目录
    命令:cd /var/lib/mysql
    查看数据库文件,命令:ls
    在这里插入图片描述
    标记的就是当前的数据库

  3. 进入mysql客户端,在mysql中查询数据库

    命令:show databases;
    在这里插入图片描述

  4. 观察
    同学们可以观察到 Linux 中标记的目录就是当前 mysql 的数据库的名称

  5. 此时我在创建一个study_1 数据库,然后再进入到 /var/lib/mysql 目录并打开,可以看看发生了什么
    在这里插入图片描述
    在这里插入图片描述
    所以,我们在mysql中新建的数据库其实就是在linux中新建一个目录

  6. 我们打开这个数据库的目录
    在这里插入图片描述

  7. 在mysql的study_1数据库中创建一个表后再次打开数据库目录
    在mysql的study_1数据库中创建一个表test(不用管命令是什么意思,我们证明的是数据库中的数据是文件)

    (1)创建一个表格
    在这里插入图片描述
    (2)再打开目录后发现有新文件产生
    在这里插入图片描述

  8. 我们还可以查看文件的大小

    命令:ls -l study_1

    记住此时文件的大小(标记处是文件的大小)
    在这里插入图片描述

  9. 在表中插入数据
    在这里插入图片描述

  10. 再次查看文件的大小

    命令:ls -l study_1
    在这里插入图片描述

我们发现,文件的大小没有改变;但并不是没有数据,而是mysql内部的优化造成的。其实,已经把数据存入文件中了。

总结:

  1. 建立数据库,本质是在linux中创建一个目录

  2. 在数据库中创建表,本质是在linux中创建对应的文件。

这个工作时谁做的呢?

答:mysqld 做的。/var/lib/mysql 中的文件不需要我们来操作,mysqld 自己去操作。

5. MySQL 框架

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

在这里插入图片描述

  1. Client Connectors: 连接器层提供了多种语言的接口,例如 JDBC、ODBC、.NET、PHP、Python、Perl 和 C API,用于连接到 MySQL 服务器。应用程序可以通过这些接口发送查询请求,并接收响应结果。

  2. MySQL Server: MySQL 服务器是整个系统的中心,负责处理来自客户端的各种请求。它由多个模块组成,如下所示:

    • Services & utilities: 提供备份恢复、安全、复制和分区等功能的服务和实用工具。
    • SQL Interface: 解析和执行 SQL 查询的接口。
    • Connection Pool: 连接池管理、认证和安全性相关的功能。
    • Parser: 分词器、语法分析器和语义分析器,用于解析 SQL 查询。
    • Optimizer: 查询优化器,用于确定最佳查询执行计划。
    • Caches: 包括全局缓存和引擎特定缓存,提高性能。
  3. Pluggable Storage Engines: MySQL 支持可插拔式存储引擎,每个引擎都有自己的特性。MyISAM 是一个非事务性引擎,适用于读取密集型应用;InnoDB 则是一个事务性引擎,支持 ACID 事务和外键约束;Federated 引擎将多个 MySQL 实例链接在一起;Archive 引擎适合存储大量数据而不需要频繁更新的应用;Merge 引擎用于合并多个 MyISAM 表;Memory 引擎将数据存储在内存中,速度非常快;Cluster 引擎用于分布式环境;Example 引擎是一个示例引擎,用于演示目的。

    • File System: MySQL 使用底层文件系统(如 NTFS、ext4、SAN 或 NAS)来存储数据和日志文件。
    • Logs and Files: MySQL 产生的各种日志文件,包括二进制日志(记录所有更改)、错误日志、慢查询日志、一般查询日志、重做日志、回滚日志以及数据和索引文件。

总这张图清晰地展示了 MySQL 服务器如何处理客户端请求,以及不同组件之间的交互关系。客户端通过连接器发送 SQL 请求给 MySQL 服务器,服务器解析请求、优化查询、访问存储引擎并最终将结果返回给客户端。同时,MySQL 也利用缓存、索引和日志机制来提升性能和可靠性。

6. SQL 分类

  1. DDL【data definition language】 数据定义语言,用来维护存储数据的结构
    代表指令: create, drop, alter

  2. DML【data manipulation language】 数据操纵语言,用来对数据进行操作
    代表指令: insert,delete,update

  3. DML中又单独分了一个DQL,数据查询语言,代表指令: select

  4. DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务
    代表指令: grant,revoke,commit

7. 储存引擎

存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术
的实现方法。

MySQL的核心就是插件式存储引擎,支持多种存储引擎

查看存储引擎:
show engines

在这里插入图片描述

在Linux中,设置默认存储引擎
命令:vim /etc/my.cnf
在这里插入图片描述
我设置的默认存储引擎。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能AI等级划分

人工智能等级划分 第一级“聊天机器人”。 第二级“推理者”水平。这一级别的AI系统具备类似拥有博士学位教育但未配备任何工具的人类,能执行基础的问题解决任务。据悉,OpenAI的管理层在会议中还向员工们展示了涉及GPT-4 AI模型的一个研究项目&#xff…

【面试宝典】深入Python高级:直戳痛点的题目演示(下)

目录 🍔 Python下多线程的限制以及多进程中传递参数的⽅式 🍔 Python是如何进⾏内存管理的? 🍔 Python⾥⾯如何拷⻉⼀个对象? 🍔 Python⾥⾯search()和match()的区别? 🍔 lambd…

生成式专题的第一节课---GAN图像生成

一、GAN的起源与发展 1.GAN的起源 GAN (生成式对抗网络)诞生于 2014 年,由 Ian Goodfellow 提出,是用于生成数据的深度学习模型,创新点是对抗性训练,即生成器与判别器的竞争关系,为图像生成、…

多态常见面试问题

1、什么是多态? 多态(Polymorphism)是面向对象编程中的一个重要概念,它允许同一个接口表现出不同的行为。在C中,多态性主要通过虚函数来实现,分为编译时多态(静态多态)和运行时多态…

DDoS攻击快速增长,如何在抗ddos防护中获得主动?

当下DDoS攻击规模不断突破上限。前段时间,中国首款3A《黑神话:悟空》也在一夜之内遭受到28万次攻击DDoS攻击,严重影响到全球玩家的游戏体验。Gcore发布的数据也显示了 DDoS攻击令人担忧的趋势,尤其是峰值攻击已增加到了令人震惊的…

腾讯IM SDK:TUIKit发送多张图片

一、问题描述 在使用腾讯IM DEMO&#xff08;https://github.com/TencentCloud/chat-uikit-vue.git&#xff09;时发现其只支持发送一张图片&#xff1a; 二、解决方案 // src\TUIKit\components\TUIChat\message-input-toolbar\image-upload\index.vue<inputref"inp…

【GaussDB】产品简介

产品定位 GaussDB 200是一款具备分析及混合负载能力的分布式数据库&#xff0c;支持x86和Kunpeng硬件架构&#xff0c;支持行存储与列存储&#xff0c;提供PB(Petabyte)级数据分析能力、多模分析能力和实时处理能力&#xff0c;用于数据仓库、数据集市、实时分析、实时决策和混…

transformers和bert实现微博情感分类模型提升

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色…

关于Linux下C++程序内存dump的分析和工具

前言 程序崩溃令人很崩溃&#xff0c;特别是让人找不到原因的崩溃&#xff0c;但是合适的工具可以帮助人很快的定位到问题&#xff0c;在AI基础能力ASR服务开发时&#xff0c;找到了一种比较实用和简单的内存崩溃的dump分析工具breakpad&#xff0c; 可以帮助在Linux下C开发程…

Skyeye 云智能制造 v3.14.8 发布,ERP 商城 + AI

Skyeye 云智能制造&#xff0c;采用 Springboot winUI 的低代码平台、移动端采用 UNI-APP。包含 30 多个应用模块、50 多种电子流程&#xff0c;CRM、PM、ERP、MES、ADM、EHR、笔记、知识库、项目、门店、商城、财务、多班次考勤、薪资、招聘、云售后、论坛、公告、问卷、报表…

(JAVA)2-3树思想与红黑树的实现与基本原理

1. 平衡树 ​ 学习过二叉查找树&#xff0c;发现它的查询效率比单纯的链表和数组的查询效率要高很多。 ​ 大部分情况下确实是这样的&#xff0c;但不幸的是&#xff0c;在最坏情况下&#xff0c;二叉查找树的性能还是很糟糕。 ​ 例如我们一次往二叉树中插入9,8,7,6,5,4,3,…

【LeetCode】动态规划—714. 买卖股票的最佳时机含手续费(附完整Python/C++代码)

动态规划—714. 买卖股票的最佳时机含手续费 题目描述前言基本思路1. 问题定义2. 理解问题和递推关系状态定义&#xff1a;状态转移公式&#xff1a;初始条件&#xff1a; 3. 解决方法动态规划方法伪代码&#xff1a; 4. 进一步优化5. 小总结 Python代码Python代码解释总结&…

出海电商新怎样用海外云手机引流?

随着互联网行业的迅猛发展&#xff0c;出海电商、海外社交媒体营销以及游戏产业等领域对技术工具的需求不断增加。在这种趋势下&#xff0c;海外云手机作为一种新型解决方案&#xff0c;正在受到广泛关注。 特别是在出海电商中&#xff0c;平台如亚马逊、速卖通、eBay等通过结合…

Mysql(八) --- 视图

文章目录 前言1.什么是视图&#xff1f;2.创建视图3. 使用视图4. 修改数据4.1.注意事项 5. 删除视图6.视图的优点 前言 前面我们学习了索引&#xff0c;这次我们来学习视图 1.什么是视图&#xff1f; 视图是一个虚拟的表&#xff0c;它是基于一个或多个基本表或其他视图的查询…

8款宝藏手机app,适配安卓和苹果手机

好用的手机APP太多&#xff0c;差点挑花了眼&#xff01;今天来分享4款苹果手机和4款安卓手机上的宝藏软件&#xff0c;看看你喜欢哪一款~ IOS系统APP 1.搜图神器 一款拥有海量图片资源的图片搜索神器&#xff0c;它聚合海内外知名搜索引擎&#xff0c;想要图片直接搜索就行…

用java来编写web界面

一、ssm框架整体目录架构 二、编写后端代码 1、编写实体层代码 实体层代码就是你的对象 entity package com.cv.entity;public class Apple {private Integer id;private String name;private Integer quantity;private Integer price;private Integer categoryId;public…

【JavaScript】LeetCode:61-65

文章目录 61 课程表62 实现Trie&#xff08;前缀树&#xff09;63 全排列64 子集65 电话号码的字母组合 61 课程表 Map BFS拓扑排序&#xff1a;将有向无环图转为线性顺序。遍历prerequisites&#xff1a;1. 数组记录每个节点的入度&#xff0c;2. 哈希表记录依赖关系。n 6&a…

Vulnhub靶场案例渗透[7]- DC7

文章目录 1. 靶场搭建2. 信息收集2.1 确定靶机ip2.2 服务信息收集2.3 社工信息收集 3. 提权 1. 靶场搭建 靶场源地址 检验下载文件的检验码&#xff0c;对比没问题使用vmware打开 # windwos 命令 Get-FileHash <filePath> -Algorithm MD5 # linux md5sum filepath2. 信…

视频汇聚平台EasyCVR支持云端录像丨监控存储丨录像回看丨录像计划丨录像配置

EasyCVR视频汇聚融合平台&#xff0c;是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。平台以其强大的视频处理、汇聚与融合能力&#xff0c;在构建视频监控系统中展现出了独特的优势。 EasyCVR视频汇聚平台可接入传统监控行业中高清网络摄像机的RTSP…

提升实验室效率的秘籍

有组织、高效的实验室而言&#xff0c;业务“人、机、料、法、环、测”的多维度发展至关重要&#xff0c;为了提高实验室管理效率和质量&#xff0c;许多实验室开始采用LIMS&#xff08;实验室信息管理系统&#xff09;软件来辅助管理。LIMS软件能够帮助实验室实现信息化、自动…