当前位置: 首页 > news >正文

《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)

在这里插入图片描述

文章目录

  • 1.1 MySQL 概览:版本、特性和生态系统
    • 1.1.1 基础知识
    • 1.1.2 重点案例:使用 Python 实现 MySQL 数据的 CRUD 操作
    • 1.1.3 拓展案例 1:使用 Python 实现 MySQL 数据备份**
    • 1.1.4 拓展案例 2:使用 Python 分析 MySQL 数据
  • 1.2 安装和配置 MySQL
    • 1.2.1 基础知识
    • 1.2.2 重点案例:使用 Homebrew 安装 MySQL 并进行初步配置
    • 1.2.3 拓展案例 1:配置 MySQL 以优化 Mac OS 上的性能
    • 1.2.4 拓展案例 2:使用 Python 连接到配置好的 MySQL 实例并创建一个数据库
  • 1.3 基础命令和操作
    • 1.3.1 基础知识
    • 1.3.2 重点案例:使用 Python 创建数据库和表,并插入数据
    • 1.3.3 拓展案例 1:使用 Python 执行数据查询操作
    • 1.3.4 拓展案例 2:更新和删除数据

1.1 MySQL 概览:版本、特性和生态系统

在这一节中,我们将深入探索 MySQL,这个在全球广泛使用的关系型数据库管理系统。无论你是初学者还是经验丰富的开发者,了解 MySQL 的基础知识都是至关重要的。

1.1.1 基础知识

  • 版本:MySQL 的版本历史可以追溯到 1995 年,经历了从 3.x 到 8.0 的演变。每个主要版本的发布都带来了性能改进、新特性和安全性增强。当前,MySQL 8.0 是最新的稳定版本,它引入了诸如窗口函数、公共表表达式(CTE)、角色管理、JSON 支持扩展等先进特性。

  • 特性

    • 存储引擎:MySQL 支持多种存储引擎,包括 InnoDB(支持事务处理,提供高可靠性)、MyISAM(适用于读取密集型应用)、Memory(数据存储在 RAM 中,提供快速访问)等。
    • 复制:MySQL 提供主从复制功能,支持数据的实时备份和读写分离,提高了数据库的可用性和扩展性。
    • 分区:通过将表中的数据分布到不同的分区来提高性能,特别是在处理大量数据时。
    • 安全性:包括网络层加密、SHA-256 密码认证、角色基的权限控制等。
  • 生态系统:MySQL 被广泛应用于各种在线应用、数据仓库、e-commerce 解决方案等场景。它与许多编程语言和框架(如 PHP、Java、Python、Ruby)紧密集成,支持跨平台运行(Linux、Windows、MacOS)。

1.1.2 重点案例:使用 Python 实现 MySQL 数据的 CRUD 操作

  • 假设我们正在开发一个博客系统,需要存储用户信息和博文内容。我们会使用 Python 的 mysql-connector-python 包来执行基本的 CRUD(创建、读取、更新、删除)操作。

    步骤

    1. 安装 mysql-connector-python 包。

      pip install mysql-connector-python
      
    2. 连接到 MySQL 数据库。

      import mysql.connectorconn = mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword",database="blogdb"
      )
      cursor = conn.cursor()
      
    3. 创建表格。

      cursor.execute("CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), email VARCHAR(255))")
      cursor.execute("CREATE TABLE posts (id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255), content TEXT, user_id INT, FOREIGN KEY(user_id) REFERENCES users(id))")
      
    4. 插入数据。

      query = "INSERT INTO users (name, email) VALUES (%s, %s)"
      values = ("John Doe", "john@example.com")
      cursor.execute(query, values)
      conn.commit()
      
    5. 查询数据。

      cursor.execute("SELECT * FROM users")
      for (name, email) in cursor:print(f"Name: {name}, Email: {email}")
      

1.1.3 拓展案例 1:使用 Python 实现 MySQL 数据备份**

对于生产环境中的数据库,定期备份是一项重要的维护任务。我们可以使用 Python 脚本来自动化这个过程。

步骤

  1. 使用 subprocess 模块调用 mysqldump 工具。

    import subprocesssubprocess.run(["mysqldump", "-u", "username", "-p", "database_name", ">","backup.sql"])
    
  2. 可以将此脚本设置为定期执行,实现自动化备份。

1.1.4 拓展案例 2:使用 Python 分析 MySQL 数据

在这个案例中,我们将使用 Python 的 pandas 库从 MySQL 数据库中读取数据,并进行简单的数据分析。

步骤

  1. 安装 pandassqlalchemy

    pip install pandas sqlalchemy
    
  2. 读取数据并分析。

    from sqlalchemy import create_engine
    import pandas as pdengine = create_engine('mysql+mysqlconnector://username:password@localhost/blogdb')
    df = pd.read_sql_table('posts', con=engine)
    print(df.describe())
    

通过以上案例,我们不仅了解了 MySQL 的基础知识,还通过实际应用案例深入探讨了如何使用 Python 与 MySQL 交互,涵盖了数据操作、备份和分析等常用场景,为读者提供了实用性强、贴近实际生产的学习资源。

在这里插入图片描述


1.2 安装和配置 MySQL

安装和配置 MySQL 是每个数据库管理员和开发者的基本技能。在 Mac OS 上,这个过程可以通过多种方式完成,包括使用 Homebrew、下载官方的 MySQL 安装包,或者通过 Docker。这一节将引导你通过这些步骤,确保你的 MySQL 服务器运行顺畅并准备好执行任务。

1.2.1 基础知识

  • 使用 Homebrew 安装:Homebrew 是 Mac OS 上最受欢迎的包管理器之一,它可以让安装 MySQL 变得非常简单。
  • 配置文件:MySQL 的配置文件通常位于 /etc/my.cnf 或者 /usr/local/etc/my.cnf,通过编辑这个文件,你可以调整 MySQL 服务器的设置,例如内存使用、端口号和默认的存储引擎。
  • 启动和停止 MySQL 服务:安装完成后,你需要知道如何启动和停止 MySQL 服务,以及如何设置为开机自启动。
  • 安全配置:运行 mysql_secure_installation 脚本来增强 MySQL 安装的安全性是一个好习惯,这包括设置 root 密码、删除匿名用户、禁用远程 root 登录等。

1.2.2 重点案例:使用 Homebrew 安装 MySQL 并进行初步配置

假设你是一个开发者,正在 Mac OS 上配置本地开发环境。使用 Homebrew 安装 MySQL 是一个快速开始的好方法。

步骤

  1. 打开终端,安装 Homebrew(如果尚未安装)。

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
    
  2. 使用 Homebrew 安装 MySQL。

    brew install mysql
    
  3. 启动 MySQL 服务。

    brew services start mysql
    
  4. 运行安全安装脚本。

    mysql_secure_installation
    
  5. 连接到 MySQL。

    mysql -u root -p
    

1.2.3 拓展案例 1:配置 MySQL 以优化 Mac OS 上的性能

开发者和数据库管理员经常需要调整 MySQL 配置,以优化本地环境中的性能。

步骤

  1. 找到 MySQL 的配置文件 my.cnf。如果不存在,请创建一个。

    nano /usr/local/etc/my.cnf
    
  2. 添加或修改以下配置,以优化性能(根据你的机器配置调整数值)。

    [mysqld]
    max_connections = 50
    innodb_flush_log_at_trx_commit = 1
    innodb_log_file_size = 128M
    query_cache_size = 0
    query_cache_type = 0
    
  3. 重启 MySQL 服务以应用更改。

    brew services restart mysql
    

1.2.4 拓展案例 2:使用 Python 连接到配置好的 MySQL 实例并创建一个数据库

一旦 MySQL 安装并配置好,下一步就是开始使用它了。这个案例将展示如何使用 Python 连接到 MySQL 并创建一个新的数据库。

步骤

  1. 确保安装了 mysql-connector-python

    pip install mysql-connector-python
    
  2. 使用 Python 脚本连接到 MySQL 并创建数据库。

    import mysql.connectorconn = mysql.connector.connect(host="localhost",user="root",password="yourpassword"
    )cursor = conn.cursor()
    cursor.execute("CREATE DATABASE mydatabase")
    

通过这些案例,你不仅学会了如何在 Mac OS 上安装和配置 MySQL,还学会了如何通过 Python 脚本与 MySQL 互动,从而为各种开发和生产任务打下坚实的基础。

在这里插入图片描述


1.3 基础命令和操作

掌握 MySQL 的基础命令和操作是进行有效数据库管理和开发的关键。这一节将涵盖如何使用这些基础命令来创建和管理数据库、表、以及执行数据的 CRUD(创建、读取、更新、删除)操作。

1.3.1 基础知识

  • 创建数据库CREATE DATABASE database_name;
  • 选择数据库USE database_name;
  • 创建表CREATE TABLE table_name (column1 datatype, column2 datatype, ...);
  • 插入数据INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
  • 查询数据SELECT * FROM table_name; 或更具体的查询 SELECT column1, column2 FROM table_name WHERE condition;
  • 更新数据UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;
  • 删除数据DELETE FROM table_name WHERE condition;
  • 删除表DROP TABLE table_name;
  • 删除数据库DROP DATABASE database_name;

1.3.2 重点案例:使用 Python 创建数据库和表,并插入数据

假设你需要为一个小型电商平台创建一个数据库,其中包含用户信息和订单信息。

步骤

  1. 连接到 MySQL。

    import mysql.connectorconn = mysql.connector.connect(host="localhost",user="root",password="yourpassword"
    )
    cursor = conn.cursor()
    
  2. 创建数据库 ecommerce

    cursor.execute("CREATE DATABASE ecommerce")
    cursor.execute("USE ecommerce")
    
  3. 创建 usersorders 表。

    cursor.execute("""
    CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255),email VARCHAR(255) UNIQUE
    )
    """)cursor.execute("""
    CREATE TABLE orders (id INT AUTO_INCREMENT PRIMARY KEY,product_name VARCHAR(255),amount INT,user_id INT,FOREIGN KEY(user_id) REFERENCES users(id)
    )
    """)
    
  4. 插入数据到 users 表。

    query = "INSERT INTO users (name, email) VALUES (%s, %s)"
    values = [("Alice", "alice@example.com"), ("Bob", "bob@example.com")]
    cursor.executemany(query, values)
    conn.commit()
    

1.3.3 拓展案例 1:使用 Python 执行数据查询操作

在电商平台数据库中查询特定用户的所有订单。

步骤

  1. 查询 Alice 的用户 ID。

    cursor.execute("SELECT id FROM users WHERE name = 'Alice'")
    user_id = cursor.fetchone()[0]
    
  2. 查询基于用户 ID 的订单。

    cursor.execute(f"SELECT * FROM orders WHERE user_id = {user_id}")
    for (id, product_name, amount, user_id) in cursor:print(f"Order ID: {id}, Product: {product_name}, Amount: {amount}")
    

1.3.4 拓展案例 2:更新和删除数据

修改特定订单的数量,然后删除一个用户。

步骤

  1. 更新订单数量。

    cursor.execute("UPDATE orders SET amount = 3 WHERE id = 1")
    conn.commit()
    
  2. 删除用户 Bob

    cursor.execute("DELETE FROM users WHERE name = 'Bob'")
    conn.commit()
    

通过以上案例,你不仅学会了如何使用 Python 连接 MySQL 执行基本的数据库操作,还掌握了如何在实际项目中应用这些操作来管理数据。这些技能在数据库管理和数据操作中非常重要,可以为开发各种应用程序和服务提供坚实的基础。

相关文章:

《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)

文章目录 1.1 MySQL 概览:版本、特性和生态系统1.1.1 基础知识1.1.2 重点案例:使用 Python 实现 MySQL 数据的 CRUD 操作1.1.3 拓展案例 1:使用 Python 实现 MySQL 数据备份**1.1.4 拓展案例 2:使用 Python 分析 MySQL 数据 1.2 安…...

Linux 软件管理(YUM RPM)

1 YUM yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次…...

【Makefile语法 05】动静态库编译链接

目录 一、多文件项目源代码 二、静态库编译链接 三、动态库编译链接 一、多文件项目源代码 // include/add.hpp#pragma once int add(int a, int b); // include/sub.hpp#pragma once int sub(int a, int b); // src/add.cpp#include "add.hpp"int add(int a, …...

JS - 处理元素滚动

业务功能中时常有元素滚动的功能,现在就总结一下一些常用的事件。 一、定位滚动元素 做一切滚动操作之前都应该先定位到滚动元素,再做其他操作,如滚动顶部,获取滚动距离、禁止滚动等。 把以下代码复制粘贴到浏览器 Console 面板…...

JavaScript滚动事件

🧑‍🎓 个人主页:《爱蹦跶的大A阿》 🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 滚动是网页交互不可或缺的一部分。监听页面和元素的滚动事件,可以帮助…...

4.0 Zookeeper Java 客户端搭建

本教程使用的 IDE 为 IntelliJ IDEA,创建一个 maven 工程,命名为 zookeeper-demo,并且引入如下依赖,可以自行在maven中央仓库选择合适的版本,介绍原生 API 和 Curator 两种方式。 IntelliJ IDEA 相关介绍:…...

C#既然数组长度不可改变,那么如何动态调整集合类型数组大小,以便添加或删除元素?

目录 1.使用动态数组(ArrayList): 2.使用 jagged array(不规则数组): 3.使用 List : 4.使用数组复制: 在C#中,数组的长度是固定的,一旦声明和初始化&…...

3.1 Verilog 连续赋值

关键词:assign, 全加器 连续赋值语句是 Verilog 数据流建模的基本语句,用于对 wire 型变量进行赋值。: 格式如下 assign LHS_target RHS_expression ; LHS(left hand side) 指赋值操作…...

【http】2、http request header Origin 属性、跨域 CORS、同源、nginx 反向代理、预检请求

文章目录 一、Origin 含义二、跨源资源共享:**Cross-Origin Resource Sharing** CORS2.1 跨域的定义2.2 功能概述2.3 场景示例2.3.1 简单请求2.3.2 Preflighted requests:预检请求 2.4 header2.4.1 http request header2.4.1.1 Origin2.4.1.2 Access-Con…...

LangChain pdf的读取以及向量数据库的使用

以下使用了3399.pdf, Rockchip RK3399 TRM Part1 import ChatGLM from langchain.chains import LLMChain from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate from langchain.chains import Simp…...

VUE学习——事件修饰符

阻止默认事件 <template><a click"onClickHandle" href"https://www.baidu.com">baidu</a><a click.prevent"onClickHandle" href"https://www.baidu.com">baidu</a> </template> <script>…...

开放平台技术架构设计与实现的实战总结

开放平台是企业向外部开发者提供API接口和服务的平台&#xff0c;促进生态系统的建设和业务拓展。本文将介绍开放平台技术架构的设计原则和实现方法&#xff0c;帮助读者了解如何构建一个稳健、安全且易于扩展的开放平台。 1. 什么是开放平台&#xff1f; - 解释了开放平台…...

飞桨自然语言处理框架 paddlenlp的 trainer

飞桨&#xff08;PaddlePaddle&#xff09;的NLP库PaddleNLP中的Trainer类是一个用于训练和评估模型的简单但功能完整的循环。它被优化用于与PaddleNLP一起使用。Trainer类简化了训练过程&#xff0c;提供了自动的批处理、模型保存、日志记录等特性。 以下是Trainer类的主要参数…...

SQL世界之命令语句Ⅲ

目录 一、SQL JOIN 1.JOIN 和 Key 2.使用 JOIN 3.不同的 SQL JOIN 二、SQL INNER JOIN 关键字 1.SQL INNER JOIN 关键字 2.INNER JOIN 关键字语法 3.内连接&#xff08;INNER JOIN&#xff09;实例 三、SQL LEFT JOIN 关键字 1.SQL LEFT JOIN 关键字 2.LEFT JOIN 关…...

Snoop Version 2 Packet Capture File Format

RFC1761 - Snoop Version 2 Packet Capture File Format, FEBRUARY 1995 本备忘录的状态 本备忘录为互联网社区提供帮助信息。 本备忘录不作为任何类型的互联网标准。 本备忘录的分发不受限制。 Status of this Memo This memo provides information for the Internet communit…...

扩展说明: 指令微调 Llama 2

这篇博客是一篇来自 Meta AI&#xff0c;关于指令微调 Llama 2 的扩展说明。旨在聚焦构建指令数据集&#xff0c;有了它&#xff0c;我们则可以使用自己的指令来微调 Llama 2 基础模型。 目标是构建一个能够基于输入内容来生成指令的模型。这么做背后的逻辑是&#xff0c;模型如…...

VUE 全局设置防重复点击

请求后端防止重复点击&#xff0c;用户点击加入遮罩层&#xff0c;请求完毕关闭遮罩层 我们利用请求拦截器&#xff0c;在用户点击的时候&#xff0c;弹出遮罩层 本文采用i18n国际化 element plus UI&#xff0c;提取你想要的&#xff0c;这里不做简化 完整代码如下&#xf…...

备战蓝桥杯---动态规划(基础1)

先看几道比较简单的题&#xff1a; 直接f[i][j]f[i-1][j]f[i][j-1]即可&#xff08;注意有马的地方赋值为0&#xff09; 下面是递推循环方式实现的AC代码&#xff1a; #include<bits/stdc.h> using namespace std; #define int long long int a[30][30]; int n,m,x,y; …...

CVE-2018-19518 漏洞复现

CVE-2018-19518 漏洞介绍 IMAP协议&#xff08;因特网消息访问协议&#xff09;它的主要作用是邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息&#xff0c;下载邮件等。它运行在TCP/IP协议之上&#xff0c;使用的端口是143。在php中调用的是imap_open函数。 PHP 的…...

Python爬虫实战:抓取猫眼电影排行榜top100#4

爬虫专栏系列&#xff1a;http://t.csdnimg.cn/Oiun0 抓取猫眼电影排行 本节中&#xff0c;我们利用 requests 库和正则表达式来抓取猫眼电影 TOP100 的相关内容。requests 比 urllib 使用更加方便&#xff0c;而且目前我们还没有系统学习 HTML 解析库&#xff0c;所以这里就…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...