【MySQL】数据库基础知识

欢迎拜访:雾里看山-CSDN博客
本篇主题:【MySQL】数据库基础知识
发布时间:2025.1.21
隶属专栏:MySQL

在这里插入图片描述

目录

  • 什么是数据库
    • 为什么要有数据库
    • 数据库的概念
  • 主流数据库
  • mysql的安装
  • mysql登录
  • 使用一下mysql
    • 显示数据库内容
    • 创建一个数据库
    • 创建一张表
    • 插入数据
    • 查询数据
    • 清屏命令
    • 总结
  • 服务器,数据库,表关系
  • 数据逻辑存储
  • mysql架构
  • mysql的分类
  • 存储引擎
    • 什么是存储引擎
    • 查看存储引擎
    • 存储引擎对比

什么是数据库

为什么要有数据库

我们知道文件可以保存数据,那么为什么还需要数据库呢?

文件存储数据的缺点

  1. 数据冗余度高。当在多个文件中存储相似的数据时,可能会出现相同的数据重复存储的情况。例如,在一个学校的文件系统中,学生的基本信息(如姓名、性别、出生日期等)可能会在成绩文件、考勤文件等多个文件中重复出现。这不仅浪费存储空间,而且当需要更新学生基本信息时,需要在多个文件中分别修改,容易导致数据不一致。
  2. 数据一致性差。由于数据分散在多个文件中,很难保证数据的一致性。如果在一个文件中修改了数据,而忘记在其他相关文件中进行同步修改,就会导致数据冲突。比如,在商品库存管理中,进货文件更新了商品的库存数量,但销售文件没有及时更新,就会使库存数据出现错误。
  3. 数据关联性弱。文件系统一般是按照文件的格式和用途来组织的,很难有效地表示数据之间的复杂关系。例如,在一个企业的客户订单管理系统中,一个客户可能有多个订单,每个订单又包含多种商品。在文件系统中很难直观地体现客户 - 订单 - 商品之间的这种多层次的关联关系,查询和管理这些关联数据会变得非常复杂。
  4. 数据安全性低。文件系统通常提供的安全机制比较有限。例如,在操作系统层面,对文件的访问控制主要基于用户权限,对于文件内部的数据安全保护措施相对薄弱。对于一些敏感数据,如银行账户信息、企业商业机密等,文件系统很难提供足够细粒度的安全访问控制,容易导致数据泄露。
  5. 数据检索效率低。在文件系统中进行数据检索,特别是对复杂条件的检索,效率往往比较低。例如,要在一个包含大量文本文件的文件夹中查找满足特定关键词组合的文件,需要遍历每个文件的内容,这会花费大量的时间。而且如果文件没有良好的组织结构和索引机制,随着文件数量的增加,检索速度会急剧下降。

为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。

数据库的概念

一般文件确实提供了数据的存储功能,但是文件并没有很好的提供内容数据的管理能力(用户角度)。
数据库(Database,简称DB)是按照数据结构来组织、存储和管理数据的仓库。它是一个长期存储在计算机内的、有组织的、可共享的、统一管理的数据集合。这些数据可以是文本、数字、图像、音频、视频等多种类型,并且是为了满足各种应用程序和用户的需求而存在的。
数据库的本质:对数据内容存储的一套解决方案,用户给数据库字段或者要求,数据库直接返回用户结果,不在需要用户对文件内容进行分析。
数据库一般指的是,在在磁盘或者内存中存储的特定结构组织的数据 — 将来在磁盘上存储的一套数据库方案。
数据库服务 一般指的是 数据库的服务端 mysqld
mysql : 是一套给我提供数据存取服务的网络程序。
站在系统层面:

  • 是否启动mysql
    在这里插入图片描述
  • 区分mysql和mysqld
    在这里插入图片描述
    mysq是数据库服务的客户端
    mysqld是数据库服务的服务器端
    mysql本质是基于CS模式的一种网络服务

主流数据库

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

mysql的安装

  • Centos 6.5下编译安装MySQL 5.6.14
  • CentOS 7 通过 yum 安装 MariaDB
  • Windows下安装MySQL5.7

mysql登录

在Linux系统下的登录命令:

mysql -h 127.0.0.1 -P 3306 -u root -p

在这里插入图片描述
如果没有写 -h 127.0.0.1 默认是连接本地。
如果没有写 -P 3306 默认是连接3306端口号。

使用一下mysql

样例:
使用mysql建立一个数据库,建立一张表结构,插入一些数据 — 对比一下mysql在Linux中是如何表现的。

显示数据库内容

mysql命令:

show databases;

在这里插入图片描述
mysql的所有内容都存储在 /var/lib/mysql的文件夹里面
在这里插入图片描述

创建一个数据库

create database helloworld

在这里插入图片描述
创建数据库,本质就是在Linux的一个目录
在这里插入图片描述

创建一张表

use helloworld;    //进入相应的数据库

create table student(
name varchar(32),
age int,
gender varchar(2)                                                     
);

在这里插入图片描述
在数据库内建立表,本质就是在Linux下创建文件
在这里插入图片描述

插入数据

insert into student (name, age, gender) values ('张三', 20, '男');

在这里插入图片描述

查询数据

select * from student;

在这里插入图片描述

清屏命令

system clear;

总结

  1. 创建数据库,本质就是在Linux的一个目录。
  2. 在数据库内建立表,本质就是在Linux下创建文件。
  3. 数据库的本质也是文件!!!只不过这些文件并不由程序员自己操作,而是由数据库服务帮我们操作。

服务器,数据库,表关系

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

数据逻辑存储

数据库是一种行列式结构
在这里插入图片描述

mysql架构

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

mysql的分类

  • 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的核心就是插件式存储引擎,支持多种存储引擎。

查看存储引擎

命令:

show engines;

在这里插入图片描述
最常用的是InnoDBMYISAM

存储引擎对比

在这里插入图片描述

⚠️ 写在最后:以上内容是我在学习以后得一些总结和概括,如有错误或者需要补充的地方欢迎各位大佬评论或者私信我交流!!!

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

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

相关文章

【线性代数】基础版本的高斯消元法

[精确算法] 高斯消元法求线性方程组 线性方程组 考虑线性方程组, 已知 A ∈ R n , n , b ∈ R n A\in \mathbb{R}^{n,n},b\in \mathbb{R}^n A∈Rn,n,b∈Rn, 求未知 x ∈ R n x\in \mathbb{R}^n x∈Rn A 1 , 1 x 1 A 1 , 2 x 2 ⋯ A 1 , n x n b 1…

高等数学学习笔记 ☞ 微分方程

1. 微分方程的基本概念 1. 微分方程的基本概念: (1)微分方程:含有未知函数及其导数或微分的方程。 举例说明微分方程:;。 (2)微分方程的阶:指微分方程中未知函数的导数…

HarmonyOS基于ArkTS卡片服务

卡片服务 前言 Form Kit(卡片开发框架)提供了一种在桌面、锁屏等系统入口嵌入显示应用信息的开发框架和API,可以将应用内用户关注的重要信息或常用操作抽取到服务卡片(以下简称“卡片”)上,通过将卡片添加…

Java复习第四天

一、代码题 1.相同的树 (1)题目 给你两棵二叉树的根节点p和q,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:p[1,2,3],q[1,2,3] 输出:true示例 2: 输…

全面了解 Web3 AIGC 和 AI Agent 的创新先锋 MelodAI

不管是在传统领域还是 Crypto,AI 都是公认的最有前景的赛道。随着数字内容需求的爆炸式增长和技术的快速迭代,Web3 AIGC(AI生成内容)和 AI Agent(人工智能代理)正成为两大关键赛道。 AIGC 通过 AI 技术生成…

新能源汽车充电桩选型以及安装应用

摘要:随着当前经济的不断发展,国家的科技也有了飞速的进步,传统的燃油汽车已经不能适应当前社会的发展,不仅对能源造成巨大的消耗,还对环境造成了污染,当前一种新型的交通运输工具正在占领汽车市场。在环境问题和能源问题愈发严重的当今社会,节能减排已经成为全世界的共同课题,…

一个vue项目npm install失败的问题解决方案

vue的项目一直是史上最难的最烦的问题,今天给别人做毕设单子想在gitee上拉项目二开的时候,由于很久没写过vue项目已经生疏了,在拿到项目之后我还是例行完成最常见的步骤: 1、npm init -y 初始化 2、npm install 用npm把这个项目…

计算机网络 (55)流失存储音频/视频

一、定义与特点 定义:流式存储音频/视频是指经过压缩并存储在服务器上的多媒体文件,客户端可以通过互联网边下载边播放这些文件,也称为音频/视频点播。 特点: 边下载边播放:用户无需等待整个文件下载完成即可开始播放…

UE求职Demo开发日志#6 测试用强化页面UI搭建

1 反向实现思路设计 先看最终效果: 先做了一个大致的分区,右侧的上半部分用来显示数据,下半部分用来强化和显示需要的材料,至于这个背景设定上强化应该叫什么,。。。。,还没定,反正应该不叫强…

python学opencv|读取图像(四十一 )使用cv2.add()函数实现各个像素点BGR叠加

【1】引言 前序已经学习了直接在画布上使用掩模,会获得彩色图像的多种叠加效果,相关文章链接为: python学opencv|读取图像(四十)掩模:三通道图像的局部覆盖-CSDN博客 这时候如果更进一步,直接…

SpringCloudAlibaba 服务保护 Sentinel 项目集成实践

目录 一、简介1.1、服务保护的基本概念1.1.1、服务限流/熔断1.1.2、服务降级1.1.3、服务的雪崩效应1.1.4、服务的隔离的机制 1.2、Sentinel的主要特性1.3、Sentinel整体架构1.4、Sentinel 与 Hystrix 对比 二、Sentinel控制台部署3.1、版本选择和适配3.2、本文使用各组件版本3.…

窥探QCC518x-308x系列与手机之间的蓝牙HCI记录与分析 - 耳机篇

上一篇是介绍如何窥探手机端Bluetooth的HCI log, 本次介绍是如何窥探Bluetooth的HCI log-耳机篇. 这次跟QCC518x/QCC308x测试的手机是Samsung S23 Ultra. QCC518x/QCC308x透过HCI界面取得Log教学. 步骤1: 开启QMDE -> 选择ADK r1102 QCC3083 Headset workspace.步骤2: 点…

C++ list 容器用法

C list 容器用法 C 标准库提供了丰富的功能&#xff0c;其中 <list> 是一个非常重要的容器类&#xff0c;用于存储元素集合&#xff0c;支持双向迭代器。<list> 是 C 标准模板库&#xff08;STL&#xff09;中的一个序列容器&#xff0c;它允许在容器的任意位置快速…

SpringSecurity实现自定义用户认证方案

Spring Security 实现自定义用户认证方案可以根据具体需求和业务场景进行设计和实施&#xff0c;满足不同的安全需求和业务需求。这种灵活性使得认证机制能够更好地适应各种复杂的环境和变化‌。通过自定义认证方案&#xff0c;可以更好地控制和管理用户的访问权限&#xff0c;…

深入内核讲明白Android Binder【三】

深入内核讲明白Android Binder【三】 前言一、服务的获取过程内核源码解析1. 客户端获取服务的用户态源码回顾2. 客户端获取服务的内核源码分析2.1 客户端向service_manager发送数据1. binder_ioctl2. binder_ioctl_write_read3. binder_thread_write4. binder_transaction4.1 …

深入解析:Docker 容器如何实现文件系统与资源的多维隔离?

目录 一、RootFs1. Docker 镜像与文件系统层2. RootFs 与容器隔离的意义 二、Linux Namespace1. 进程命名空间1.1 lsns 命令说明1.2 查看“祖先进程”命名空间1.3 查看当前用户进程命名空间 2. 容器进程命名空间2.1 查看容器进程命名空间列表2.2 容器进程命名空间的具体体现 三…

解锁Java中的国密算法:安全保障的密钥

一、引言 在数字化浪潮席卷全球的当下&#xff0c;信息安全已然成为国家、企业乃至个人无法忽视的重要议题。国密算法&#xff0c;作为我国自主研发的密码算法体系&#xff0c;宛如坚固的盾牌&#xff0c;为国家信息安全筑起了一道坚不可摧的防线。它的诞生&#xff0c;不仅承载…

proxysql读写分离的部署

关闭防火墙和selinux systemctl stop firewalld systemctl disable firewalld setenforce 0设置主机名称 hostnamectl set-hostname zhangyijia-host71.database.com && bash hostnamectl set-hostname zhangyijia-host72.database.com && bash两台主机安装m…

Android各个版本存储权限适配

一、Android6.0-9.0 1、动态权限申请&#xff1a; private static String[] arrPermissions {android.Manifest.permission.READ_EXTERNAL_STORAGE, android.Manifest.permission.WRITE_EXTERNAL_STORAGE,android.Manifest.permission.ACCESS_FINE_LOCATION,android.Manifest.…

【xcode 16.2】升级xcode后mac端flutter版的sentry报错

sentry_flutter 7.11.0 报错 3 errors in SentryCrashMonitor_CPPException with the errors No type named terminate_handler in namespace std (line 60) and No member named set_terminate in namespace std 替换sentry_flutter版本为&#xff1a; 8.3.0 从而保证oc的…