【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 来设…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
