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

【MySQL】数据库入门基础

文章目录

  • 一、数据库的概念
    • 1. 什么是数据库
    • 2. 主流数据库
    • 3. mysql和mysqld的区别
  • 二、MySQL基本使用
    • 1. 安装MySQL服务器
      • 在 CentOS 上安装 MySQL 服务器
      • 在 Ubuntu 上安装 MySQL 服务器
      • 验证安装
    • 2. 服务器管理
      • 启动服务器
      • 查看服务器
      • 连接服务器
      • 停止服务器
      • 重启服务器
    • 3. 服务器,数据库,表关系
  • 三、MySQL架构
  • 四、SQL分类
  • 五、存储引擎
    • 查看支持的存储引擎
    • MySQL支持的几个存储引擎
    • MySQL存储引擎功能对比

一、数据库的概念

1. 什么是数据库

存储数据用文件就可以了,文件已经提供了数据存储功能,为什么还要弄个数据库?因为在用户角度看来,文件没有提供非常好的数据管理能力。

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

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

数据库存储介质:

  • 磁盘
  • 内存

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

2. 主流数据库

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

3. mysql和mysqld的区别

请添加图片描述

  1. mysql是数据库服务的客户端
  2. mysqld是数据库服务的服务端
  3. mysql的本质是:基于C(mysql)S(mysqld)模式的一种网络服务,所以可以通过netstat命令查询网络连接状态:
    sudo netstat -nltpu
    
    请添加图片描述

二、MySQL基本使用

1. 安装MySQL服务器

在 CentOS 上安装 MySQL 服务器

  1. 更新系统包

    sudo yum update -y
    
  2. 安装 MySQL 存储库
    下载并安装 MySQL 的官方 Yum 存储库:

    wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
    sudo rpm -ivh mysql80-community-release-el7-3.noarch.rpm
    
  3. 安装 MySQL 服务器

    sudo yum install mysql-server -y
    
  4. 启动 MySQL 服务并设置开机自启

    sudo systemctl start mysqld
    sudo systemctl enable mysqld
    
  5. 获取临时 root 密码
    安装完成后,MySQL 会为 root 用户生成一个临时密码,你可以通过以下命令查看:

    sudo grep 'temporary password' /var/log/mysqld.log
    
  6. 运行安全脚本
    使用临时密码登录并运行安全安装脚本来设置 root 密码并配置安全选项:

    sudo mysql_secure_installation
    

在 Ubuntu 上安装 MySQL 服务器

  1. 更新系统包

    sudo apt update
    sudo apt upgrade -y
    
  2. 安装 MySQL 服务器
    Ubuntu 18.04 和更高版本自带了 MySQL 5.7 或更高版本的包:

    sudo apt install mysql-server -y
    
  3. 启动 MySQL 服务并设置开机自启

    sudo systemctl start mysql
    sudo systemctl enable mysql
    
  4. 运行安全脚本
    安装完成后,运行安全安装脚本来配置 MySQL:

    sudo mysql_secure_installation
    

    在运行此脚本过程中,你将设置 root 用户的密码,并选择一些安全配置选项,例如删除匿名用户、禁止远程 root 登录、删除测试数据库等。

验证安装

无论是在 CentOS 还是 Ubuntu 上,安装完成后,你都可以通过以下命令登录 MySQL 并验证安装:

mysql -u root -p

输入你设置的 root 密码后,就可以进入 MySQL 控制台,验证 MySQL 是否正常运行。

2. 服务器管理

启动服务器

systemctl start mysqldservice mysqld start命令可以启动MySQL服务器。

查看服务器

sudo systemctl status mysqld

请添加图片描述

连接服务器

连接到MySQL服务器:

mysql -h127.0.0.1 -P3306 -uroot -p
  • -h:表示你要连接的MySQL服务器所在的主机,127.0.0.1表示本主机。
  • -P:表示你要连接的MySQL服务器所对应的端口号,一般默认是3306。
  • -u:表示用哪一个用户连接MySQL服务器,root表示超级用户。
  • -p:表示该用户对应的密码,密码可以直接跟在-p后面,也可以回车后输入。

此外,如果要连接的是本地的MySQL服务器,那么连接时只需要指明用户名和用户密码即可。如下:

mysql -uroot -p

连接到MySQL服务器后,就可以输入各种SQL语句让服务器执行了,当要退出mysql时直接输入quitexit\q即可。

停止服务器

通过systemctl stop mysqld命令或service mysqld stop命令可以停止MySQL服务器。

重启服务器

通过systemctl restart mysqld命令或service mysqld restart命令可以重启MySQL服务器。

3. 服务器,数据库,表关系

  1. 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库,这些数据库被存放在一个指定目录底下:请添加图片描述

  2. 一个数据库,就对应Linux下的一个同名的目录:请添加图片描述

  3. 在一个数据库中建立一张表,本质就是在这个数据库的目录下创建数据文件:请添加图片描述

数据库服务器、数据库和表的关系如下:
请添加图片描述

三、MySQL架构

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

请添加图片描述

四、SQL分类

  • DDL【Data Definition Language】数据定义语言,用来维护存储数据的结构
    代表指令: create, drop, alter

  • DML【Data Manipulation Language】数据操纵语言,用来对数据进行操作
    代表指令: insert,delete,update

    • DML中又单独分了一个DQL【Data Query Language】,数据查询语言
      代表指令: select
  • DCL【Data Control Language】数据控制语言,主要负责权限管理和事务
    代表指令: grant,revoke,commit

五、存储引擎

存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL的核心就是插件式存储引擎,支持多种存储引擎。

查看支持的存储引擎

show engines;

请添加图片描述

MySQL支持的几个存储引擎

EngineSupportCommentTransactionsXASavepoints
InnoDBDEFAULTSupports transactions, row-level locking, and foreign keysYESYESYES
MRG_MYISAMYESCollection of identical MyISAM tablesNONONO
MEMORYYESHash based, stored in memory, useful for temporary tablesNONONO
BLACKHOLEYES/dev/null storage engine (anything you write to it disappears)NONONO
CSVYESCSV storage engineNONONO
PERFORMANCE_SCHEMAYESPerformance SchemaNONONO
FEDERATEDNOFederated MySQL storage engineNULLNULLNULL
引擎支持评论事务支持XA保存点支持
InnoDB默认支持事务、行级锁定和外键
MRG_MYISAM相同MyISAM表的集合
MEMORY基于哈希,存储在内存中,适用于临时表
BLACKHOLE/dev/null存储引擎(写入的数据会消失)
MyISAMMyISAM存储引擎
CSVCSV存储引擎
ARCHIVE归档存储引擎
PERFORMANCE_SCHEMA性能模式
FEDERATED联邦MySQL存储引擎NULLNULLNULL

MySQL存储引擎功能对比

FeatureMyISAMBDBMemoryInnoDBArchiveNDB
Storage LimitsNoNoYes64TBNoYes
Transactions (commit, rollback, etc.)
Locking granularityTablePageTableRowRowRow
MVCC/Snapshot Read
Geospatial support
B-Tree indexes
Hash indexes
Full text search index
Clustered index
Data Caches
Index Caches
Compressed data
Encrypted data (via function)
Storage cost (space used)LowLowN/AHighVery LowLow
Memory costLowLowMediumHighLowHigh
Bulk Insert SpeedHighHighHighLowVery HighHigh
Cluster database support
Replication support
Foreign key support
Backup/Point-in-time recovery
Query cache support
Update Statistics for Data Dictionary
功能MyISAMBDBMemoryInnoDBArchiveNDB
存储限制64TB
事务(提交、回滚等)
锁定粒度
MVCC/快照读取
地理空间支持
B-Tree 索引
哈希索引
全文搜索索引
聚簇索引
数据缓存
索引缓存
压缩数据
加密数据(通过函数)
存储成本(空间使用)不适用非常低
内存成本中等
批量插入速度非常高
集群数据库支持
复制支持
外键支持
备份/时间点恢复
查询缓存支持
数据字典更新统计

相关文章:

【MySQL】数据库入门基础

文章目录 一、数据库的概念1. 什么是数据库2. 主流数据库3. mysql和mysqld的区别 二、MySQL基本使用1. 安装MySQL服务器在 CentOS 上安装 MySQL 服务器在 Ubuntu 上安装 MySQL 服务器验证安装 2. 服务器管理启动服务器查看服务器连接服务器停止服务器重启服务器 3. 服务器&…...

cannot allocate memory in static TLS block

如果不是内存太小,那是不是因为glibc太旧呢? 考虑 glibc 2.22 以后的版本。 glibc-2.22 中加入了如下commit:f8aeae347377f3dfa8cbadde057adf1827fb1d44 https://sourceware.org/git/?pglibc.git;acommit;hf8aeae347377f3dfa8cbadde057adf1…...

Leetcode 654:最大二叉树

给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 nums 构建的 最大二叉树…...

uniapp小程序src引用服务器图片时全局变量与图片路径拼接

理论上&#xff0c;应该在main.js中定义一个全局变量&#xff0c;然后在页面的<image>标签上的是src直接使用即可 main.js 页面上 看上去挺靠谱的&#xff0c;实际上小程序后台会报一个错 很明显这种方式小程序是不认的&#xff0c;这就头疼了&#xff0c;还想过另外一个…...

比较PWM调光和无极调光

在比较PWM调光和无极调光哪种方式更节能时&#xff0c;需要综合考虑多个因素&#xff0c;如灯具类型、光源效率、调光范围以及使用场景等。 PWM调光系统通过调节LED驱动电流的占空比来实现LED亮度的调节&#xff0c;具有高精度、高稳定性、无闪烁现象以及适用范围广等优点。其节…...

【高校科研前沿】新疆生地所陈亚宁研究员团队在GeoSus发文:在1.5°C和2°C全球升温情景下,中亚地区暴露于极端降水的人口增加

目录 文章简介 1.研究内容 2.相关图件 3.文章引用 文章简介 论文名称&#xff1a;Increased population exposures to extreme precipitation in Central Asia under 1.5 ◦C and 2 ◦C global warming scenarios&#xff08;在1.5C和2C全球变暖情景下&#xff0c;中亚地区…...

使用 OKhttp3 实现 智普AI ChatGLM HTTP 调用(SSE、异步、同步)

SSE 调用 SSE&#xff08;Sever-Sent Event&#xff09;&#xff0c;就是浏览器向服务器发送一个HTTP请求&#xff0c;保持长连接&#xff0c;服务器不断单向地向浏览器推送“信息”&#xff08;message&#xff09;&#xff0c;这么做是为了节约网络资源&#xff0c;不用一直…...

智慧校园教学模式的崛起:优化学习体验

在当今数字化时代&#xff0c;智慧校园教学模式正在成为教育界的热门话题。随着科技的不断发展&#xff0c;传统的教学方式已经无法满足现代学生的需求。智慧校园教学模式以其灵活性、互动性和个性化的特点&#xff0c;正逐渐改变着教育的面貌。 首先&#xff0c;智慧校园教学模…...

ffmpeg视频编码原理和实战-(5)对编码过程进行封装并解决丢帧问题

头文件&#xff1a; xencode.h #pragma once #include <mutex> #include<vector> struct AVCodecContext; struct AVPacket; struct AVFrame; class XEncode { public:///// 创建编码上下文/// para codec_id 编码器ID号&#xff0c;对应ffmpeg/// return 编码上…...

halo进阶-主题插件使用

开始捣鼓捣鼓halo&#xff0c;换换主题&#xff0c;加个页面 可参考&#xff1a;Halo 文档 安装/更新主题 主题如同壁纸&#xff0c;萝卜青菜各有所爱&#xff0c;大家按需更换即可&#xff1b; Halo好在一键更换主题&#xff0c;炒鸡方便。 安装/更新插件 此插件还扩展了插件…...

资深开发推荐的IDEA 插件

开发如虎添翼 工欲善其事&#xff0c;必先利其器。想要提升编程开发效率&#xff0c;必须选择一款顺手的开发工具&#xff0c;插件不在多&#xff0c;而在精&#xff0c;作为从业10年的程序员&#xff0c;我目前用到这十几个插件&#xff0c;在平时开发&#xff0c;代码review…...

数学题目系列(一)|丑数|各位和|埃氏筛|欧拉筛

一.丑数 链接&#xff1a;丑数 分析&#xff1a; 丑数只有2&#xff0c;3&#xff0c;5这三个质因数&#xff0c;num 2a 3b 5c也就是一个丑数是由若干个2&#xff0c;3&#xff0c;5组成&#xff0c;那么丑数除以这若干个数字最后一定变为1 代码 class Solution {publi…...

k8s学习--Secret详细解释与应用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Secret什么是Secret?Secret四种类型及其特点Secret应用案例&#xff08;1&#xff09;将明文密码进行base64编码&#xff08;2&#xff09;编写创建secret的YAML文…...

功能问题:如何防止接口重复请求?

大家好&#xff0c;我是大澈&#xff01; 本文约 1400 字&#xff0c;整篇阅读约需 3 分钟。 防止接口重复请求在软件开发中非常重要&#xff0c;重复请求必然会导致服务器资源的浪费。 因为每次请求都需要服务器进行处理&#xff0c;如果请求是重复的&#xff0c;那么服务…...

系统架构设计师【第5章】: 软件工程基础知识 (核心总结)

文章目录 5.1 软件工程5.1.1 软件工程定义5.1.2 软件过程模型5.1.3 敏捷模型5.1.4 统一过程模型&#xff08;RUP&#xff09;5.1.5 软件能力成熟度模型 5.2 需求工程5.2.1 需求获取5.2.2 需求变更5.2.3 需求追踪 5.3 系统分析与设计5.3.1 结构化方法5.3.2 面向对象…...

嵌入式Linux系统编程 — 2.2 标准I/O库:检查或复位状态

目录 1 检查或复位状态简介 2 feof()函数 2.1 feof()函数简介 2.2 示例程序 3 ferror()函数 4 clearerr()函数 4.1 clearerr()函数简介 4.2 示例程序 1 检查或复位状态简介 调用 fread() 函数读取数据时&#xff0c;如果返回值小于参数 nmemb 所指定的值&#xff0c;这…...

pESC-HIS是什么,怎么看?-实验操作系列-2

01 典型的pESC-HIS质粒遗传图谱 02 介绍 质粒类型&#xff1a;酿酒酵母蛋白表达载体 表达水平&#xff1a;高拷贝 诱导方法&#xff1a;半乳糖 启动子&#xff1a;GAL1和GAL10 克隆方法&#xff1a;多克隆位点&#xff0c;限制性内切酶 载体大小&#xff1a;6706bp 5 测…...

树形表/树形数据接口的开发

数据表格式 需要返回的json格式 点击查看json数据 [{"childrenTreeNodes" : [{"childrenTreeNodes" : null,"id" : "1-1-1","isLeaf" : null,"isShow" : null,"label" : "HTML/CSS","na…...

二叉树的镜像--c++【做题记录】

【问题描述】 给定扩展二叉树的前序序列&#xff0c;构建二叉树。 求这课二叉树的镜像&#xff0c;并输出其前序遍历序列。 【输入形式】 输入扩展二叉树的前序序列。 【输出形式】 输出镜像二叉树的前序遍历序列。 【样例输入】 ab##cd##e## 【样例输出】 镜像后二叉树的前序遍…...

redis安裝启动

1、下载redis解压 https://github.com/tporadowski/redis/releases 2、打开cmd&#xff0c;切换到解压的文件夹 3、redis-server.exe redis.windows.conf 启动redis redis可通过命令行输入config set requirepass password和直接修改redis.config文件中修改 requirepass 来设…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...