当前位置: 首页 > 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;所以这里就…...

弦音墨影提示词工程实战:创作不同风格音乐主题文案的案例展示

弦音墨影提示词工程实战&#xff1a;创作不同风格音乐主题文案的案例展示 你有没有想过&#xff0c;让AI帮你写一段关于音乐的文案&#xff0c;它能理解“古典”和“摇滚”的区别吗&#xff1f;它能写出“国风”的韵味&#xff0c;还是“电子”的酷感&#xff1f;今天&#xf…...

【MCP 2026农业物联网对接终极指南】:3大协议兼容性陷阱、5类传感器接入失败根因与72小时上线实操手册

第一章&#xff1a;MCP 2026农业物联网对接全景概览MCP 2026 是面向现代农业场景设计的轻量级设备协同协议&#xff0c;专为低功耗传感器、边缘网关与云平台间高可靠数据交换而优化。其核心目标是在异构农业设备&#xff08;如土壤墒情仪、气象站、智能灌溉控制器&#xff09;与…...

基于雪女-斗罗大陆-造相Z-Turbo的Java面试题智能生成与解析实战

基于雪女-斗罗大陆-造相Z-Turbo的Java面试题智能生成与解析实战 最近跟几个做技术面试的朋友聊天&#xff0c;大家普遍有个头疼的问题&#xff1a;准备面试题太费劲了。面试官得绞尽脑汁想题目&#xff0c;既要考察基础&#xff0c;又得贴合岗位实际&#xff1b;求职者呢&…...

DeepSeek-R1-Distill-Qwen-1.5B部署监控:日志跟踪与异常预警配置

DeepSeek-R1-Distill-Qwen-1.5B部署监控&#xff1a;日志跟踪与异常预警配置 注意&#xff1a;本文仅讨论技术实现方案&#xff0c;所有内容均基于公开技术文档和最佳实践&#xff0c;不涉及任何敏感信息。 1. 模型部署与监控的重要性 在实际的AI模型服务部署中&#xff0c;仅…...

AI原生企业的本质:从工具附着到系统基因的跃迁

过去十年&#xff0c;人工智能在工业领域的应用常被误读为“加个模块”——在报表里嵌个预测模型&#xff0c;在产线上装个视觉检测&#xff0c;便称其为“智能化”。然而&#xff0c;这种表层的叠加&#xff0c;不过是将AI当作一种可选的效率工具&#xff0c;而非企业运转的底…...

【实战解析】基于BP神经网络的车牌识别系统:从MATLAB实现到优化策略

1. BP神经网络在车牌识别中的核心价值 车牌识别作为智能交通系统的关键技术&#xff0c;其核心难点在于如何从复杂背景中准确提取并识别字符。传统图像处理方法在面对光照变化、角度倾斜、污损遮挡等情况时表现往往不稳定。而BP神经网络凭借其强大的非线性映射能力和自适应学习…...

零基础掌握ComfyUI-AnimateDiff-Evolved:高效AI动画创作指南

零基础掌握ComfyUI-AnimateDiff-Evolved&#xff1a;高效AI动画创作指南 【免费下载链接】ComfyUI-AnimateDiff-Evolved Improved AnimateDiff for ComfyUI 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-AnimateDiff-Evolved ComfyUI-AnimateDiff-Evolved是一款…...

抖音直播回放高效管理完整解决方案:3大技术突破+5个实战技巧

抖音直播回放高效管理完整解决方案&#xff1a;3大技术突破5个实战技巧 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 需求洞察&#xff1a;为什么传统工具无法满足直播内容管理需求&#xff1f; 在信息爆…...

SenseVoice-Small语音识别模型ONNX量化部署教程:3步快速上手

SenseVoice-Small语音识别模型ONNX量化部署教程&#xff1a;3步快速上手 语音识别技术正在变得越来越普及&#xff0c;从手机助手到会议纪要&#xff0c;再到智能家居&#xff0c;到处都能看到它的身影。但对于开发者来说&#xff0c;想把一个效果不错的语音识别模型集成到自己…...

Openclaw一周烧掉我14亿Token后,我总结了这10条血泪教训

一开始我以为&#xff0c;装个OpenClaw&#xff0c;丢给它几个任务&#xff0c;然后让它自己跑就完事了。演示视频里就是这么讲的。但前两周根本不是这么回事。 前两周简直就是"带娃"——盯着它烧token&#xff0c;看着它在同一个答案上循环八次&#xff0c;看着Code…...