走进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,今天的分享就到这里啦,我们下期见^_^,需要获取镜像包,也可以私聊博主哦

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux使用宝塔面板部署Discuz结合内网穿透实现公网访问本地论坛

文章目录 前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 前言 Crossday Discuz! Board&#xff08;以下简称 Discuz!&#xff09;是一套通用的社区论坛软件系统&#xff0c;用户可以在不需要任何编程的基础上&a…

ZLMediaKit ubantu 下编译

1、获取代码 #国内用户推荐从同步镜像网站gitee下载 git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit #千万不要忘记执行这句命令 git submodule update --init二、依赖库 Debian系(包括ubuntu&#xff09;系统下安装依赖的方法&#xff1a; #除了…

【考研数学】《660》+《880》高分搭配方法

&#x1f4dd;《660题》和《880题》高效刷题方法 1️⃣做题要有针对性&#xff0c;不要为了做题而做题 &#x1f4aa;660和880题虽然多&#xff0c;但是你不用全都做完&#xff0c;你可以把它当成是题源&#xff0c;里面的每一道题都很经典&#xff0c;如果搞懂一道&#xff…

AcWing 796. 子矩阵的和——算法基础课题解

AcWing 796. 子矩阵的和 题目描述 输入一个 n 行 m 列的整数矩阵&#xff0c;再输入 q 个询问&#xff0c;每个询问包含四个整数 x1,y1,x2,y2&#xff0c;表示一个子矩阵的左上角坐标和右下角坐标。 对于每个询问输出子矩阵中所有数的和。 输入格式 第一行包含三个整数 n&…

Leetcode刷题之消失的数字(C语言版)

Leetcode刷题之消失的数字&#xff08;C语言版&#xff09; 一、题目描述二、题目解析 一、题目描述 数组nums包含从0到n的所有整数&#xff0c;但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗&#xff1f; 注意&#xff1a;本题相对书上原题稍作…

大数据------JavaWeb------JDBC(完整知识点汇总)

JDBC 定义 全称为Java数据库连接&#xff08;Java DataBase Connectivity&#xff09;&#xff1a;是使用java语句来操作所有关系型数据库的一套API JDBC本质 它是官方定义的一套操作所有关系型数据库的规则&#xff08;即接口&#xff09;&#xff0c;各个数据库厂商会去实现…

使用Nodejs + express连接数据库mongoose

文章目录 先创建一个js文档安装 MongoDB 驱动程序&#xff1a;引入 MongoDB 模块&#xff1a;设置数据库连接&#xff1a;新建一个表试试执行数据库操作&#xff1a;关闭数据库连接&#xff1a; 前面需要准备的内容可看前面的文章&#xff1a; Express框架搭建项目 node.js 简单…

企业官网为什么需要配置独享IP?

什么是独享IP和共享IP&#xff1f;独享IP有什么优点&#xff1f;企业网站配置独享IP有什么优势呢&#xff1f;下面给大家简单介绍下。 什么是独享IP和共享IP&#xff1f; 首先&#xff0c;让我们了解IP&#xff08;Internet Protocol&#xff09;的概念。IP地址是一个数字串&…

CSS水波纹效果

效果图&#xff1a; 1.创建一个div <div class"point1" click"handlePoint(1)"></div> 2.设置样式 .point1{width: 1rem;height: 1rem;background: #2ce92f;position: absolute;border-radius: 50%;z-index: 999;cursor: pointer;} 3.设置伪…

电子元器件线上交易商城搭建的价值和必要性-加速度jsudo

随着科技的飞速发展&#xff0c;电子元器件行业正迎来前所未有的变革。为了满足市场对于电子元器件采购的便捷性、高效性和多样性的需求&#xff0c;电子元器件商城的开发显得尤为重要。本文将探讨电子元器件商城开发的重要性、主要功能以及它如何助力行业发展。 电子元器件商城…

实用工具系列-ADB使用方式

作者持续关注 WPS二次开发专题系列&#xff0c;持续为大家带来更多有价值的WPS开发技术细节&#xff0c;如果能够帮助到您&#xff0c;请帮忙来个一键三连&#xff0c;更多问题请联系我&#xff08;WPS二次开发QQ群:250325397&#xff09;&#xff0c;摸鱼吹牛嗨起来&#xff0…

C++ | Leetcode C++题解之第22题括号生成

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<string> res; //记录答案 vector<string> generateParenthesis(int n) {dfs(n , 0 , 0, "");return res;}void dfs(int n ,int lc, int rc ,string str){if( lc n && rc n…

如何应对Android面试官 -> ActivityManagerService 是怎么启动的?

前言 本章主要讲解下 什么是 AMS&#xff0c;以及它是如何启动的&#xff1b; SystemServer SystemServer 通过按下电源键接通电源之后就会启动 BootRoom&#xff0c;BootRoom 就会拉起一个 BootLoader 程序&#xff0c;此程序会拉起 Linux Kernel「系统内核」&#xff0c;我们…

小程序如何通过把动态数据值传入到css文件中控制样式

场景&#xff1a;动态改变一个模块的高度 一、常用解决方法&#xff1a;行内样式绑值&#xff0c;或者动态class来传递 <viewclass"box":style"height: ${boxHeight}px">我是一个动态高度的box,我的高度是{{boxHeight}}px </view>二、高度传…

关于Linux下的进程替换(进程篇)

目录 进程替换是什么&#xff1f; 进程替换需要怎样操作&#xff1f; 替换函数 命名理解 不创建子进程进行进程替换 关于替换程序时的写时拷贝 fork创建子进程进行替换 函数1&#xff1a;execl 函数2&#xff1a;execv 函数3&#xff1a;execlp 函数4&#xff1a;execvp…

python-study-day1-(病人管理系统-带sql)

MainWindow代码 from tkinter import * from tkinter import messagebox from tkinter.ttk import Comboboxclass MianWindow(Frame):def __init__(self, masterNone):super().__init__(master, padx30, pady20)self.flag 0self.pack(expandTrue, fillBOTH)self.id StringVa…

vue3:菜单、标签页和面包屑联动效果

文章目录 1.整体思路2.实现过程 概要 提示&#xff1a;这里可以添加技术概要 例如&#xff1a; openAI 的 GPT 大模型的发展历程。 1.整体思路 在之前做的后台项目中&#xff0c;菜单、标签页和面包屑之间的联动&#xff0c;自己都是通过在路由前置守卫中&#xff0c;定义b…

铭飞SQL注入严重信息泄露【附POC】

感谢您抽出 阅读本文 MCMS是一个<完整开源的Java CMS&#xff01;基于SpringBoot 2架构&#xff0c;前端基于vue、element ui。MCMS存在SQL注入漏洞&#xff0c;攻击者可通过该漏洞获取数据库敏感信息等。目前厂商暂未发布修复措施解决此安全问题&#xff0c;建议使用此软件…

配置QtCreator能加载自定义插件的环境

配置对应环境 引言查看当前版本配置能够加载插件的环境 引言 生成的自定义插件能在QtCreator的设计器中加载&#xff0c;需要满足当前使用的QtCreator的编译时所需的Qt库和编译器。 查看当前版本 这里需要先查看自己使用的QtCreator的版本&#xff0c;即生成QtCreator时使用…

【LeetCode】回溯算法类题目详解

所有题目均来自于LeetCode&#xff0c;刷题代码使用的Python3版本 回溯算法 回溯算法是一种搜索的方法&#xff0c;在二叉树总结当中&#xff0c;经常使用到递归去解决相关的问题&#xff0c;在二叉树的所有路径问题中&#xff0c;我们就使用到了回溯算法来找到所有的路径。 …