【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的区别

- mysql是数据库服务的客户端
- mysqld是数据库服务的服务端
- mysql的本质是:基于C(mysql)S(mysqld)模式的一种网络服务,所以可以通过netstat命令查询网络连接状态:
sudo netstat -nltpu
二、MySQL基本使用
1. 安装MySQL服务器
在 CentOS 上安装 MySQL 服务器
-
更新系统包:
sudo yum update -y -
安装 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 -
安装 MySQL 服务器:
sudo yum install mysql-server -y -
启动 MySQL 服务并设置开机自启:
sudo systemctl start mysqld sudo systemctl enable mysqld -
获取临时 root 密码:
安装完成后,MySQL 会为 root 用户生成一个临时密码,你可以通过以下命令查看:sudo grep 'temporary password' /var/log/mysqld.log -
运行安全脚本:
使用临时密码登录并运行安全安装脚本来设置 root 密码并配置安全选项:sudo mysql_secure_installation
在 Ubuntu 上安装 MySQL 服务器
-
更新系统包:
sudo apt update sudo apt upgrade -y -
安装 MySQL 服务器:
Ubuntu 18.04 和更高版本自带了 MySQL 5.7 或更高版本的包:sudo apt install mysql-server -y -
启动 MySQL 服务并设置开机自启:
sudo systemctl start mysql sudo systemctl enable mysql -
运行安全脚本:
安装完成后,运行安全安装脚本来配置 MySQL:sudo mysql_secure_installation在运行此脚本过程中,你将设置 root 用户的密码,并选择一些安全配置选项,例如删除匿名用户、禁止远程 root 登录、删除测试数据库等。
验证安装
无论是在 CentOS 还是 Ubuntu 上,安装完成后,你都可以通过以下命令登录 MySQL 并验证安装:
mysql -u root -p
输入你设置的 root 密码后,就可以进入 MySQL 控制台,验证 MySQL 是否正常运行。
2. 服务器管理
启动服务器
systemctl start mysqld或service 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时直接输入
quit或exit或\q即可。
停止服务器
通过systemctl stop mysqld命令或service mysqld stop命令可以停止MySQL服务器。
重启服务器
通过systemctl restart mysqld命令或service mysqld restart命令可以重启MySQL服务器。
3. 服务器,数据库,表关系
-
所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库,这些数据库被存放在一个指定目录底下:

-
一个数据库,就对应Linux下的一个同名的目录:

-
在一个数据库中建立一张表,本质就是在这个数据库的目录下创建数据文件:

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

三、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
- DML中又单独分了一个DQL【Data Query Language】,数据查询语言
-
DCL【Data Control Language】数据控制语言,主要负责权限管理和事务
代表指令: grant,revoke,commit
五、存储引擎
存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL的核心就是插件式存储引擎,支持多种存储引擎。
查看支持的存储引擎
show engines;

MySQL支持的几个存储引擎
| Engine | Support | Comment | Transactions | XA | Savepoints |
|---|---|---|---|---|---|
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| 引擎 | 支持 | 评论 | 事务支持 | XA | 保存点支持 |
|---|---|---|---|---|---|
| InnoDB | 默认 | 支持事务、行级锁定和外键 | 是 | 是 | 是 |
| MRG_MYISAM | 是 | 相同MyISAM表的集合 | 否 | 否 | 否 |
| MEMORY | 是 | 基于哈希,存储在内存中,适用于临时表 | 否 | 否 | 否 |
| BLACKHOLE | 是 | /dev/null存储引擎(写入的数据会消失) | 否 | 否 | 否 |
| MyISAM | 是 | MyISAM存储引擎 | 否 | 否 | 否 |
| CSV | 是 | CSV存储引擎 | 否 | 否 | 否 |
| ARCHIVE | 是 | 归档存储引擎 | 否 | 否 | 否 |
| PERFORMANCE_SCHEMA | 是 | 性能模式 | 否 | 否 | 否 |
| FEDERATED | 否 | 联邦MySQL存储引擎 | NULL | NULL | NULL |
MySQL存储引擎功能对比
| Feature | MyISAM | BDB | Memory | InnoDB | Archive | NDB |
|---|---|---|---|---|---|---|
| Storage Limits | No | No | Yes | 64TB | No | Yes |
| Transactions (commit, rollback, etc.) | ✔ | ✔ | ✔ | |||
| Locking granularity | Table | Page | Table | Row | Row | Row |
| 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) | Low | Low | N/A | High | Very Low | Low |
| Memory cost | Low | Low | Medium | High | Low | High |
| Bulk Insert Speed | High | High | High | Low | Very High | High |
| Cluster database support | ✔ | ✔ | ||||
| Replication support | ✔ | ✔ | ✔ | ✔ | ||
| Foreign key support | ✔ | ✔ | ||||
| Backup/Point-in-time recovery | ✔ | ✔ | ✔ | |||
| Query cache support | ✔ | ✔ | ✔ | |||
| Update Statistics for Data Dictionary | ✔ | ✔ | ✔ |
| 功能 | MyISAM | BDB | Memory | InnoDB | Archive | NDB |
|---|---|---|---|---|---|---|
| 存储限制 | 否 | 否 | 是 | 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引用服务器图片时全局变量与图片路径拼接
理论上,应该在main.js中定义一个全局变量,然后在页面的<image>标签上的是src直接使用即可 main.js 页面上 看上去挺靠谱的,实际上小程序后台会报一个错 很明显这种方式小程序是不认的,这就头疼了,还想过另外一个…...
比较PWM调光和无极调光
在比较PWM调光和无极调光哪种方式更节能时,需要综合考虑多个因素,如灯具类型、光源效率、调光范围以及使用场景等。 PWM调光系统通过调节LED驱动电流的占空比来实现LED亮度的调节,具有高精度、高稳定性、无闪烁现象以及适用范围广等优点。其节…...
【高校科研前沿】新疆生地所陈亚宁研究员团队在GeoSus发文:在1.5°C和2°C全球升温情景下,中亚地区暴露于极端降水的人口增加
目录 文章简介 1.研究内容 2.相关图件 3.文章引用 文章简介 论文名称:Increased population exposures to extreme precipitation in Central Asia under 1.5 ◦C and 2 ◦C global warming scenarios(在1.5C和2C全球变暖情景下,中亚地区…...
使用 OKhttp3 实现 智普AI ChatGLM HTTP 调用(SSE、异步、同步)
SSE 调用 SSE(Sever-Sent Event),就是浏览器向服务器发送一个HTTP请求,保持长连接,服务器不断单向地向浏览器推送“信息”(message),这么做是为了节约网络资源,不用一直…...
智慧校园教学模式的崛起:优化学习体验
在当今数字化时代,智慧校园教学模式正在成为教育界的热门话题。随着科技的不断发展,传统的教学方式已经无法满足现代学生的需求。智慧校园教学模式以其灵活性、互动性和个性化的特点,正逐渐改变着教育的面貌。 首先,智慧校园教学模…...
ffmpeg视频编码原理和实战-(5)对编码过程进行封装并解决丢帧问题
头文件: xencode.h #pragma once #include <mutex> #include<vector> struct AVCodecContext; struct AVPacket; struct AVFrame; class XEncode { public:///// 创建编码上下文/// para codec_id 编码器ID号,对应ffmpeg/// return 编码上…...
halo进阶-主题插件使用
开始捣鼓捣鼓halo,换换主题,加个页面 可参考:Halo 文档 安装/更新主题 主题如同壁纸,萝卜青菜各有所爱,大家按需更换即可; Halo好在一键更换主题,炒鸡方便。 安装/更新插件 此插件还扩展了插件…...
资深开发推荐的IDEA 插件
开发如虎添翼 工欲善其事,必先利其器。想要提升编程开发效率,必须选择一款顺手的开发工具,插件不在多,而在精,作为从业10年的程序员,我目前用到这十几个插件,在平时开发,代码review…...
数学题目系列(一)|丑数|各位和|埃氏筛|欧拉筛
一.丑数 链接:丑数 分析: 丑数只有2,3,5这三个质因数,num 2a 3b 5c也就是一个丑数是由若干个2,3,5组成,那么丑数除以这若干个数字最后一定变为1 代码 class Solution {publi…...
k8s学习--Secret详细解释与应用
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Secret什么是Secret?Secret四种类型及其特点Secret应用案例(1)将明文密码进行base64编码(2)编写创建secret的YAML文…...
功能问题:如何防止接口重复请求?
大家好,我是大澈! 本文约 1400 字,整篇阅读约需 3 分钟。 防止接口重复请求在软件开发中非常重要,重复请求必然会导致服务器资源的浪费。 因为每次请求都需要服务器进行处理,如果请求是重复的,那么服务…...
系统架构设计师【第5章】: 软件工程基础知识 (核心总结)
文章目录 5.1 软件工程5.1.1 软件工程定义5.1.2 软件过程模型5.1.3 敏捷模型5.1.4 统一过程模型(RUP)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() 函数读取数据时,如果返回值小于参数 nmemb 所指定的值,这…...
pESC-HIS是什么,怎么看?-实验操作系列-2
01 典型的pESC-HIS质粒遗传图谱 02 介绍 质粒类型:酿酒酵母蛋白表达载体 表达水平:高拷贝 诱导方法:半乳糖 启动子:GAL1和GAL10 克隆方法:多克隆位点,限制性内切酶 载体大小:6706bp 5 测…...
树形表/树形数据接口的开发
数据表格式 需要返回的json格式 点击查看json数据 [{"childrenTreeNodes" : [{"childrenTreeNodes" : null,"id" : "1-1-1","isLeaf" : null,"isShow" : null,"label" : "HTML/CSS","na…...
二叉树的镜像--c++【做题记录】
【问题描述】 给定扩展二叉树的前序序列,构建二叉树。 求这课二叉树的镜像,并输出其前序遍历序列。 【输入形式】 输入扩展二叉树的前序序列。 【输出形式】 输出镜像二叉树的前序遍历序列。 【样例输入】 ab##cd##e## 【样例输出】 镜像后二叉树的前序遍…...
redis安裝启动
1、下载redis解压 https://github.com/tporadowski/redis/releases 2、打开cmd,切换到解压的文件夹 3、redis-server.exe redis.windows.conf 启动redis redis可通过命令行输入config set requirepass password和直接修改redis.config文件中修改 requirepass 来设…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
