【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 索引
哈希索引
全文搜索索引
聚簇索引
数据缓存
索引缓存
压缩数据
加密数据(通过函数)
存储成本(空间使用)不适用非常低
内存成本中等
批量插入速度非常高
集群数据库支持
复制支持
外键支持
备份/时间点恢复
查询缓存支持
数据字典更新统计

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

麒麟操作系统rpm ivh安装rpm包卡死问题分析

夜间变更开发反应,rpm -ivh 安装包命令夯死,无执行结果,也无报错 排查 : 1、top 查看无进程占用较高进程存在,整体运行平稳 2、df -h 查看磁盘并未占满 3、其他服务器复现该命令正常执行 4、ps -ef|grep rpm 查看安装命令仍在运行中 5、查看log日志,均正常并无不良日志…

UE Editor API 整理

UE Editor API 整理 过一下 https://github.com/20tab/UnrealEnginePython/blob/master/docs/,熟悉一下编辑器 API,方便后续编辑器脚本开发 后续的目标是所有编辑器操作应该都可以脚本化(自动化),这样把 GPT 接进 UE…

了解Kubernetes-RKE2的PKI以及证书存放位置

一、什么是PKI? 简称:证书基础设施。 可以方便理解为当你的集群有Server,Client架构,那么为了安全加密之间的通信,则需要使用证书进行交互,那么利用PKI架构可以安全加密组件之间的通信。 二、Kubernetes的PKI架构什…

HLA高层体系结构1.0.0版本

名:高层体系结构(High Level Architecture,HLA) 高层体系结构(High Level Architecture,HLA)是从体系结构上建立这样一个框架,它能尽量涵盖M&S领域中所涉及的各种不同类型的仿真…

代码随想录算法训练营第十四天| 104.二叉树的最大深度 、 111.二叉树的最小深度、 222.完全二叉树的节点个数

104.二叉树的最大深度 题目链接:二叉树的最大深度 文档讲解:代码随想录 状态:so easy 思路:左子树和右子树中取最大深度,依次往下递归 递归解法: public int maxDepth(TreeNode root) {if (root null) {r…

【高校科研前沿】新疆生地所陈亚宁研究员团队在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全球变暖情景下,中亚地区…

伽马校正技术在AI绘画中的作用

随着人工智能技术的飞速发展,AI绘画已经成为了艺术创作领域的一股新兴力量。在这个数字化时代,计算机图形学和机器学习的结合为我们带来了前所未有的创作工具。然而,为了实现更加真实和自然的色彩表现,伽马校正技术在其中扮演着至…

DP读书:如何使用badge?(开源项目下的标咋用)

最近在冲论坛,很少更一些内容了。但遇到了一个真的有趣的: 开源项目下,蓝蓝绿绿的标是怎么用的呢? 这是我的主页Readme,在看一些NXP的主仓时,突然发现没有这个玩,就自己整了个 再比如我的CSDN专…

Vivado 设置关联使用第三方仿真软件 Modelsim

目录 1.前言2.Vivado 设置关联使用第三方仿真软件 Modelsim 微信公众号获取更多FPGA相关源码: 1.前言 Vivado 软件自带有仿真功能,该功能使用还是比较方便的,初学者可以直接使用自带的仿真功能。 Modelsim仿真工具是Model公司开发的。它支持Verilog、VHDL以及他…

springboot+vue+mybatis房屋租贷系统+PPT+论文+讲解+售后

本论文系统地描绘了整个网上房屋租赁系统的设计与实现,主要实现的功能有以下几点:管理员;首页、个人中心、房屋类型管理、房屋租赁管理、会员管理、订单信息管理、合同信息管理、退房评价管理、管理员管理,系统管理,前…

分布式ID生成方式

1.UUID uuid方式存在问题:占用字节数比较大;ID比较随机,作为MySQL主键写入库时,为了保证顺序性将导致BTree节点分裂比较频繁,影响IO性能。 2.数据库方式 步长step 3,即为机器的数量。 第一台机器&#x…

2024 Q1企业级SSD市场暴涨,国产努力追赶!

在2024年第一季度,由于对高容量存储需求的激增,企业级固态硬盘(SSD)市场的收入实现了显著增长,达到了37.58亿美元,与上一季度相比增长了62.9%。这一增长主要得益于供应商减产导致的高容量订单需求未得到满足…

大模型高级 RAG 检索策略之混合检索

古人云:兼听则明,偏信则暗,意思是要同时听取各方面的意见,才能正确认识事物,只相信单方面的话,必然会犯片面性的错误。 在 RAG(Retrieval Augmented Generation)应用中也是如此&…

LeetCode 算法:合并区间c++

原题链接🔗:合并区间 难度:中等⭐️⭐️ 题目 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰…

Nginx编译安装+nginx模块

一、I/O模型 处理高并发的时候用 1.1I/O模型简介 同步/异步(消息反馈机制):关注的是消息通信机制,即调用者在等待一件事情的处理结果时,被调用者是否提供完成状态的通知。 同步:synchronous,…

java第二十课 —— 面向对象习题

类与对象练习题 编写类 A01,定义方法 max,实现求某个 double 数组的最大值,并返回。 public class Chapter7{public static void main(String[] args){A01 m new A01();double[] doubleArray null;Double res m.max(doubleArray);if(res !…

Mysql8安装教程与配置(超详细图文)

MySQL 8.0 是 MySQL 数据库的一个重大更新版本,它引入了许多新特性和改进,旨在提高性能、安全性和易用性。 1.下载MySQL 安装包 注:本文使用的是压缩版进行安装。 (1)从网盘下载安装文件 点击此处直接下载 &#…

JavaWeb3 Ajax+Axios+Element+Nginx部署

Ajax 异步JS和XML 1.数据交换&#xff1a;给服务器发送请求&#xff0c;并获取服务器相应的数据 2.异步交互&#xff1a;在不重新加载整个页面的情况下&#xff0c;与服务器交换数据并更新部分网页 同步与异步 原生Ajax <!DOCTYPE html> <html> <body><…

Android——热点开关演讲稿

SoftAP打开与关闭 目录 1.三个名词的解释以及关系 Tethering——网络共享&#xff0c;WiFi热点、蓝牙、USB SoftAp——热点(无线接入点)&#xff0c;临时接入点 Hostapd——Hostapd是用于Linux系统的软件&#xff0c;&#xff0c;支持多种无线认证和加密协议&#xff0c;将任…

Java集合的迭代操作,Set Map接口以及工具类方法

1、集合元素迭代 1.1 集合元素遍历 集合的遍历&#xff1a;把集合中的每一个元素获取出来 使用for遍历 使用迭代器遍历 Iterator表示迭代器对象&#xff0c;迭代器中拥有一个指针&#xff0c;默认指向第一个元素之前&#xff0c; . boolean hasNext()&#xff1a;判断指针后是…