成都网站优化及推广/阿里域名购买网站
文章目录
- 一、数据库的概念
- 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 来设…...

为什么Java中的main方法必须是public static void的?
当我们创建main方法时,首先都是public、都是static,返回值都是void,方法名都是main,入参都是一个字符串数组。 在以上的方法声明中,唯一可以改变的部分就是方法的参数名,我们可以吧args改成任意我们想要使…...

shell的编程方式
文章目录 变量俩种方式第一种方式第二种方式 取消变量数组创建数组获取数组元素的方式 read输出的方式限制输入的方式 流程控制方式for循环输出的方式第一种方式第二种方式while循环输出的方式select选择输出的方式 判断方式判断的四种方式第一种方式第二种方式第三种方式 算术…...

前端面试项目细节重难点(已工作|做分享)想(八)
面试官:请你讲讲你在该项目中遇到的印象深刻的问题是什么? 答:我的回答:该项目的实现过程中我确实遇到了问题:【我会给大家整理回答思路和角度,那那么遇到这样的问题也可借鉴这种思路进行阐述】 第一层面…...

Loguru,一个 Python 日志神器
大家好!我是爱摸鱼的小鸿,关注我,收看每期的编程干货。 一个简单的库,也许能够开启我们的智慧之门, 一个普通的方法,也许能在危急时刻挽救我们于水深火热, 一个新颖的思维方式,也许能激发我们无尽的创造力, 一个独特的技巧,也许能成为我们的隐形盾牌…… 神奇的 Pyth…...

C++ 反转单词
在C中,反转一个字符串中的单词(单词之间通过空格分隔,但单词内部保持原有顺序)可以通过以下步骤实现: 找到字符串中的所有单词,这可以通过查找空格来实现。将单词存储在一个容器中(例如 std::v…...

Apache Doris 基础 -- 数据表设计(表索引)
1、索引概述 索引用于帮助快速过滤或搜索数据。目前,Doris支持两种类型的索引:内置智能索引和用户创建的二级索引。 内置智能索引 排序键和前缀索引:Apache Doris基于排序键以有序的方式存储数据。它为每1024行数据创建一个前缀索引。索引中的键是当前1024行组的…...

资源描述框架的用途及实际应用解析
什么是RDF? RDF代表 资源描述框架 RDF是用于描述网络资源的框架 RDF旨在被计算机阅读和理解 RDF并非设计用于供人阅读 RDF以 XML 编写 示例 描述购物商品的属性,如价格和可用性描述网络活动的时间表描述网页的信息(内容,作者&a…...

工业级物联网边缘网关解决方案-天拓四方
随着工业4.0时代的到来,越来越多的企业开始寻求智能化升级,以提高生产效率、降低运营成本并增强市场竞争力。然而,在实际的转型升级过程中,许多企业面临着数据孤岛、设备兼容性差、网络安全风险高等问题,这些问题严重制…...

认识微服务,认识Spring Cloud
1. 介绍 本博客探讨的内容如下所示 什么是微服务?什么是springcloud?微服务和springcloud有什么关系? 首先,没有在接触springcloud之前,我写的项目都是单体结构, 但随着网站的用户量越来越大,…...

电脑设置密码怎么设置?让你的电脑更安全!
在如今信息化的社会中,保护个人电脑的安全至关重要。设置密码是最基本的电脑安全措施之一,它可以有效防止未经授权的访问和保护个人隐私,可是电脑设置密码怎么设置?本文将介绍三种设置电脑密码的方法,帮助您加强电脑的…...