走进MySQL:从认识到入门(针对初学者)

一,引言

       MySQL是一款久负盛名且广泛应用的关系型数据库管理系统,自1995年Michael Widenius和David Axmark在瑞典和芬兰发起研发以来,其发展历程可谓辉煌且深远。作为开源软件的代表,MySQL以其卓越的成本效益、高性能及高可靠性赢得了全球范围内的大量企业和开发者青睐。在2008年,MySQL AB被Sun Microsystems收购,后又随着Sun并入Oracle麾下,进一步巩固了其在数据库市场的重要地位。

二,MySQL 的主要特点和优势

MySQL之所以备受推崇,主要原因在于:

  1. 成本优势:作为开源软件,MySQL提供免费使用和修改的权利,大大降低了企业及个人用户的初期投入和运维成本。

  2. 性能高效:MySQL经过长期迭代优化,执行速度快,能有效应对大数据量和高并发场景,满足各类应用程序的数据处理需求。

  3. 高度可靠:诸多知名大公司和高流量网站均选择MySQL作为其核心数据管理工具,足见其在处理关键业务数据方面的稳定性和可靠性。

  4. 易用性强:MySQL安装配置便捷,界面友好,适合各层次的开发者快速上手,并提供了丰富的文档和支持资源。

 三,Mysql的架构

       尽管早期MySQL曾因功能相对有限受到一定批评,但随着时间推移,MySQL不断推出的新版本持续增强了其功能特性,逐步缩小与其他高级DBMS的差距。

       从架构分类上看,DBMS可分为共享文件系统和客户机-服务器两种模式。其中,MySQL属于后者,这类系统适用于大型项目和关键任务环境。在客户机-服务器架构中,MySQL服务器软件负责所有数据的访问和处理,运行在专用的数据库服务器上,确保数据安全和高效操作。而客户端软件则充当用户与服务器之间的交互接口,无论是MySQL自带的工具,还是诸如Perl、ASP、ColdFusion、JSP、PHP等脚本或编程语言,都可以作为客户端向MySQL服务器发送查询请求、获取处理结果。

      这种结构的优势在于,用户无需直接接触底层数据文件,所有的数据访问、处理过程都被封装在服务器端进行,从而实现数据的安全隔离和高效利用。因此,要使用MySQL,用户需具备对运行MySQL服务器软件的计算机的访问权限,并通过合适的客户端工具或编程语言与其进行交互,实现数据的增删改查等各种操作。

四,如何安装Mysql5.7

      MySQL是一种流行的关系型数据库管理系统,适用于各种应用场景。以下将介绍如何在CentOS系统上安装MySQL 5.7,并进行简单的配置。

步骤一:关闭防火墙

确保系统安全性设置不会阻碍MySQL服务的安装和运行。首先,关闭并禁用防火墙:

sudo systemctl stop firewalld
sudo systemctl disable firewalld

如果不想关闭防火墙则可以参考以下配置:

直接放行开放3306端口命令(生产环境使用)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

步骤二:临时关闭 SELinux

为了简化安装过程,临时关闭SELinux:

sudo sed -i 's/enforcing/disabled/g' /etc/selinux/config
sudo setenforce 0

步骤三:清理可能存在的Mariadb配置

避免与MySQL产生冲突,清理可能存在的Mariadb配置:

sudo rpm -e --nodeps $(rpm -qa | grep mariadb)

步骤四:下载并安装MySQL软件仓库

下载并安装MySQL社区版的RPM软件仓库:

wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm    

sudo yum -y install mysql57-community-release-el7-11.noarch.rpm

步骤五:导入MySQL的GPG公钥

导入MySQL的GPG公钥以验证软件包完整性:

wget https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 --no-check-certificate

sudo rpm --import  RPM-GPG-KEY-mysql-2022

步骤六:安装MySQL服务器

借助已安装的仓库,安装MySQL服务器:

sudo yum -y install mysql-server

步骤七:启动MySQL服务并检查状态

启动MySQL服务并检查其运行状态:

sudo systemctl start mysqld.service

sudo systemctl status mysqld.service

步骤八:提取临时密码并重设root密码

提取MySQL生成的临时密码,并使用该密码登录MySQL进行初始化配置:

temp_password=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')

mysql --connect-expired-password -u root -p"$temp_password" <<- EOF ALTER USER 'root'@'localhost' IDENTIFIED BY 'Huawei@123'; SET PASSWORD FOR 'root'@'localhost' = PASSWORD('Huawei@123'); GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Huawei@123' WITH GRANT OPTION; EOF

上面这段命令是用来在 MySQL 数据库中进行一系列的操作。首先,它连接到 MySQL 数据库,并使用之前提取的临时密码作为认证信息。然后,它执行以下操作:

  1. 修改 root 用户的密码为 'Huawei@123',以确保安全性和访问权限。
  2. 授予 root 用户对所有数据库的所有权限,并且允许 root 用户将权限授予其他用户。

至此,MySQL 5.7 已在 CentOS 系统上成功安装并完成了初步配置。您现在可以使用新的 root 密码登录并管理MySQL数据库了。

五,Mysql的基本操作

       每个MySQL安装都有一个名为mysql 的简单命令行实用程序。这 个实用程序没有下拉菜单、流行的用户界面、鼠标支持或任何类似的东西。接下来让我们一个有趣的例子来学习一下Mysql的基本操作吧

步骤一,登录Mysql

通过root账户接入到数据库,默认的端口是3306

[root@mysql ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.7.19 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

mysql 命令行实用程序是使用最多的实用程序之一,它对于快速测试和执行脚本非常有价 值。

步骤二,创建数据库和表

首先,我们创建一个名为 company 的数据库,并在其中创建一个 employees 表。数据库是用来存储数据的容器,而表是数据库中组织数据的方式。

CREATE DATABASE IF NOT EXISTS company;
USE company;

CREATE TABLE IF NOT EXISTS employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    department VARCHAR(100) NOT NULL,
    position VARCHAR(100),
    salary DECIMAL(10, 2)
);

  • CREATE DATABASE IF NOT EXISTS company;:创建一个名为 company 的数据库。IF NOT EXISTS 部分表示如果数据库已经存在,则不再创建。
  • USE company;:选择使用 company 数据库。
  • CREATE TABLE IF NOT EXISTS employees (...);:创建一个名为 employees 的表。IF NOT EXISTS 部分表示如果表已经存在,则不再创建。表中定义了 idnamedepartmentpositionsalary 五个字段。

    步骤三,插入数据

 然后,我们向 employees 表中插入一些示例数据。这些数据包含了员工的姓名、部门、职位和薪水信息。

INSERT INTO employees (name, department, position, salary) VALUES
('John Doe', 'IT', 'Software Engineer', 60000.00),
('Jane Smith', 'HR', 'HR Manager', 70000.00),
('Michael Johnson', 'Finance', 'Accountant', 55000.00),
('Emily Davis', 'Marketing', 'Marketing Specialist', 65000.00);

  • INSERT INTO employees ...:将数据插入到 employees 表中。
  • VALUES (...), (...), ...:指定要插入的值。每个括号内部表示一条要插入的数据记录。

 步骤四,查询数据 

我们可以查询 employees 表中的所有员工信息。

SELECT * FROM employees;

  • SELECT * FROM employees;:从 employees 表中选择所有列的数据。* 表示所有列。

步骤五,更新数据

假设 John Doe 被提升为 IT 部门的经理,我们需要更新他的职位信息。

UPDATE employees SET position = 'IT Manager' WHERE name = 'John Doe';

  • UPDATE employees ...:更新 employees 表中的数据。
  • SET position = 'IT Manager':设置 position 字段的值为 'IT Manager'
  • WHERE name = 'John Doe':指定更新条件,只更新姓名为 'John Doe' 的员工的数据。

 步骤六,删除数据

假设 Emily Davis 离职了,我们可以从 employees 表中删除她的信息。

DELETE FROM employees WHERE name = 'Emily Davis';

  • DELETE FROM employees ...:从 employees 表中删除数据。
  • WHERE name = 'Emily Davis':指定删除条件,只删除姓名为 'Emily Davis' 的员工的数据。

步骤七,查询与筛选

让我们查询所有薪水大于 60000 的员工。

SELECT * FROM employees WHERE salary > 60000;

  • SELECT * FROM employees ...:从 employees 表中选择所有列的数据。
  • WHERE salary > 60000:指定条件,只选择薪水大于 60000 的员工。

 步骤八,排序与限制数据

让我们按照薪水降序标题二排列并显示前两名员工。

SELECT * FROM employees ORDER BY salary DESC LIMIT 2;

  • ORDER BY salary DESC:按照薪水降序排列结果。
  • LIMIT 2:限制结果只显示前两条记录。

 步骤九,统计数据

让我们统计每个部门的员工数量。

SELECT department, COUNT(*) AS total_employees FROM employees GROUP BY department;

  • SELECT department, COUNT(*) AS total_employees ...:从 employees 表中选择部门和员工数量,并对部门进行分组统计。COUNT(*) 统计每个部门的员工数量。

步骤十, 数据分组与聚合

让我们统计每个部门的平均薪水。

SELECT department, AVG(salary) AS average_salary FROM employees GROUP BY department;
  • AVG(salary) AS average_salary:计算每个部门的平均薪水,并将结果命名为 average_salary
  • GROUP BY department:按照部门进行分组,以便对每个部门进行统计。

步骤十一,数据删除与批量操作 

假设 Lisa Taylor 和 David Lee 都离职了,让我们删除他们的信息。

DELETE FROM employees WHERE name IN ('Lisa Taylor', 'David Lee');

  • DELETE FROM employees ...:从 employees 表中删除数据。
  • WHERE name IN ('Lisa Taylor', 'David Lee'):指定删除条件,删除姓名为 'Lisa Taylor' 或 'David Lee' 的员工的数据。

通过以上操作,我们完成了一个完整的案例,涵盖了数据库的创建、表的设计、数据的插入、查询、更新、删除、条件筛选、排序、统计、多表查询、数据联合等多种操作。这样的案例展示了 MySQL 数据库的丰富功能和灵活性。 

六,结论

         综上所述,MySQL凭借其开源、低成本、高性能、高度可靠和易于使用的特性,在全球范围内吸引了无数开发者和企业的关注。通过详细的安装步骤和基本操作示例,初学者不仅能够成功在CentOS系统上部署MySQL 5.7,还能够在实践中掌握数据库创建、数据操作、查询分析等一系列基础技能。

      然而,MySQL的强大之处远不止于此。随着对MySQL更深入的探索,你会发现它在数据安全、事务处理、性能调优、集群部署等方面同样表现出色。对于初学者来说,这只是迈向数据库技术殿堂的第一步。未来,你可以通过学习更复杂的SQL查询、索引策略、存储过程、触发器等功能,进一步提升数据库管理水平,并将其应用到实际项目开发与运维工作中。

      在此鼓励每一位初学者积极拓展知识领域,熟悉MySQL的更多高级特性,并结合实际需求灵活运用。同时,时刻关注MySQL社区的最新动态和技术更新,紧跟数据库技术发展的步伐,不断提升自身的技术实力和竞争力。希望本文提供的入门指南能够为你的MySQL学习之旅打开一扇窗,引领你在数据管理的世界里自信前行,创造出更多的价值与可能。

OK,今天的分享就到这里啦,我们下期见^_^,需要获取镜像包,也可以私聊博主哦

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

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

相关文章

关于 Amazon DynamoDB 的学习和使用

文章主要针对于博主自己的技术栈&#xff0c;从Unity的角度出发&#xff0c;对于 DynamoDB 的使用。 绿色通道&#xff1a; WS SDK for .NET Version 3 API Reference - AmazonDynamoDBClient Amazon DynamoDB Amazon DynamoDB is a fast, highly scalable, highly available,…

Harmony鸿蒙南向驱动开发-RTC接口使用

功能简介 RTC&#xff08;real-time clock&#xff09;为操作系统中的实时时钟设备&#xff0c;为操作系统提供精准的实时时间和定时报警功能。当设备下电后&#xff0c;通过外置电池供电&#xff0c;RTC继续记录操作系统时间&#xff1b;设备上电后&#xff0c;RTC提供实时时…

MAC OS关闭SIP(navicat 无法保存密码)

最近安装navicat&#xff08;16.3.7&#xff09;时,安装后无法保存密码,保存密码会报错如下&#xff1a; 因为用的破解版&#xff0c;一开始是打不开的&#xff0c;用自带的修复软件修复后就可以打开了&#xff0c;但是保存密码就会报错&#xff0c;按照网上的一些操作 1、卸载…

蓝桥杯嵌入式(G431)备赛笔记——RTC

// RTC time// 声明一个变量 rtc_tick 用于记录上次 RTC 处理的时间 u32 rtc_tick 0;// 声明结构体变量 D 用于存储 RTC 的日期信息 RTC_DateTypeDef D;// 声明结构体变量 T 用于存储 RTC 的时间信息 RTC_TimeTypeDef T;// RTC_proc 函数&#xff0c;用于处理 RTC 时间 void R…

Photoshop 2023 中文---创意与设计的新篇章

Photoshop 2023是由Adobe Systems开发和发行的一款强大的图像处理软件&#xff0c;广泛应用于专业摄影师、设计师、艺术家等用户群体。它拥有丰富的功能和工具&#xff0c;可以轻松进行图像编辑、合成、调整和修复等任务。在Photoshop 2023中&#xff0c;智能选择功能得到了升级…

python爬虫-------urllib代理和代理池(第十七天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

Kubernetes(k8s):深入理解k8s中的亲和性(Affinity)及其在集群调度中的应用

Kubernetes&#xff08;k8s&#xff09;&#xff1a;深入理解k8s中的亲和性&#xff08;Affinity&#xff09;及其在集群调度中的应用 1、什么是亲和性&#xff1f;2、节点亲和性&#xff08;Node Affinity&#xff09;2.1 硬性节点亲和性规则&#xff08;required&#xff09;…

paddle实现手写数字模型(一)

参考文档&#xff1a;paddle官网文档环境&#xff1a;Python 3.12.2 &#xff0c;pip 24.0 &#xff0c;paddlepaddle 2.6.0 python -m pip install paddlepaddle2.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple调试代码如下&#xff1a; LeNet.py import paddle import p…

013_NaN_in_Matlab中的非数与调试方法

Matlab中的非数与调试方法 是什么&#xff1f; Matlab编程&#xff08;计算器使用&#xff09;中经常有个错误给你&#xff0c;这句话里可能包含一个关键词NaN。大部分学生都有过被 NaN 支配的痛苦记忆。 NaN 是 Not a Number 的缩写&#xff0c;表示不是一个数字。在 Matla…

【SVN】clean up报错:Cleanup failed to process the following paths 解决方法

报错来源&#xff1a;代码更新有一个文件既不能接受自己的也不能接受别人的&#xff0c;只能取消&#xff0c;再提交提醒clean up&#xff0c;随后报标题错误。 解决方法&#xff1a;参考https://www.cnblogs.com/pinpin/p/11395438.html 注&#xff1a;如果clean up的时候有…

基于ssm项目校园快递平台系统

采用技术 基于SpringBoot框架实现的web的智慧社区系统的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringMVCMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 管理员功能 订单管理 快递管理 公告管理 公告类…

基于YOLOv5s的电动车入梯识别系统(数据集+权重+登录界面+GUI界面+mysql)

本人训练的yolov5s模型&#xff0c;准确率在98.6%左右&#xff0c;可准确完成电梯内检测电动车任务&#xff0c;并搭配了GUI检测界面&#xff0c;支持权重选择、图片检测、视频检测、摄像头检测、识别结果拍照和在线标注数据集等功能。 共有4000张左右图片&#xff0c;全部为电…

机器人瓶胚检测工作站(H3U脉冲轴控制)

1、变量定义 2、程序监控1 2、 程序监控2 3、程序监控3 机器人输送料和机构的动作安全尤为重要&#xff0c;下面我们讨论下安全联锁控制逻辑

基于STM32F103单片机的时间同步项目

一、前言 本项目为前一个时间同步项目的更迭版本&#xff0c;由于之前的G031开发板没有外部晶振&#xff0c;从机守时能力几乎没有&#xff0c;5秒以上不同步从机时间就开始飞了。在考虑成本选型后&#xff0c;选择了带有外部有缘晶振的STM32F103C8T6最小单片机&#xff0c;来作…

解决mac本git安装后找不到命令的问题

不熟悉mac配置&#xff0c;折腾了半天&#xff0c;记录一下。 1.问题描述2.解决方法 1.问题描述 从https://sourceforge.net/projects/git-osx-installer/files/下载的git安装包&#xff1a; 安装时提示&#xff1a; 这里的解决办法是按住control键再打开文件安装。 安装完…

react antd 实现修改密码(原密码,新密码,再次输入新密码,新密码增加正则复杂度校验)

先看样子 组件代码&#xff1a; import React, { useState, useEffect } from react import { Row, Col, Modal, Spin, Input, Button, message, Form } from antd import { LockOutlined, EyeTwoTone, EyeInvisibleOutlined } from ant-design/icons import * as Serve from …

pyside6的QSpinBox自定义特性初步研究(二)

当前的需求是&#xff0c;蓝色背景的画面&#xff0c;需要一个相对应色系的QSpinBox部件。已有的部件风格是这样的&#xff0c;需要新的部件与之般配。 首先新建一个QDoubleSpinBox&#xff0c;并定义其背景色和边框&#xff1a; QDoubleSpinBox { color: white; border:1px…

基于无线物联网的智能配电监控系统设计应用

摘要&#xff1a;阐述基于电力物联网的智能配电监控系统的特点&#xff0c;探讨物联网结构及其关键技术&#xff0c;电力物联网下的智能配电监控系统设计&#xff0c;包括整体结构设计、硬件和软件系统设计。 安科瑞薛瑶瑶18701709087 关键词&#xff1a;电力物联网&#xff…

【好用】推荐10套后端管理系统前端模板

后台管理系统前端模板是开发者在构建后台管理系统时使用的一种工具&#xff0c;它提供了预先设计好的界面和组件&#xff0c;以帮助开发者快速搭建出功能完善、用户体验良好的管理系统。以下是V哥整理的10款流行的后台管理系统前端模板&#xff0c;它们基于不同的技术栈和设计理…

zookeeper分布式应用程序协调服务

一、zookeeper基本介绍 1.1 zookeeper的概念 Zookeeper是一个开源的分布式的&#xff0c;为分布式框架提供协调服务的Apache项目。 是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件&#xff0c;提供的功能包括&#xff1a;配置维护、域名服务、…